Turtlebot3中级教程-OpenCR固件恢复
说明
本教程介绍如何在OpenCR板上进行固件恢复
测试环境:Ubuntu 16.04 + Arduino IDE 1.8.3
问题背景
- 通常用Arduino IDE给OpenCR板上传ROS固件时,有可能遇到以下
0xF020
错误
Arduino: 1.8.9 (Linux), Board: "OpenCR Board, OpenCR Bootloader"
Sketch uses 181896 bytes (23%) of program storage space. Maximum is 786432 bytes.
Global variables use 46364 bytes of dynamic memory.
opencr_ld ver 1.0.2
An error occurred while uploading the sketch
opencr_ld_main
>>
file name : /tmp/arduino_build_375437/turtlebot3_core.ino.bin
file size : 179 KB
Open port OK
Clear Buffer Start
Clear Buffer End
>>
cmd_read_board_name fail : 0xF020
- 如果在反复尝试上传后,依然出现这个问题的话,就需要在OpenCR板上进行固件恢复
- 或者是不能读取
/ACM0
端口
Sketch uses 181904 bytes (23%) of program storage space. Maximum is 786432 bytes.
Global variables use 46380 bytes of dynamic memory.
opencr_ld ver 1.0.2
opencr_ld_main
>>
file name : /tmp/arduino_build_524798/turtlebot3_core.ino.bin
file size : 179 KB
Fail to open port 1 : /dev/ttyACM0
Fail to jump to boot
ser_open: unable to open port: No such file or directory
- 需要检查是否识别到端口,并且端口是否有权限
ls /dev/ttyACM0
sudo chmod 777 /dev/ttyACM0
操作步骤
在PC上安装Arduino IDE以及配置OpenCR的上传环境:教程链接
用数据线连接openCR板到PC上
[OpenCR] 根据以下步骤使open CR进入到恢复模式
- 按住
PUSH SW2
按钮。 - 按下
Reset
按钮 - 松开
Reset
按钮 - 松开
PUSH SW2
按钮
- 按住
重置后,OpenCR将进入引导加载程序
引导加载程序运行时,
STATUS LED
每100毫秒闪烁一次[PC] 打开Arduino IDE,选择
File
->Examples
->Turtlebot3
->turtlebot3_burger
->turtlebot3_core
示例
- [PC] 然后点击
Sketch
->Exporting compiled binary
选项,确认保存后点击Sketch
->Show SketchFolder
打开文件的保存位置
- [PC] 将文件夹中的
turtlebot3.ino.OpenCR.bin
文件复制到~/.arduino15/packages/OpenCR/tools/opencr_tools/1.0.0/linux64
目录下
$ cp turtlebot3_core.ino.OpenCR.bin ~/.arduino15/packages/OpenCR/tools/opencr_tools/1.0.0/linux64
- [PC] 进入到相关目录下,上传下载器
$ cd ~/.arduino15/packages/OpenCR/tools/opencr_tools/1.0.0/linux64
$ sudo ./opencr_ld /dev/ttyACM0 115200 ./turtlebot3_core.ino.OpenCR.bin 1
opencr_ld ver 1.0.2
opencr_ld_main
>>
file name : ./turtlebot3_core.ino.OpenCR.bin
file size : 179 KB
Open port OK
Clear Buffer Start
Clear Buffer End
>>
Board Name : OpenCR R1.0
Board Ver : 0x17020800
Board Rev : 0x00000000
>>
flash_erase : 0 : 0.971000 sec
flash_write : 0 : 1.721000 sec
CRC OK 12376D8 12376D8 0.007000 sec
[OK] Download
jump_to_fw
- 用法
$ opencr_ld <Communication port> <Baudrate> <Firmware binary> <Firmware execution status [0|1]>
- 通信端口:串行端口名称通常
/dev/ttyACM0
用于Linux,并且应与连接到OpenCR的串行端口相同- 波特率:通信和输入的速度为115200bps
- 固件二进制文件:固件二进制文件映像具有bin扩展名
- 固件执行状态:如果为1,则将在下载固件后执行固件;如果未输入或为0,则仅下载固件
- 上传成功后,再上传ROS固件
参考资料
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号