Bootstrap

如何在NRF52840上编译,运行Zephyr RTOS

这今天在淘宝上买了一块“SupreMini NRF52840”开发板,分享一下如何在上面编译运行Zephyr并使用LED和UART。

这块板子实际使用的boot loader是“nice!nano”,所以schematic可以基本参考下面的链接。

Getting Started - nice!nano

下载Zephyr Board Configuration

https://github.com/zephyrproject-rtos/zephyr/commits/main/boards/others/promicro_nrf52840

最新Zephyr上已经有了适用于这块开发板的configuration,但是需要对UART做一下修改。

​​​​​​​https://github.com/zephyrproject-rtos/zephyr/commits/main/boards/others/promicro_nrf52840

因为我使用的是Zephyr 4.0的release,里面还没有,需要单独cherry-pick

git cherry-pick 0c3913962e2b33ed5081c01a158587b3614cf6c9 

        "[Zephyr4.0 09347a1f08c] boards: others: Introduce Pro Micro nRF52840 type"

git cherry-pick 0cae816b27f67f0490a90d7c9e7df2d722dfdd97 

        "[Zephyr4.0 33177faad5e] boards: add common configuration for CDC ACM UART"

 修改 Board Configuration

原始的“zephyr/boards/others/promicro_nrf52840/promicro_nrf52840-pinctrl.dtsi”里,UART0的TX/RX是P0.9和P0.10。在“SupreMini NRF52840”上,我们使用P0.6和P0.8. 

可以直接修改“promicro_nrf52840-pinctrl.dtsi”,也可以添加自己的overlay。我偷个懒就直接改”promicro_nrf52840-pinctrl.dtsi”。

同时在console上使用uart0.

​​​​​​​

"cdc_acm_serial.dtsi" 也包含在device tree里,主要是在console上enable 板载的USB-UART。

我直接把这个文件的include注释掉了。

连接UART

将P0.6和P0.8连接到USB串口设备上COM6.

编译Blinky

关于如何编译Zephyr的application,可以参考之前的几篇文章。

运行 west build -p auto -b promicro_nrf52840/nrf52840/uf2 samples/basic/blinky

和ESP32的binary不同,NRF52840编译的image是uf2格式的Zephyr.uf2。

烧录Image

 Getting Started - nice!nano

参考上面的链接,讲RST和GND短接两次,boot loader会进入flash mode。这时候能看到多了一个USB 驱动器。

将“zephyr.uf2”复制到USB驱动器,开发板会自动烧写重启退出flash mode。

打开COM6就能看到Blinky的printf和printk了。

;