数码之家

 找回密码
 立即注册
搜索
查看: 1571|回复: 13

[ARM] 分享个今天刚写好的高速仿真器固件,基于arm最新的cmsis-dap V2.1.1源码移植

[复制链接]
发表于 2023-9-4 21:40:55 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
基于arm最新的 cmsis-dap V2.1.1源码移植,只移植了SW,没有移植JATG,所以不支持JTAG。

PA08 -> SW_nRESET
PB15 -> SW_DIO
PB13 -> SW_CLK

CMSIS-DAP是arm开源的一款仿真器,支持HID接口和WinUSB接口
HID接口的优点是xp--win11都免驱,缺点是速度比WinUSB慢
WinUSB接口的优点是速度快,缺点是部分系统不免驱。
WinUSB不支持Win7之前的系统,在win7系统使用时需要手动安装驱动,win7之后的系统免驱(win8理论上是免驱的,没测试)
win7不能自动安装驱动,可以使用 zadig-2.8.exe 手动安装驱动。



测试芯片AT32F403ACG,在keil里面烧录一个512K的程序,
图片1.png
使用HID接口,烧录速度设置10M,擦除,烧录,校验,用时41.5秒
图片2.png
使用WinUSB接口,烧录速度设置10M,擦除,烧录,校验,用时20.8秒
图片3.png
使用J LINk,烧录速度设置50M,擦除,烧录,校验,用时18.7秒
图片4.png
目前仅是用GPIO模拟SW序,已经跟J LINK很接近了,要知道STM32F103C8的主频只有72M,J LINK用的是STM32F205,主频高达120M,
后期如果改成用硬件SPI,速度应该还有提升空间。
图片5.png
附件是两个烧录文件,一个用的是12M外部晶振,另一个用的是8M外部晶振,根据自己的板上晶振频率进行选择。

keil自带的这个功能很实用,方便一些没有复按键的PCB板,烧录成功之后程序可以直接运行,不需要手动复位,
但是市面上很多的仿真器不支持这功能,勾不勾选都不会让芯片复位运行程序,早几年用ST-LINK的时候也是这样,
不知道现在ST-LINK现在有没有支持这个功能,
J-LINK是支持这个功能的,
当然我写的这个固件也支持这个功能

微信截图_20230904215625.png


我测试用的芯片是STM32F103C8T6,理论上可以直接烧录到一些兼容ST的国产芯片上。
目前网上的USB公开资料较少,学习难度相比其它外设要难很多,如果有兴趣想学习USB的可以私信我,提供有偿指导。
目前已经调通的USB类有WinUSB,HID,MSC,CDC,这4个类可以任意组合做成复合设备。
STM32F103C8_8M_Release.rar (36.63 KB, 下载次数: 0)
STM32F103C8_12M_Release.rar (36.73 KB, 下载次数: 1)


打赏

参与人数 2家元 +150 收起 理由
家睦 + 120
e.woods + 30 謝謝分享

查看全部打赏

发表于 2023-9-4 22:11:03 | 显示全部楼层
围观大佬,虽说我一点都看不懂...
回复 支持 反对

使用道具 举报

发表于 2023-9-4 22:14:00 | 显示全部楼层
感谢楼主的分享精神
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-4 22:40:31 | 显示全部楼层
CMSIS-DAP是arm的仿真器,支持arm内核的芯片,仿真、擦除、烧录、校验
回复 支持 反对

使用道具 举报

发表于 2023-9-5 00:04:54 | 显示全部楼层
这个用的是什么逻辑分析仪,能记录30秒的数据?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-5 07:59:49 来自手机浏览器 | 显示全部楼层
iamluckman 发表于 2023-9-5 00:04
这个用的是什么逻辑分析仪,能记录30秒的数据?

数据是存在电脑上的,只要电脑内存够大,存几天几夜的数据都没问题
回复 支持 反对

使用道具 举报

发表于 2023-9-5 08:45:02 | 显示全部楼层
本帖最后由 inthsunshine 于 2023-9-5 09:43 编辑

烧写速度很大时候是flash擦除和写入耗时(这个时间和烧写器无关,和芯片自身有关),数据传输的时间并不多,所以我对烧写器的速度不感冒,差不多就行了

比如我的stlinkv2, 最高只有4MHz, 测试过烧写百来K-几百K程序,端口速度设置在1M和4M看不出区别,这点程序的传输耗时,对于flash擦除烧录时间不值一提
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-5 09:30:23 | 显示全部楼层
inthsunshine 发表于 2023-9-5 08:45
烧写速度很大时候是falsh擦除和写入耗时(这个时间和烧写器无关,和芯片自身有关),数据传输的时间并不多, ...

程序小当然看不出区别了,程序大的时候区别就大了,比如1M或十几M的程序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-5 09:32:25 | 显示全部楼层
HID接口用的是中断传输,1ms中断一次,一次最多传输64个字节的数据,WinUSB接口用的是批量传输,只要USB总线空闲就一直传输,STM32F103C8的批量传输理论速度12Mbps
回复 支持 反对

使用道具 举报

发表于 2023-9-5 09:42:19 | 显示全部楼层
可以考虑换成USB HS,这样速度更快
回复 支持 反对

使用道具 举报

发表于 2023-9-5 09:45:27 | 显示全部楼层
本帖最后由 inthsunshine 于 2023-9-5 10:09 编辑
595953427@qq 发表于 2023-9-5 09:30
程序小当然看不出区别了,程序大的时候区别就大了,比如1M或十几M的程序 ...

象arm单片机,几十k-几百K程序最常见,1M程序能碰到的机会微乎其微, M核心目前还没有10M这么大容量,就拿1M大程序,数据传输也就差几秒,但烧写擦除恐怕要1分钟以上,那差几秒又有什么关系?
回复 支持 反对

使用道具 举报

发表于 2023-9-6 00:11:41 | 显示全部楼层
inthsunshine 发表于 2023-9-5 09:45
象arm单片机,几十k-几百K程序最常见,1M程序能碰到的机会微乎其微, M核心目前还没有10M这么大容量,就拿1 ...

用jlink v11烧录AT32F435RMT7(4032KB),SWD速度设置10M,擦除+烧录+校验用时124秒,SWD速度设置15M(最快速度),用时119秒。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-6 00:30:17 | 显示全部楼层
mmxx2015 发表于 2023-9-6 00:11
用jlink v11烧录AT32F435RMT7(4032KB),SWD速度设置10M,擦除+烧录+校验用时124秒,SWD速度设置15M(最 ...

我手上的j link v9用的芯片是STM32F207,主频120M,我用STM32F103C8主频72M,只有STM32F207主频的60%,烧录速度达到了J LINK V9的90%。
回复 支持 反对

使用道具 举报

发表于 2023-9-17 15:19:28 | 显示全部楼层
c6t6可能用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-27 22:26 , Processed in 0.156000 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表