NameDateSize

..16-Jul-202015

CMakeLists.txtH A D13-Nov-2019972

include/H25-Jul-20193

README.mdH A D31-Jul-20202.1 KiB

src/H22-Nov-20195

TimeServer.camkesH A D25-Jul-2019908

README.md

1<!--
2     Copyright 2020, Data61
3     Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4     ABN 41 687 119 230.
5
6     This software may be distributed and modified according to the terms of
7     the BSD 2-Clause license. Note that NO WARRANTY is provided.
8     See "LICENSE_BSD2.txt" for details.
9
10     @TAG(DATA61_BSD)
11-->
12
13# TimeServer
14
15This is a CAmkES component that is intended to abstract over a platform's timer
16and multiplex client access to it.
17
18## Dependencies
19
20There are currently no dependencies for this component.
21
22## Usage
23
24For clients to use the functionality exposed by the component, the clients will
25need to be connected to this CAmkES interface using the `seL4TimeServer`
26connector.
27
28```c
29provides Timer the_timer;
30```
31
32The component also exposes a CAmkES emits interface which can be connected to
33clients with the `seL4GlobalAsynchCallback` connector to allow a callback to be
34automatically called on the client's side when the component signals a timeout
35has occurred.
36
37```c
38emits Notification timer_notification;
39```
40
41The `timers_per_client` attribute can also be set to a maximum limit of active
42timers for all clients.
43
44## Supported platforms
45
46Currently, this component supports the following platforms:
47  - i.MX6
48  - i.MX8
49  - Odroid C2
50  - Exynos5-based platforms (Odroid XU, Odroid XU4)
51  - Beaglebone Black (possibly Beaglebone Blue as well)
52  - pc99
53  - QEMU ARM Virt configuration
54  - TK1
55  - TX1
56  - TX2
57  - Zynq7000
58  - ZynqMP
59
60Additional platforms require a corresponding timer driver to be
61implemented in the libplatsupport library of the
62[`util_libs`](https://github.com/seL4/util_libs) repository, and the following
63CPP defintions to be created in the `include` folder of this component:
64  - `HARDWARE_TIMER_COMPONENT`
65  - `HARDWARE_TIMER_INTERFACES`
66  - `HARDWARE_TIMER_ATTRIBUTES`
67  - `HARDWARE_TIMER_COMPOSITION`
68  - `HARDWARE_TIMER_CONFIG`
69
70## Limitations
71
72Right now, some of the timer drivers assume that the clocks for the timers are
73initialised (at least for ARM and possibly RISC V platforms). This is mainly a
74side-effect of boards being booted by U-Boot which handles the clock
75initialisation.
76