Skip to content

RTEMS 6 on a NOEL-V in the Arty A7

The rtems6-noel32im-artya7 platform targets the NOEL-V, a RISC-V processor of Frontgrade Gaisler, running RTEMS 6 on the Digilent Arty A7 development board. The NOEL-V is a design of the FPGA of the board, loaded as a bitstream, and the platform uses it with the RV32IM instruction set, the same as the rtems6-rv32im-spike platform. It is built with riscv-rtems6-gcc, of the RTEMS Source Builder, and the noel32im board support package of RTEMS 6.

The RV32IM instruction set has neither floating-point instructions nor the atomic extension, so the operations that read and write a variable in one step are calls to libatomic, which RTEMS implements by disabling interrupts.

The board

The frequency of the clock and the peripherals change from one design of the NOEL-V to another, so RTEMS reads them from a device tree that corresponds to the bitstream loaded into the FPGA, and the project keeps the bitstream and its device tree together. The board is debugged with GRMON, which runs on the host, as with the Nexys A7, and serves GDB at port 2222.

When the program calls reboot, the platform disables interrupts and halts the processor, which waits until the board is reset.

Linker script

The app section of the manifest may name a linker script of the project with linker-script, which then replaces the one of the board support package. The script may include linkcmds.base, the base script of RTEMS, since the folder of the board support package is on the search path of the linker.

Tests

The runner of termina test does not run tests on this platform yet, since each run requires GRMON to load the device tree before the program.