2个版本
0.1.1 | 2021年8月29日 |
---|---|
0.1.0 | 2021年8月29日 |
#5 在 #esp32-c3
46KB
672 行
包含 (静态库, 8KB) bin/riscv32imc-unknown-none-elf.a
esp32c-rt
为基于RISC-V的ESP32-C系列SoC的CPU的最小运行时/启动程序。
本项目是基于 riscv-rt
仓库的分支,并在其基础上为ESP32-C系列进行了特定的修改。
截至目前,只有 ESP32-C3 已发布。然而,未来计划发布ESP32-C6版本,并且预期该SoC也将与该仓库兼容。
修改
与 riscv-rt
仓库相比,已实施以下修改
- 仅准备包含
rv32imc
架构的复位和启动例程的二进制blob。这是ESP32-C系列SoC的架构。 - 从启动复位例程中排除
mie
和mip
机中断寄存器。这些寄存器未由SoC实现,如果不删除,将导致无效指令
异常。 - 添加了一个名为
directboot
的功能(默认启用),该功能修改链接脚本,包括启动EPS32-C SoC到直接启动模式的魔数字符。这大大简化了启动和设置工作,但破坏了与许多 ESP-IDF 功能(安全启动等)的兼容性。更多有关直接启动模式的信息可以在 esp32c3-direct-boot-example 仓库中找到。 此模式仅支持SoC >= rev. 3 - 添加了一个名为
esp32c3
的功能(目前默认启用),该功能将ESP32-C3的内存布局包含到链接器中,以便下游项目无需补充此文件。
ESP32-C3内存布局
当启用 esp32c3
功能时,假设以下内存布局
MEMORY
{
irom (x): ORIGIN = 0x42000000, LENGTH = 0x400000
drom (r): ORIGIN = 0x3C000000, LENGTH = 0x400000
ram (rw): ORIGIN = 0x3FC80000, LENGTH = 0x50000
rtc_ram (rx): ORIGIN = 0x50000000, LENGTH = 0x2000
}
文档
Rust文档可在此处找到:这里
最低支持的Rust版本 (MSRV)
本仓库保证在稳定的Rust 1.42.0及更高版本上编译。它可能可以用较老的版本编译,但在任何新的补丁版本中可能会改变。
许可证
请参阅 LICENSE.md
贡献
除非您明确声明,否则您有意提交以包含在存储库中的任何贡献,也应在以下描述的ISC许可证下授权,无任何额外条款或条件:LICENSE.md
。
行为准则
此crate的贡献受Rust行为准则的规范,该crate的维护者承诺将介入以维护该行为准则。
依赖项
~2.5MB
~60K SLoC