8个版本 (4个破坏性更新)

0.18.0 2024年5月25日
0.17.1 2024年4月18日
0.16.1 2024年3月5日
0.16.0 2022年10月26日
0.14.1 2022年1月3日

#1889 in 嵌入式开发

MIT/Apache

530KB
11K SLoC

Nordic nRF5340的硬件抽象层

此crate是Nordic nRF5340的硬件抽象层(HAL),它封装了PAC(nrf5340-pac)并为芯片的外设提供了高级封装。

此crate不了解您的PCB布局或您将哪些引脚分配给了哪些功能。唯一的例外是示例,这些示例是为在官方nRF5340-DK开发套件上运行而编写的。

用法

您需要安装thumbv8m.main-none-eabihf目标。

$ rustup target add thumbv8m.main-none-eabihf

安全与非安全

此HAL设计为在非安全模式下运行,您的应用程序代码中的大多数也应如此。因此,您需要一个'引导加载程序',该引导加载程序从安全模式开始,将所需的设备移动到'非安全'世界,然后跳转到您的应用程序。

我们已经成功使用了Nordic的来自nRF SDK v1.7的安全分区管理器。SPM v1.7配置为期望您的应用程序在地址0x0005_0000,因此memory.x必须指定为Flash的起始位置。

注意:SPM的其他版本可能期望不同的起始地址 - 尤其是那些作为其他应用程序(如at_sample)子映像编译的!您可以在启动时查看起始地址。

SPM: NS image at 0x50000

这表示SPM正在寻找地址为0x0005_0000的非安全(NS)映像。

要构建SPM,请运行

$ west init -m https://github.com/nrfconnect/sdk-nrf --mr v1.5.1 ncs
$ cd ncs
$ west update # This takes *ages*
$ cd nrf/examples/spm
$ west build --board=nrf5340dk_nrf5340_cpuapp
$ west flash

West是Nordic提供的用于构建nRF Connect SDK的Python工具。有关详细信息,请参阅Nordic网站

您的nRF5340-DK现在将在 0x0000_00000x0004_FFFF 之间安装SPM。在 0x0005_0000 处刷写您的应用程序不应影响SPM,前提是您没有选择“擦除整个芯片”等操作!

如果您想更改闪存地址,请将您自己的 memory.x 文件放在您的应用程序crate(或您的板级支持crate)中,并编写一个 build.rs 文件,将您的 memory.x 复制到这个文件的上方。

许可

根据您的选择,许可方式如下:

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,都应按上述方式双许可,不附加任何额外条款或条件。

依赖项

约10MB
约270K SLoC