[APM32F4]【技术分享】APM32F411的pyOCD命令行操作

1 背景

我拿到了极海家的APM32F411 TINY板卡,其上面自带一个仿真器(基于CMISI-DAP),在一些场合中在我们使用IDE(KEIL MKD/IAR)的时候非常方便。

 



这个是由于IDE自带了CMSIS-DAP的驱动才这样子方便的。

个人在一些应用中习惯了使用J-link与其工具链:J-Link Commander,命令行工具。在命令行中对目标芯片进行编程、读取芯片内容或者程序控制等操作。

比如下图,我使用J-Link Commander连接APM32F407芯片。

 



所以我就想着有没有CMSIS-DAP能够使用的命令行工具,能够平替J-Link Commander?(PS:CMSIS-DAP不是已经平替Jlink了吗,(#^.^#))。

2 OpenOCD?pyOCD?

对于CMSIS-DAP的命令行工具我这边想到的有OpenOCD?pyOCD?这两个工具。这两个工具各有特点,其中OpenOCD:

1. 面试较早,使用的人较多。
2. 各家芯片不一样,若需使用,需检查OpenOCD是否支持。
3. 开源的项目,芯片支持更新情况需要有人支持。

对于Pyocd:

1. 基于Python,需要安装Python环境,程序的响应速度上有一定影响。
2. 由ARM组织主导,现阶段只支持Cortex-M内核。
3. 支持CMSIS-Pack框架,这点意味着,只要我们的芯片支持Keil MDK开发环境,就基本可以使用pyOCD。

作为一个开发者,我个人保持的看法是工具的简单使用,我不想过多的去考虑芯片的支持情况。那我基于这点我选择了pyOCD(PS:我懒得考虑为了使用一个芯片,然后得为工具去适配芯片。→_→主要是我懒)

那这里也贴一下他们的官网:

OpenOCD:https://openocd.org/

pyOCD:https://pyocd.io/

3 pyOCD的安装

既然选择了pyOCD,我们就看看如何安装pyOCD。(PS:网上有很多教程,当然我这里不是为了水)我这里精简一下步骤就是(仅是在Windows10下):

1. 安装Python环境。

   这里我们可以直接去Python官网下载,Windows下的安装包:https://www.python.org/ftp/python/3.12.0/python-3.12.0-amd64.exe(PS:pyOCD需要支持3.x的Python支持,留意下载的安装包版本)。下载完毕后点击安装即可,注意勾选:Add python.exe to PATH

 



2. 验证Python环境是否安装成功。

   使用“Win + R”调出命令行,输入“Python”。会显示当前Python的版本号。

 



3. 安装pyOCD。

   我这里推荐使用pip安装,在C盘根目录下,按住“shift”然后点击鼠标右键,在右键菜单中选择“在此处打开Powershell窗口(S)”。然后在命令行窗口输入:python -mpip install -U pyocd

    



   它可能会在最后提示你更新 pip,你直接在后面再输入一个命令:python.exe -m pip install --upgrade pip

4. 验证pyOCD是否安装成功。

   在刚刚的命令行窗口,我们可以输入“pyocd -V”,查看当前的pyOCD的版本号。

 



至此我们的pyOCD环境搭建完成。

4 pyOCD的命令行使用

网上一般是使用pyOCD对目标芯片进行程序下载等操作。我这里想用的是它的命令行对APM32F411进行程序的控制,或者内存的读取。

我们要完成以上功能,一般要完成的步骤有:

1. 连接目标芯片。
2. 读取指令,读取目标芯片。
3. 控制指令,控制目标芯片。

那步骤也是比较清晰的,我们理论存在,则开始进行。首先我们启动命令行(在任意目录下,按住“shift”然后点击鼠标右键,在右键菜单中选择“在此处打开Powershell窗口(S)”。)

4.1 连接APM32F411

连接目标芯片并使用命令行控制APM32F411,我们用的指令是:“pyocd commander --pack C:\Keil_v5\Packs\.Download\Geehy.APM32F4xx_DFP.1.0.4.pack -t apm32f411ve”。其中“C:\Keil_v5\Packs\.Download\Geehy.APM32F4xx_DFP.1.0.4.pack”是我的APM32F411的Pack包路径,因为我安装Keil MDK的环境,所以就直接使用Keil 根目录下面的了。

PS:可能有些人在这一步会出错,可能是pack的目录太深,或者包含中文字符导致的。

然后会让我们选择相应的仿真器,我这里的是“0”号仿真器“Geehy CMSIS-DAP WinUSB”,输入“0”,再回车,会显示连接状态。

 



4.2 读取芯片内容

pyOCD读取芯片目标内容的指令是:rw。即读取一个word。

输入“rw 0x08000000 0x100”即可读取APM32F411从0x08000000地方开始的0x100个word。

 



4.3 停止芯片程序运行

pyOCD停止芯片程序运行的指令是:h。

输入“h”即可停止芯片的程序运行。

 



(PS:我芯片里面本身有LED闪烁程序,输入该指令LDE会停止闪烁,如果你芯片里面没程序,这个指令看起来就没啥变化)

4.4 继续运行芯片程序

pyOCD继续运行芯片程序的指令是:g。

输入“g”即可继续运行芯片程序。

 



(PS:我芯片里面本身有LED闪烁程序,输入“h”指令LDE会停止闪烁,输入“g”指令LDE会开始闪烁)

4.5 擦除指令

pyOCD擦除芯片程序的指令是:erase。

输入“erase”即可擦除芯片程序。

 


4.6 程序下载指令

pyOCD程序下载的指令是:load。

输入“load  FILENAME [ADDR]”即可下载程序(PS:注意文件路径不要有中文,bin文件要带下载地址)。
我这里是:load D:\APM32F411_SysTick_TimeBase.hex

 



4.7 程序读取命令

pyOCD程序读取的指令是:savemem。

输入“savemem  ADDR LEN FILENAME”即可读取并保存芯片的程序(PS:注意文件路径不要有中文,文件格式是bin文件)。
我这里是:savemem 0x08000000 0x2800 D:\APM32F411_SysTick_TimeBase_read.bin

 



4.8 更多指令

当然,pyOCD程序支持的指令有很多,只有我们输入“help”,它就会把所有的指令显示出来。

(PS:输入“q”可以退出pyOCD的命令行操作。)

5 总结

pyOCD程序从本文看下来基本可以做到了J-Link Commander的平替,有这个需求的小伙伴也可以拿到APM32F411 TINY板后看看,不需要掰断后飞线连接到J-link了。
---------------------
作者:kai迪皮
链接:https://bbs.21ic.com/icview-3332210-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值