跳转至

串口裸机升级参考例程*

1. 样例使用说明*

芯片支持空片升级,也就是说,芯片本身没有烧录过任何固件的情况下,也可以通过串口进行升级。这个升级安全可靠。因为在升级过程中断电或者出现异常,导致设备变砖,仍然可以重新按住BOOT键上电复位后,重新进行OTA升级。升级过程,和芯片本身跑的内部固件没有任何关系。

重要

仅支持 UART0 和 UART1 升级,硬件上需要能否复位芯片(或者给芯片上下电),和控制boot脚(升级过程需要把boot脚拉低)

我们提供了在linux pc和windows pc可以跑的 C 代码例子,方便客户参考和集成到自己的方案上

Windows 环境需要先安装 gcc 编译器 mingw,并配置好环境变量,若没有,则执行fornax_uart_ota.zip 里的 mingw-get-setup.tar.gz 里面的 mingw-get-setup.exe 安装一下

参考代码: http://yun.nationalchip.com:10000/l/sF3BVA

linux上编译:make linux

windows上编译:mingw32-make

具体使用的方法,参考 fornax_uart_ota.zip 里面的 Readme.md

2. UART OTA 流程图*

3. 移植注意事项*

  • 升级过程分两段,一段是加载 bootloader,等 bootloader 启动后再加载要烧录的固件。因此,开发者需要把 fornax_nre.boot 固化到自己的升级代码里,或者保存在主控的 flash 上。fornax_nre.boot 70K 大小。

  • 升级过程,串口波特率可以先用我们代码推荐的,如果发现不稳定,可以降低波特率再测试,以找到个合适的波特率。

  • 升级的协议流程,开发者可以不需要关注,直接移植即可。但是,需要关注 porting.c,把里面的串口接收接口换成自己平台的。
  • 上电复位 FORNAX 的时候,要注意上电时序, 先按住 BOOT 后再单击 RESET 复位或者重新给FORNAX上电。
  • 移植的时候,推荐使用我们参考例子给的超时时间。例子给的时间都比较长,这样稳定性会更好。而且这个时间,在 OTA 正常的话,是很短的。如果真的出现异常导致失败,这点超时对比整个 OTA 的流程来说,也是很短的时间。
  • 移植的时候,强烈推荐先拿我们的开发板飞线,进行调试,这样好排除PCBA硬件的问题干扰,在这个基础上调试成功后,再到 PCBA 上测试。在开发板调试遇到问题的话,可以非常方便的抓开发板的日志给我们分析定位。
  • 握手阶段失败,先确保上电时序是否正确,然后尽量尝试握手的超时时间设长点,比如 5 秒超时。