通过树莓派的openOCD远程给STM32下程序(JLink方式)

前言

由于项目需要,需实现对stm32进行远程下载程序的操作。
经过上网查资料研究后,最后准备采用这套方案。
整体流程:通过ssh远程访问树莓派,运行openocd,以jlink作为媒介给stm32下程序。

准备工作

烧录程序

去树莓派官网下载ubuntu_mate系统(有图形界面的桌面版)
(据群友所述 ubuntu_snappy 系统为无图形界面的服务器版本)

格式化TF卡,烧录好系统
插入树莓派开机引导启动(此处不再赘述安装系统过程)

安装openocd

首先sudo apt-get isntall openocd
然后可以连接好用来下程序的工具和开发板
lsusb一下看看系统有没有识别

(我测试时候用的是jlink往stm32板子里下程序)
(以下以我的测试情况为例)

操作流程

openocd -f interface/jlink.cfg -f target/stm32f1x.cfg
连接上会有一堆的配置信息输出

接着新打开另一个终端
输入telnet localhost 4444

连接上openocd之前的守护进程
接下来的命令都在此终端运行

>halt
>flash write_image erase /home/pi/BEEP.hex
>reset

此处的/home/pi/BEEP.hex为对应下载的程序路径

然后32板通断一下电流即可执行新的程序了

说明

之前看到的一个博客整理的很好,直接在此引用了。
若认为侵权,可联系我删除)

成功通过Jlink连接到STM32上之后,OpenOCD会监听本机的4444端口。
通过telnet登录上去,之后就可以控制OpenOCD干些什么了。

1、halt :
挂起STM32,相当于关机,不执行halt,无法把程序写入STM32的Flash
2、flash write_image erase /foo/bar.hex :
flash write_image: 写入镜像,支持的类型有bin文件、hex文件、elf文件、
s19文件(Motorola s19)、mem、builder,详情参见OpenOCD手册关于Flash命令章节

erase:写入程序前先擦除Flash用到的扇区。
如果要写入程序的所有扇区已经用“Flash erase_sector”命令擦除过,
则可以去掉“erase”选项。
/foo/bar.hex:指定要写入的程序bar.hex,位于/foo/。
3、reset:
复位STM32

有关ssh服务注意事项

此系统默认关闭ssh服务

为了远程控制需配置ssh设置
ps -e | grep ssh查看一下
发现会有一个ssh-agent说明缺省安装openssh-client
(只能作为客户端ssh访问其他主机)

直接sudo apt-get install openssh-server
ps -e | grep ssh一下看看有没有sshd的守护进程

有的话说明ssh服务启动成功
没有的话 sudo service ssh start 开启一下

然后即可通过ssh远程访问22端口

你可能感兴趣的:(Linux)