26 lines
1.5 KiB
Markdown
26 lines
1.5 KiB
Markdown
# MINRES Firmware Repository
|
|
## Structure
|
|
This repository comes with several executables ready to be built, such as `hello-world` or `coremark` and `dhrystone` in the `benchmark` directory.
|
|
Creating the executables in the easiest way possible is done by calling `make`in the corresponding directory.
|
|
|
|
## Prerequisite
|
|
This repository requires `riscv64-unknown-elf-gcc` to be located in `$PATH`.
|
|
|
|
## How to Use
|
|
When compiling executables, the target platform needs to be specified using the 'BOARD' variable. When compiling for the TGC5C for example, use `make BOARD=tgc_vp`, when compiling for RTL `make BOARD=rtl`. The default value for the Board variable is 'iss'.
|
|
The arch can be set with the 'ISA' variable, the default value is 'imc'.
|
|
|
|
When compiling for the TGC5A VP for example, the call to create the correct binary is the following:
|
|
```
|
|
make BOARD=tgc_vp ISA=e
|
|
```
|
|
## Useful information
|
|
Using `bear -- <build-command>` will cause a compile_commands.json to be emitted. This allows using completion tools like clangd.
|
|
|
|
## Current Limitations
|
|
Currently, this repository only supports creation of 32-bit executables (Even when setting the `RISCV_ARCH` and `RISCV_ABI` manually).
|
|
|
|
Compiling for the 'e' extension / ISA together with any other extension (`ISA=emc` for example), requires setting the `RISCV_ABI=ilp32e` explicitly.
|
|
|
|
When switching ABI ensure that object files in the corresponding 'env' dir in the 'bare-metal-bsp' submodule are removed, so they get created with the appropriate flags (namely the 'init.o' file).
|