- Checks the stop bit, if it is not valid the data is discarded and
enters a error state. Only checks first stop bit.
- Adds an error state to the RX FSM. The core starts in this state to
not assume a valid idle rx line on start up. Prevents accepting
frames on a constant low rx line and filling the fifo.
- bugfix: always reset bitrate_ctr when leaving state ERX_BITS and
remove unused bitrate_ctr counter in ERX_STOP
- Create a flash image in flash_image.bin, useful for both a real TKey
and QEMU.
- Use flash_image.bin directly in prog_flash for a real TKey, which
also flashes the bitstream.
- Remove building of tools/default_partition.bin.
- Update documentation about the tool use.
- We keep the load_preloaded_app.sh for development purposes,
but it's no longer used in the build.
Introduce the Makefile variable DEFAULT_APP which should be the path
to the device app binary to include in the obliagory slot 0.
Build automatically: the default app, the new digest file
mgmt_app_digest.h for the firmware which contains the digest of
DEFAULT_APP, the default partition table, and all the tools necessary
to generate this.
This app takes data coming in on any of the normal USB endpoints
like CDC and FIDO (or CCID) and outputs the data on the DEBUG
endpoint.
Using the scripts (tkey_to_udp_linux.py, tkey_to_udp_win.py) in
QEMU (tk1 branch) under tools/tk1, the data from the DEBUG
endpoint can be read and sent over the network to the script
udp_to_qemu_linux.py that feeds it to QEMU.
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.