| .. | ||
| blake2s | ||
| firmware.lds | ||
| lib.c | ||
| lib.h | ||
| main.c | ||
| Makefile | ||
| proto.c | ||
| proto.h | ||
| README.md | ||
| start.S | ||
| types.h | ||
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 --disable-werror
$ make -j $(nproc)
(Built with warnings-as-errors disabled, see this issue.)
Run it like this:
$ /path/to/qemu/build/qemu-system-riscv32 -nographic -M mta1_mkdf,fifo=chrid -bios firmware.elf \
-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!