mirror of
https://github.com/tillitis/tillitis-key1.git
synced 2025-05-02 14:16:28 -04:00
doc: Update documentation about syscalls
- Revise firmware implementation notes - Document how to do fw syscalls - Document how to trigger a syscall function in the firmware, how to pass arguments, what the caller is responsible for and what is returned. - Describe hardware syscall implementation - how the syscall interrupts are triggered, - the hardware privilege escalation, - the UDS protection. Co-authored-by: Daniel Jobson <jobson@tillitis.se> Co-authored-by: Michael Cardell Widerkrantz <mc@tillitis.se>
This commit is contained in:
parent
7554787678
commit
c52442b54c
4 changed files with 161 additions and 120 deletions
|
@ -23,17 +23,6 @@ and version of the device. They can be read by FW as well as
|
|||
applications.
|
||||
|
||||
|
||||
### Control of execution mode
|
||||
|
||||
```
|
||||
ADDR_APP_MODE_CTRL: 0x08
|
||||
```
|
||||
|
||||
This register controls if the device is executing in FW mode or in App
|
||||
mode. The register can be written once between power cycles, and only
|
||||
by FW. If set the device is in app mode.
|
||||
|
||||
|
||||
### Control of RGB LED
|
||||
|
||||
```
|
||||
|
@ -75,19 +64,7 @@ ADDR_APP_SIZE: 0x0d
|
|||
These registers provide read only information to the loaded app to
|
||||
itself - where it was loaded and its size. The values are written by
|
||||
FW as part of the loading of the app. The registers can't be written
|
||||
when the `ADDR_APP_MODE_CTRL` has been set.
|
||||
|
||||
|
||||
### Access to Blake2s
|
||||
|
||||
```
|
||||
ADDR_BLAKE2S: 0x10
|
||||
```
|
||||
|
||||
This register provides the 32-bit function pointer address to the
|
||||
Blake2s hash function in the FW. It is written by FW during boot. The
|
||||
register can't be written to when the `ADDR_APP_MODE_CTRL` has been
|
||||
set.
|
||||
in application mode.
|
||||
|
||||
|
||||
### Access to CDI
|
||||
|
@ -99,10 +76,10 @@ ADDR_CDI_LAST: 0x27
|
|||
|
||||
These registers provide access to the 256-bit compound device secret
|
||||
calculated by the FW as part of loading an application. The registers
|
||||
are written by the FW. The register can't be written to when the
|
||||
`ADDR_APP_MODE_CTRL` has been set. The CDI is readable by apps, which
|
||||
can then use it as a base secret for any other secrets required to
|
||||
carry out their intended use case.
|
||||
are written by the FW. The register can't be written in application
|
||||
mode. The CDI is readable by apps, which can then use it as a base
|
||||
secret for any other secrets required to carry out their intended use
|
||||
case.
|
||||
|
||||
|
||||
### Access to UDI
|
||||
|
|
|
@ -6,8 +6,7 @@ Unique Device Secret core
|
|||
|
||||
This core store and protect the Unique Device Secret (UDS) asset. The
|
||||
UDS can be accessed as eight separate 32-bit words. The words can only
|
||||
be accessed as long as the app_mode input is low, implying that the
|
||||
CPU is executing the FW.
|
||||
be accessed as long as the `en` input is high.
|
||||
|
||||
The UDS words can be accessed in any order, but a given word can only
|
||||
be accessed once between reset cycles. This read once functionality is
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue