OpenCR 固件修复
Bootloader
引导加载程序(BootLoader)负责初始化电路板并将固件下载和执行到闪存中。
- 支持系统:windows,Linux,Mac
- 编译器:gcc arm 5.4 2016q2
USB端口
- 连接到PC并识别为串行端口
- 用于通过引导加载程序下载固件的通信电缆。
按下SW2
- 电源打开时按住按钮或重置以执行引导加载程序
- 如果在打开电源时未按下按钮,则执行引导加载程序。 如果固件位于闪存中,则引导加载程序将执行固件。
启动顺序
- 如果电路板上电或复位,如果按下SW2按钮,它将在引导加载程序状态下等待来自PC的命令。
- 如果未按下SW2按钮,如果闪存的固件区域中存在固件并执行它,则跳转到固件。
更新bootloader(Linux)
您可以使用OpenCR板上的MCU的DFU模式更新引导加载程序。
要使用DFU模式进行更新,您需要安装dfu-util。
sudo apt-get install dfu-util
进入DFU模式
要在DFU模式下运行OpenCR,请按照以下说明操作。
- 按住Boot按钮。
- 按下Reset按钮。
- 释放Reset按钮。
- 释放Boot按钮。
- 由内置的引导加载程序复位后,OpenCR将进入DFU模式。
检查启动模式
如果运行lsusb,则可以检查它是否处于DFU模式。 如果MCU处于DFU模式,则运行lsusb后将显示DFU设备。
lsusb
更新bootloader
构建引导加载程序后,移动到bin文件所在的文件夹,并使用dfu-util更新它。
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./opencr_boot.bin
固件修复模式
如果下载了已损坏或未完成的固件且电路板冻结或无法工作,则必须进入引导加载程序才能下载正常固件。
要执行引导加载程序,请按照以下说明操作。
- 按住PUSH SW2按钮。
- 按下Reset按钮。
- 释放Reset按钮。
- 松开PUSH SW2按钮。
重置后,OpenCR将进入引导加载程序。 当引导加载程序运行时,STATUS LED每100ms闪烁一次。
您可以在引导加载程序运行时下载正常的固件。
下载器
PC Downloader应用程序与引导加载程序通信,并将固件从PC下载到OpenCR板闪存的固件区域。
Downloader将必要的信息附加到提供的二进制文件中。
- 支持系统:windows,Linux,Mac
- 编译器:Linux: gcc windows: Qt 5.7
用法
opencr_ld <Communication port> <Baudrate> <Firmware binary> <Firmware execution status [0|1]>
- Communication port:Linux的串口名称通常为/ dev / ttyACM0,它应与连接到OpenCR的串口相同。
- Baudrate:以115,200bps的速率进行通信和输入的速度。
- Firmware binary:固件二进制映像具有bin的扩展名。
- Firmware execution status:如果为1,则在下载固件后将执行固件。 如果未输入或为0,则仅执行下载固件。
从Arduino IDE导出已编译的二进制文件
Linux/Mac 例子
如果OpenCR连接到ttyACM0端口,则将二进制文件opencrfw.bin复制到opencr_ld目录中。
sudo opencr_ld /dev/ttyACM0 115200 ./opencrfw.bin 1
windows例子
如果OpenCR连接到COM1端口,则将二进制文件opencrfw.bin复制到opencr_ld目录中。
opencr_ld.exe COM1 115200 ./opencrfw.bin 1
执行结果
下载可执行程序文件
作者:kay 出处:https://www.cnblogs.com/kay2018/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |