NameDateSize

..16-Jul-202015

camkes-include/H05-May-20205

ClockServer.camkesH A D05-May-20201 KiB

CMakeLists.txtH A D05-May-20201.2 KiB

include/H12-Dec-20193

libClockServer-client/H27-Apr-20205

README.mdH A D31-Jul-20202.2 KiB

src/H31-Jul-20204

templates/H31-Jul-20204

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# ClockServer
14
15This is a CAmkES component that is intended to abstract over a platform's clock
16system and multiplex client access to it.
17
18## Dependencies
19
20This component needs to be used with the `single-threaded` module that performs
21the initialisation process, and client request routing the component relies on.
22
23## Usage
24
25For clients to use the functionality exposed by the component, the clients will
26have to connect to the CAmkES interfaces that the following CPP defintion
27expose.
28
29```c
30ClockServer_server_interfaces(the_clock)
31```
32
33The definition exposes a `Clock` RPC interface that is expected to be connected
34via the `seL4RPCNoThreads` connector. However, there is a helper macro which
35simplifies this process and also registers a clock interface on the client's
36interface registration service (`ps_interface_ops_t`).
37
38```c
39ClockServer_client_connections(client_name, client, server_name, server)
40```
41
42## Supported platforms
43
44Currently, this component supports the following platforms:
45  - Exynos5-based platforms (Odroid XU, Odroid XU4)
46  - i.MX6
47  - TX2
48
49Additional platforms require a corresponding clock system driver to be
50implemented in the libplatsupport library of the
51[`util_libs`](https://github.com/seL4/util_libs) repository, and the following
52CPP defintions to be created in the `include` folder of this component:
53  - `HARDWARE_CLOCK_COMPONENT`
54  - `HARDWARE_CLOCK_INTERFACES`
55  - `HARDWARE_CLOCK_ATTRIBUTES`
56  - `HARDWARE_CLOCK_COMPOSITION`
57  - `HARDWARE_CLOCK_CONFIG`
58  - and possibly, `HARDWARE_CLOCK_EXTRA_INTERFACES`, and
59    `HARDWARE_CLOCK_EXTRA_IMPORTS`
60
61## Limitations
62
63There is a basic form of access control for the clocks but not for the clock
64gates. This means that clients can interfere with each other by disabling specific
65clock gates which stop clock signals from a particular clock. There are plans
66to implement a form of access control for the clock gates.
67
68