tillitis-key/hw/application_fpga/fw/mta1_mkdf/README.md

1.4 KiB

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!