tillitis-key/doc/system_description/firmware.md

57 lines
1.5 KiB
Markdown
Raw Normal View History

2022-09-19 06:51:11 +00:00
# Tillitis Key firmware
## Build the firmware
You need Clang with 32 bit RISC-V support. You can check this with:
```
2022-09-30 09:34:09 +00:00
$ llc --version | grep riscv32
riscv32 - 32-bit RISC-V
2022-09-19 06:51:11 +00:00
```
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
2022-10-20 12:50:21 +00:00
Checkout the `tk1` branch of [our version of the
2022-09-19 06:51:11 +00:00
qemu](https://github.com/tillitis/qemu) and build:
```
2022-10-20 12:50:21 +00:00
$ git clone -b tk1 https://github.com/tillitis/qemu
2022-09-30 09:34:09 +00:00
$ mkdir qemu/build
$ cd qemu/build
$ ../configure --target-list=riscv32-softmmu --disable-werror
$ make -j $(nproc)
2022-09-19 06:51:11 +00:00
```
2022-09-30 09:34:09 +00:00
(Built with warnings-as-errors disabled, see [this
issue](https://github.com/tillitis/qemu/issues/3).)
2022-09-19 06:51:11 +00:00
Run it like this:
```
2022-10-20 12:50:21 +00:00
$ /path/to/qemu/build/qemu-system-riscv32 -nographic -M tk1,fifo=chrid -bios firmware.elf \
2022-09-30 09:34:09 +00:00
-chardev pty,id=chrid
2022-09-19 06:51:11 +00:00
```
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!