1 个不稳定版本
0.1.0 | 2021年5月31日 |
---|
#918 在 嵌入式开发
30KB
368 行
Nordic Thingy:91-nRF9160 的板级支持包
此板级支持包最初从 Nordic nRF9160-DK 克隆而来,并预计将继续受到其启发。感谢 42 Technology 过去和未来的工作。
此crate是一个板级支持包(BSP)。它封装了针对 Nordic Thingy:91 参考板上 nRF9160 的 HAL crate(nrf9160-hal
),并为板上的功能提供高级封装。
使用方法
您需要安装 Rust 1.51 或更高版本,以及 thumbv8m.main-none-eabihf
目标。
$ rustc --version
rustc 1.52.1 (9bc8c42bb 2021-05-09)
$ rustup target add thumbv8m.main-none-eabihf
要在此BSP中使用自己的应用程序,请将其作为依赖项添加,并调用 Board::take()
函数。
示例
要构建示例之一,请运行
$ git clone https://github.com/titanclass/thingy-91-nrf9160
$ cd thingy-91-nrf9160
$ cargo objcopy --target=thumbv8m.main-none-eabihf --example blinky -- -O ihex target/thumbv8m.main-none-eabihf/debug/examples/blinky.hex
如果您未安装 cargo-objcopy
,请运行
$ rustup component add llvm-tools-preview
$ cargo install cargo-binutils
或者您可以手动运行 objcopy
$ sudo apt install binutils # provides /usr/bin/objcopy on Ubuntu
$ cargo build --target=thumbv8m.main-none-eabihf --example blinky
$ objcopy -O ihex target/thumbv8m.main-none-eabihf/debug/examples/blinky target/thumbv8m.main-none-eabihf/debug/examples/blinky.hex
无论哪种方式,您都可以使用 SEGGER JFlashLite 或您喜欢的烧录工具烧录 blinky.hex
文件。
调试
要使用 Thingy:91 进行调试,您需要一个 nRF9160-DK 和 SWD 电缆。我们建议将 blinky 应用程序烧录到 nRF9160-DK 中,以提供一些视觉确认,因为开发过程中没有其他视觉确认。
nRF9160-DK 有一个板载 SEGGER JLink 调试器。您需要运行 SEGGER JLink-to-GDB 服务器软件,然后您可以使用任何 GDB 接口调试板。
$ /opt/SEGGER/JLink/JLinkGDBServerExe &
$ # A GUI will pop up. Select the nRF9160 device.
$ cargo build --target=thumbv8m.main-none-eabihf --example blinky
$ gdb-multiarch ./target/thumbv8m.main-none-eabihf/debug/examples/blinky
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
...
Resetting target
(gdb) continue
Continuing.
Breakpoint 1, main () at examples/blinky.rs:24
24 #[entry]
(gdb) bt
#0 main () at examples/blinky.rs:24
(gdb)
您还可以参考使用 SEGGER J-Link 与 Visual Studio Code 的此指南。参数"device"
应设置为"nrf9160"
。
安全与非安全
此BSP设计为在非安全模式下运行,大多数应用程序代码也应如此。因此,您需要一个在安全模式下启动、将所需的外围设备移动到“非安全”世界,然后跳转到您的应用程序的“引导加载程序”。
我们已经成功使用来自nRF SDK v1.5.1的Nordic的安全分区管理器。SPM v1.5.1配置为在thingy91_nrf9160板上期望您的应用程序在地址0x0004_0000
处,因此memory.x
必须指定为闪存的起始位置。请注意,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=thingy91_nrf9160
$ west flash
您的nRF9160-DK现在将在0x0000_0000
和0x0003_FFFF
之间安装SPM。在0x0004_0000
处闪存您的应用程序不应影响SPM,前提是您没有选择“擦除整个芯片”之类的操作!
许可
以下任一许可下使用
- Apache License,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可(LICENSE-MIT或http://opensource.org/licenses/MIT)
任您选择。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可定义,应如上所述双重许可,无任何额外条款或条件。
依赖关系
~7.5MB
~190K SLoC