Arduino Nano 33 BLE Sense 在 TockOS 中点灯

Arduino Nano 33 BLE Sense 在 TockOS 中点灯2020 年底,突然对 TinyML 产生兴趣,按书中推荐,买了块 Nano 33 (Nano 33 BLE Sense)。 最近加入了 Rust 中文社群,看到张老师发的公众号文章《2021 年 R

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注