首先贴几个资料网页:
OpenTrhread官网上的ESP32方案的介绍页面:乐鑫 | OpenThread (google.cn)
GitHub上的ESP-IDF中OpenThread的CLI示例:esp-idf/examples/openthread/ot_cli at master · espressif/esp-idf · GitHub
不过上面这个示例的自述文件没啥参考意义,主要是要示例工程而已.
另外一个比较重要的工程是OpenThread针对ESP32的移植工程:https://github.com/openthread/ot-esp32
上面那个工程里对应的示例程序有个自述文件,比较有参考意义:https://github.com/openthread/ot-esp32/blob/master/example/README.md
接下来是一些初期需要知道的一些注意点:
1.ot-esp32工程依赖esp-idf,所以需要先装一个esp-idf,这个esp-idf的版本我这边测试下来不可以是最新的,会有跟RCP(在这个情况下就是NRF52840的固件)有兼容问题.我目前测试的是用跟那个esp-idf中的CLI示例中自述文件同一个提交(commit 7c389893090cbd884a7bcfaa4f2e9ffd308893f3)是OK的.
如果遇到这个兼容问题,在ESP32跑起来的时候会提示RCP缺少功能(RCP is missing required capabilities: tx-security tx-timing),log如下:
2.另外对于RCP固件的编译(NRF52840固件),不能在windows系统上通过WSL上操作.会出现各种问题.
3.工程中固件的默认串口连接方式是:
- ESP32.IO5 <---> nRF52840.P0.06
- ESP32.IO4 <---> nRF52840.P0.08
然后相关流程按这里的文档就可以了(https://github.com/openthread/ot-esp32/blob/master/example/README.md)
4.ESP32的工程不要用ot-esp32的,会编译不过,需要用esp-idf里带的.
一.ESP32端的固件编译:
先从github上clone对应ESP32-IDF工程(commit 7c389893090cbd884a7bcfaa4f2e9ffd308893f3),然后运行目录下的insttall.sh做安装,然后运行export.sh设置一些系统变量.
然后可以直接cd到esp-idf/example/openthread/ot_cli目录下跑make -j8去编译ESP32端的固件.
二.NRF52840端的固件编译:
从github上clone ot-esp32的工程,并更新&初始化子模块.
从ot-esp32目录下cd到third_party/openthread目录,运行bootstrap.sh,安装一些必要的依赖.
然后可以直接make -f examples/Makefile-nrf52840 CFLAGS="-DUART_HWFC_ENABLED=0"编译固件
make完了以后进一步cd到output/nrf52840/bin
运行arm-none-eabi-objcopy -O ihex ot-rcp ot-rcp.hex生成hex文件.
将NRF52的固件刷到NRF52840的板子上后将串口接好后,给ESP32刷固件,ESP32的固件跑起来后应该就能看到效果了.
2021/10/13更新:
之前的RCP的固件是用的 ot-esp32 内的.现在改为从ot-nrf528xx来编译.
把ot-nrf528xx仓库克隆到本地后,执行script文件夹中的bootstrap脚本来安装一些必要依赖.
然后修改/src/nrf52840/transport-config.h中关于串口的内容(主要是关闭硬件流控以及TX RX 的pin脚以及串口波特率).
确认OK后开始编译.
然后将bin文件转换为hex文件.
然后烧录到NRF52840里,跑一遍,结果.....
RCP版本太高了,回退吧.
把ot-nrf528xx仓库checkout到老的版本:
git reset --hard 5e433ae225c453a11f90a7f21acefa0bca4d7ded
然后再把仓库里的openthread组件也checkout到对应的老版本:
git reset --hard 4ff5ab6
然后再把上面的修改 transport-config.h 以及编译以及生成hex文件重新做一遍烧录后,好了:
Comments | NOTHING