在智漠远程物联网控制系统中,不仅可以让机器人按照预先的路径规划,进行自主移动,也可以在一些特殊情况下,通过平台给机器人切换手动模式,远程控制机器人。而实现机器人模式切换的方式,就是通过树莓派openOCD包使用JLink远程给STM32下程序。

文章目录

  • ​​安装openOCD包​​
  • ​​安装telnet及相关包​​
  • ​​安装telnet​​
  • ​​安装xinetd​​
  • ​​配置telnet文件​​
  • ​​重新启动xinetd​​
  • ​​准备程序并实现下载​​
  • ​​连接硬件​​
  • ​​使用openOCD连接STM32开发板​​
  • ​​使用telnet为STM32开发板下载程序​​

安装openOCD包

openocd全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具。

使用命令:​​sudo apt-get install openocd​​,下载openOCD

安装telnet及相关包

安装telnet

telnet程序是基于TELNET协议的远程登录客户端程序。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个
telnet会话,必须输入用户名和密码来登录服务器。
简而言之,telnet可以为openocd提供守护进程(个人理解,如有错误,请指正)。

使用命令:​​sudo apt-get install telnet​​​,下载telnet
使用命令:​​​sudo apt-get install telnet-server​​,下载telnet-server(有可能telnet-server已经在telnet中下载好了,如过已经第一步已经下载过,请忽略)

安装xinetd

使用命令:​​sudo apt-get install xinetd​​,下载xinetd

配置telnet文件

进入telnet文件中,路径为:​​/etc/xinetd.d/telnet​​​使用命令:​​sudo nano /etc/xinetd.d/telnet​​(nano和vim都是一种文本编辑器,如没有nano,更换即可)。

若该路径下的telnet文件为空文件,则写入内容:

# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID

}

写入完成后保存退出。

重新启动xinetd

整个下载配置完成后重新启动xinetd:​​service xinetd restart​​,若什么都没有出现,则启动成功。

准备程序并实现下载

连接硬件

将你的stm32开发板通过J-Link连接至树莓派,并观察树莓派、STM32以及J-Link运行正常。

使用openOCD连接STM32开发板

在使用命令时需要注意,不同型号的开发板需要将自己开发板对应的型号更换至命令行对应处,例如:
STM32F1xx:​​​openocd -f interface/jlink.cfg -f target/stm32f1x.cfg​​​ STM32F4xx:​​openocd -f interface/jlink.cfg -f target/stm32f4x.cfg​​ 其他系列按照模板更换即可。

使用telnet为STM32开发板下载程序

打开新的命令行终端,使用命令:​​telnet localhost 4444​​,开启openocd调试窗口(因为openocd连接到目标板后,它的默认telnet端口是4444)

命令

功能

halt

目标芯片挂起,相当于关机

flash write_image erase <要下载的文件>

将文件下载到目标芯片flash

reset

目标芯片复位

#开发板关机
>halt
#将你在/home/pi/目录下的DAC_ADC.hex文件下载进STM32开发板
>flash write_image erase /home/pi/DAC_ADC.hex
#开发板复位
>reset

整个下载过程完成。