tillitis-key/hw/application_fpga/fw/mta1_mkdf
Daniel Lublin 99efb78ed8
Receive USS and hash into CDI
- We're OK with USS not being loaded, and use an all-zero USS if so.
- We require USS to be loaded before app_size (if at all).
2022-09-29 14:58:23 +02:00
..
blake2s Make initial public release 2022-09-19 08:51:11 +02:00
firmware.lds Make initial public release 2022-09-19 08:51:11 +02:00
lib.c Make initial public release 2022-09-19 08:51:11 +02:00
lib.h Make initial public release 2022-09-19 08:51:11 +02:00
main.c Receive USS and hash into CDI 2022-09-29 14:58:23 +02:00
Makefile Make fmt output changes that will be made 2022-09-21 10:13:39 +02:00
proto.c Receive USS and hash into CDI 2022-09-29 14:58:23 +02:00
proto.h Receive USS and hash into CDI 2022-09-29 14:58:23 +02:00
README.md Make initial public release 2022-09-19 08:51:11 +02:00
start.S Make initial public release 2022-09-19 08:51:11 +02:00
types.h Make initial public release 2022-09-19 08:51:11 +02:00

Tillitis Key firmware

Build the firmware

You need Clang with 32 bit RISC-V support. You can check this with:

  $ llc --version|grep riscv32
      riscv32    - 32-bit RISC-V

or just try building.

Build the FPGA bitstream with the firmware using make in the hw/application_fpga directory.

If your available objcopy and size commands is anything other than the default llvm-objcopy-14 and llvm-size-14 define OBJCOPY and SIZE to whatever they're called on your system.

Using QEMU

Checkout the mta1 branch of our version of the qemu and build:

  $ git clone -b mta1 https://github.com/tillitis/qemu
  $ mkdir qemu/build
  $ cd qemu/build
  $ ../configure --target-list=riscv32-softmmu
  $ make -j $(nproc)

Run it like this:

  $ /path/to/qemu/build/qemu-system-riscv32 -nographic -M mta1_mkdf,fifo=chrid -bios firmware \
-chardev pty,id=chrid

This attaches the FIFO to a tty, something like /dev/pts/16 which you can use with host software to talk to the firmware.

To quit QEMU you can use: Ctrl-a x (see Ctrl-a ? for other commands).

Debugging? Use the HTIF console by removing -DNOCONSOLE from the CFLAGS and using the helper functions in lib.c for printf-like debugging.

You can also use the qemu monitor for debugging, e.g. info registers, or run qemu with -d in_asm or -d trace:riscv_trap.

Happy hacking!