This commit does parts of the changes needed to increase the size
of the emulated RAM for TKey in QEMU. This is to be able to build
TKey apps without optimization and do debugging with gdb through
QEMU.
- Point out where to find tools.
- Add some description that we assume a Linux dist.
- Move the make targets around: make flash builds and flashes the
entire thing so someone who just want to exactly that can use it
right away.
- Explain what kind of hardware the USB controller is.
- Add a description on how to be able to use chprog without being
root when running chprog.
Changes make targets:
- prog_flash in hw/application/Makefile which flashes only the
bitstream is renamed to prog_flash_bs.
- prog_flash in hw/application/Makefile is modified to flash the
bitstream, the testloadapp.bin in app slot 0, and the partition table.
- flash in contrib/Makefile is modified to use prog_flash from
hw/application/Makefile
- Point out licensing terms in docs.
- Add missing SPDX tags
- Update the SPDX checker to check all the files we want to check.
- Include spdx-ensure in CI.
Add a tools/README.md.
Remove:
- create_flash_image.py: role now overtaken by tkeyimage which does
more.
- reset-tk1: Leftover from when production_test was removed.
Rename:
- makehex.py: Moved up one level.
Usage:
./partition_table -o flash.bin -f -app0 path/to/app
Will produce a flash.bin that can be used for qemu.
- Adjust the size of the partition table.
- Refactor and rename genPartitionFile().
Allows an app to determine which type of device it is running on.
- Reserve vendor ID 0x7357 for people using Unlocked.
- Use Castor product ID.
- Serial number is just nonsense, as before.
When starting, reset the USB controller to only enable the USB CDC
endpoint and the internal command channel. If the app resets firmware,
but had differend endpoints enabled, we want to go back to a known
state.
The qemu_firmware is too large for the real hardware's 8k of ROM. The
emulator, however, has lots of ROM. Use a different linker script for
to reflect this.
Add a new syscall to enable an app to get the data left for it by the
previous app in chain.
- Change testloadapp to leave some data for the next app to read.
- Call system call with:
uint8_t next_app_data[RESET_DATA_SIZE];
syscall(TK1_SYSCALL_GET_APP_DATA, (uint32_t)next_app_data, 0, 0);
To retain the default behaviour from Bellatrix, we introduce a simple
default app. If used on flash app slot 0 we get the same behaviour as
in Bellatrix, that is, waiting for an app from the client.