打印
[APM32F0]

向openocd添加新设备——以APM32F035为例

[复制链接]
1358|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cx1524|  楼主 | 2023-11-26 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cx1524 于 2024-1-26 11:24 编辑

# 向openocd添加新设备——以APM32F035为例

## 序言        在项目中需要用到openocd对APM32F035进行烧录,但openocd暂没有APM32F035的官方支持,因此需要向openocd中添加新设备APM32F035,,在查阅资料后整理出了一份在openocd上适配新设备的方法并在此记录。我对openocd了解尚浅,故望在此抛砖引玉,文中如有错误的地方,还望各位大佬斧正。
    向openocd中添加新设备需要重新对openocd进行编译,我采用的是Linux交叉编译的方式进行Windows版本openocd程序编译。openocd的编译流程已在其官方的Readme文档中给出了详细的指示,我在此仅是简述其流程,其官方文档地址为:https://github.com/openocd-org/openocd/blob/master/README

## 搞定编译环境

在Linux上编译openocd需要先安装以下依赖:
  • autoconf
  • automake
  • git
  • libtool
  • make
  • mingw-w64
  • pkg-config
  • texinfo

以 Ubuntu 为例,使用以下命令安装所需依赖:
sudo apt update
sudo apt install autoconf automake git libtool make minge-w64 pkg-congig texinfo
同时, 为了支持调试接口CMSIS-DAP, 还会使用到libusbhidapi的动态库, 这两个动态库可以通过编译它们的源码获得。
先用git拉取openocd、libusb和hidapi的源码:
mkdir Build
cd Build
mkdir Source
cd Source
git clone https://github.com/libusb/libusb.git libusb
git clone https://github.com/libusb/hidapi.git hidapi
git clone git://git.code.sf.net/p/openocd/code openocd

编译libusb,并将安装路径定为 ${HOME}/Build/libusb(可以在用户根目录下找到该文件夹)
./bootstrap.sh
./configure --prefix=${HOME}/Build/libusb --host=i686-w64-mingw32
make -j4
make install

安装完成后可在${HOME}/Build/libusb/bin/目录下找到libusb.dll文件

编译hidapi

./bootstrap
./configure --prefix=${HOME}/Build/hidapi --host=i686-w64-mingw32
make -j4
make install
安装完成后可在${HOME}/Build/hidapi/bin/目录下找到hidapi.dll文件

> 在编译apihid-10.1时, 可能需要删除configure.ac中的第16行宏检查, 在autoconf2.7后`AC_CONFIG_MACRO_DIR([m4])`只能调用一次

## 编译openocd

在openocd中添加新设备, 需要进行以下步骤:
  • ~/src/flash/nor/中添加flash.c文件表示Flash的下载方式;
  • ~/src/flash/nor/drivers.h中全局声明flash;
  • ~/src/flash/nor/drivers.c中添加flash;
  • ~/src/flash/nor/Makefile.am中增加对flash的编译;
  • ~/tcl/target/中添加芯片的cfg文件。

flash文件一般都会写成某种类型的通用形式,多种设备可以使用一个flash文件,针对flash的声明与添加与编译同理。(可参考stm32f1x.c与stm32f2x.c进行改写,或直接使用它们)
> 如果直接复用stm32f1x.c或stm32f2x.c,则可跳过上述步骤1、2、3、4

搞定源文件与cfg文件,就可以开始编译openocd了,这里采用的是原生编译方式:

cd到openocd目录下,然后
./bootstrap
./configure --prefix=${HOME}/Build/openocd --host=i686-w64-mingw32
make -j4
make install

编译完成就可以在${HOME}/Build/openocd/bin/中找到openocd.exe文件。

因为需要支持CMSIS-DAP,还需要将libusb-1.0和hidapi的dll文件复制进openocd的bin目录中
cp ${HOME}/Build/libusb/bin/libusb-1.0.dll ${HOME}/Build/openocd/bin
cp ${HOME}/Build/hidapi/bin/libhidapi-0.dll ${HOME}/Build/openocd/bin

完成后进行tar打包,
tar -vcf openocd.tar ${HOME}/Build/openocd
gzip openocd.tar

至此openocd编译完成,可以将压缩得到的openocd.tar.gz复制进Windows环境下测试了。





使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

9

帖子

0

粉丝