2020 年底,突然对 TinyML 产生兴趣,按书中推荐,买了块 Nano 33 (Nano 33 BLE Sense)。
最近加入了 Rust 中文社群,看到张老师发的公众号文章《2021 年 Rust 生态调研报告| 星辰大海 【上篇】》中提到嵌入式系统 TockOS,正好手里有板子,不如在 TockOS 中 用 Rust 来点个灯吧!说干就干。
首先,准备开发环境。我目前的开发环境在 MacOS 下,需要 Python3 、Rust 和 Tockloader。Tockloader 工具可以将内核和应用程序烧录到板子上,并且还具有对 Tock 板有用的功能,例如易于管理的串行连接,以及通过 JTAG 或 USB (如果安装了引导加载程序)。它是一个 Python 程序,可以使用 Python 包管理工具(pip)进行安装:
(Linux): pip3 install --upgrade tockloader --user
(MacOS): pip3 install --upgrade tockloader
由于我使用 USB 将电脑与板子进行连接,因此需要安装引导加载程序(Bootloader)。Nano 33 预装的是用在 Arduino 各种板上的 BOSSA Bootloader。不幸的是,这个引导加载程序不太适合 Tock 开发。对于 Tock 开发,我们需要将引导加载程序替换为 Tock Bootloader。 Tock Bootloader 在读写板时提供了更大的灵活性,并且也在 Tock 本身之上实现。现在将介绍如何安装 Tock Bootloader,我们的目标是把 Tock Bootloader 覆盖 BOSSA Bootloader。
-
第一步我们将需要 bossac 工具。使用开发板随附的现有引导加载程序需要此工具。可以从源代码编译此工具:
git clone https://github.com/arduino/BOSSA cd BOSSA make bossac
然后需要将 BOSSA/bin 添加到你的 $PATH 变量中,这样你的系统才能找到 bossac 程序。
-
接下来,将板子使用 USB 与电脑连接,然后我们将使用 BOSSA Bootloader 来加载 Tock Bootloader 的副本。 BOSSA Bootloader 期望所有应用程序代码(即不是引导加载程序)从地址 0x10000 开始。也就是说,当引导加载程序完成时,它开始在地址 0x10000 处执行。
-
因此,我们将加载 Tock 引导加载程序的副本到地址 0x10000。这也意味着我们需要一个经过编译的引导加载程序版本,以便在地址 0x10000 处运行。 要加载第一个 Tock Bootloader,请确保 Nano 33 处于引导加载程序模式,方法是
双击板子上的重置按钮
(指示灯应闪烁),然后执行以下命令:bossac -e -w bootloaders/tock-bootloader.nano33ble.v1.1.0.0x10000.bin
tockloader flash -address 0x10000 /Users/zhanghe/code/tock/target/thumbv7em-none-eabi/release/nano33ble.bin
上面的
.bin
文件是我本地编译好的。可以克隆https://github.com/tock/tock.git
仓库,在里面的/boards/nano33ble
下有编译好的引导程序。 -
我们可以使用
tockloader
测试上一步是否成功。一个简单的测试是运行:tockloader info
如果可以看到类似于下面这种信息,就表明
tockloader
可以与引导加载程序进行通信。[INFO ] No device name specified. Using default name "tock". [INFO ] Using "/dev/cu.usbmodem144101 - Nano 33 BLE - TockOS". tockloader version: 1.8.0 [STATUS ] Showing all properties of the board... [INFO ] Waiting for the bootloader to start Apps: [INFO ] No found apps. Attributes: 00: board = nano33ble 01: arch = cortex-m4 02: appaddr = 0x50000 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: Bootloader version: 1.1.0 [INFO ] Finished in 1.893 seconds
到这里,安装引导加载程序基本完成了。
接下来,就可以通过 tockloader
安装应用程序了:
tockloader install blink
选择安装在线仓库 TAB
的应用,至此,点灯成功。下一篇,我们将使用 libtock-rs
库自己写一个点灯程序。
今天的文章Arduino Nano 33 BLE Sense 在 TockOS 中点灯分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/20350.html