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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
原文地址:https://www.cnblogs.com/kay2018/p/9627765.html