0
点赞
收藏
分享

微信扫一扫

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序



现在人工智能非常火爆,一般的教程都是为博硕生准备的,太难看懂了,分享一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默,点☞​​这里​​​​​​​​☜进入传送门~


1.openocd介绍

​​openocd​​全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.10.0版本,目前主流调试器几乎都支持,具体可以查看​​Open On-Chip Debugger:OpenOCD User’s Guide​​,它的项目托管在​​sourceforge​​上,点击下载即可~

注:ubuntu软件源中也有openocd,但是版本到0.9.0,所以使用拉取源码手动安装。

2.openocd安装

首先使用命令​​unzip openocd-0.10.0.zip​​将下载的zip包解压,然后重命名为openocd:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_配置文件

2.1.安装openocd所需依赖



​libtool​​:
先查看​​libtool​​版本,若没有安装,则安装:
【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_下载文件_02
【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_下载文件_03



​pkgs-config >= 0.23​【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_配置文件_04

CMSIS支持需要​​HIDAPI​​库:
【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_linux_05



基于usb的适配器依赖于libusb-1.0和一些旧的驱动,还要安装usb依赖:
【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_linux_06



2.2.权限授权


  • ​sudo​​:在编译和安装的时候最好带上使用​​sudo​​,防止因为管理权限出错;
  • ​contrib / 60-openocd.rules​​:在Linux上使用USB设备时,需要将此文件复制到​​/etc/udev/rules.d/​​目录中:
    【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_linux_07

2.2.编译OpenOCD

首先使用命令​​sudo ./configure --help​​查看所有受支持选项的列表,执行​​sudo ./configure [options]​​(如果没有设置,options选项可以为空)生成构建所需要的makefile:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_下载文件_08

最后产生一个配置总结,可以看到默认打开CMSIS-DAP,那么如何打开别的呢?这个在刚刚的help中有说明,比如我要打开jlink,带上​​-enable--jlink​​参数即可~

2.3.安装OpenOCD

然后使用​​sudo make​​,最后使用​​sudo make install​​即可成功安装,安装后在​​/usr/local/share​​目录即可看到​​openocd​​目录:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_linux_09

它下面​​scripts​​文件夹存放着openocd使用的文件,在​​interface​​文件夹下存放着下载器接口的文件,在​​target​​下存放着目标芯片的配置文件:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_配置文件_10

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_下载文件_11

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_下载文件_12

3.使用openocd连接到目标芯片

openocd的一些参数描述如下:

参数

描述

-f <config file name>

使用配置文件

-c <command>

运行命令

使用命令​​openocd -f <接口配置文件> -f <目标芯片配置文件>​​即可成功连接到目标芯片:


  • 接口配置文件在​​interface​​文件夹下;
  • 目标芯片配置文件在​​target​​文件夹下;
    【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_下载文件_13

4.使用telnet连接到openocd

openocd连接到目标板后,它的​默认telnet端口是4444​,所以我们可以**新建一个终端(一定不要关闭掉连接到目标板的终端!!!)**连接到openocd的端口,然后使用命令控制。

这里因为要下载文件,所以我将路径切换到之前创建的bin文件的目录下,然后使用命令​​telnet localhost 4444​​连接到openocd:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_配置文件_14

这样就表示连接成功了,接下来使用命令控制目标芯片:

命令

描述

halt

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

flash write_image erase <要下载的文件>

将文件下载到目标芯片flash

reset

目标芯片复位

注意:


  1. 要下载的目标文件需要使用​绝对路径​,所以下载之前先使用​​pwd​​查看一下,然后直接复制过去就ok;
  2. 下载之前必须要先使用​​halt​​是目标芯片停止运行

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_配置文件_15

复位后即可看到板子绿色灯亮,下载成功:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_linux_16

退出可使用​​ctrl​​​+​​]​​​即可退出,然后输入​​q​​退出。

5.将openocd下载文件命令写入makefile

修改​​makefile​​:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_配置文件_17

然后使用​​make download​​命令,直接实现一键下载:

【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序_linux_18

​上一篇​:​​Linux下开发stm32(一) | 使用gcc-arm-none-eabi工具链编译​​

​下一篇​:​​Linux下开发stm32(三) | 寄存器工程开发​​



举报

相关推荐

0 条评论