-
-
Notifications
You must be signed in to change notification settings - Fork 779
Closed
Labels
Description
Update June 2020
Tock includes preliminary RISC-V support, and several boards that are RISC-V based. There are a few lingering TODOs to get reasonably comparable support with Cortex-M.
Tracking
- Add support for risc-v (at least riscv32imac) in nightly rust. (RISCV Arch Support rust-embedded/wg#36, Enable RISCV rust-lang/rust#52787)
- Simplify binutils for riscv32. Ideally the LLVM tools that ship with rust will work. But if not we need some way to distribute riscv32-ld and riscv32-objcopy that doesn't rely on users building from source.
- Upstream lld support for riscv: Upstreaming riscvarchive/riscv-lld#1. First PR is in! llvm-mirror/lld@9e54d15
- Develop support for risc-v in Tock.
- Add a RV32I arch crate. RISC-V: Add context switching #1323
- Create a HiFive1 board in
/boards. PR: Add initial RISC-V support + HiFive board #1317 - Create an
arty-e21board for running the E21 core on the ARTY FPGA. RISC-V: Add context switching #1323 - Implement a driver for the Physical Memory Protection (PMP) peripheral.
- Implement a driver for the CLIC peripheral. RISC-V: Add context switching #1323
- Implement
UserlandKernelBoundaryfor risc-v. This would enable context switches to userland. RISC-V: Add context switching #1323 - Implement a systick replacement for providing timeslices for apps.
- Support the HiFive1(b) board. https://github.com/tock/tock/tree/hifive1b
- Add better fault printing and debugging support.
- Add support to Tockloader for loading code on risc-v boards. It seems like they use openocd, but unfortunately it seems to be a custom fork. https://github.com/riscv/riscv-wiki/wiki/RISC-V-Software-Status#openocd Status: this exists for arty-e21, pending for HiFive1.
- Add links to external documentation. Make it easier for developers to find information about the ISA, peripherals, and sifive-specific peripherals.
- Support userland c apps
- Update crt0.c and tock.c to support risc-v. On libtock-c:
make RISCV=1. - Get PIC working. This seems like it might be a ways off: Support for
-mno-pic-data-is-text-relative? riscvarchive/riscv-gcc#158- Alternative: use N x K linking Tracking: Implement N x K Application Linking libtock-c#63
- Verify various more advanced apps work.
- Update crt0.c and tock.c to support risc-v. On libtock-c:
Intro
This RISC-V architecture continues to gain momentum, and having Tock support risc-v boards seems quite feasible. With the embedded version still in development, it seems like Tock could be a leading embedded OS for risc-v platforms. Also, supporting multiple architectures would demonstrate the Tock architecture flexibility.
alevy, anmolsahoo25, erlend-sh, devurandom and dkhayes117tarcieri, levex, cauebs, niklasad1, lschuermann and 4 more