RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO

问下,那个hex是可以做stlink又可以做虚拟串口的

hggq opened this issue · 35 comments

hggq commented

我看到有一个压件文件里面有几个 hex
F103-DAP-SWO-CDC-BLUEPILL-SWD_REMAP.hex
F103-DAP-SWO-CDC-BLUEPILL-SWD_unREMAP.hex
F103-DAP-SWO-CDC-STLINK_V2A.hex
或给我重新编一个hex

hggq commented

新的F103-DAP-SWO-CDC-STLINK_V2A.hex 好像还是显示为CMSIS-DAP 不是stlink和串口
只有stlink2a串口有作用
我是使用的是bule pill

我的这个code,是为了将STLINK-V2的硬件,变身为CMSIS-DAP的,当然是烧码以后就要显示和工作于CMSIS-DAP了。
您如果一定要使用ST-LINK,参考我的另一个帖子,将STLINK-V2刷成STLINK-V2-1,就有了CDC功能。
http://www.stmcu.org/module/forum/thread-617075-1-1.html

hggq commented

我是苹果系统,现在只想用stlink和串口 F103-DAP-SWO-CDC-BLUEPILL-REMAP.hex 也不行
STLINK-V2 硬件 别人拿走我的了,现在只有一个,不敢测试,等再买一个看看

我没有苹果电脑,这个真的没有办法帮您了,您自己试一试,谢谢。

hggq commented

苹果系统我装好了 stlink驱动,如果烧成stlink我可以用了

那您只能烧STLINK-V2-1。您如果是想将BluePill板变身为STLINK。那样的话,您仔细看看STLINK的电路图,有好几条线要接的,不能直接烧码就拿来用。

hggq commented

看了,我意思是usb管理设备里面显示是CMSIS-DAP,如果显示是stlink应该可以,BluePill板变身为STLINK 是F103-DAP-SWO-CDC-STLINK_V2A.hex 这个吗

不是这样的,CMSIS-DAP是USB-HID的device,与STLINK的不同的,只是改名称不行的。

BluePill板,要烧我的帖子里面的“STLinkV2.J28.M18_解除读保护.bin”,才能变成STLINK_V2-1.
然后,硬件还要按照电路图进行修改。你一定要参考完整的STLINK的电路图,还有几个电阻要接的。

@RadioOperator 请问下STLink V2A和V2B硬件上有什么区别

@lgl88911 硬件上面没有区别,都是要改动3条线。
STLINK_V2B = V2A + JTAG mode. 请参考电路图,原来的SWIM线有功能(JTDI)的。
STLINK_V2A,只有SWD模式,SWIM线没有功能。

@RadioOperator 谢谢,请问下STLINK_V2B 在软件上如何启动JTAG Mode呢

@lgl88911 当然首先要保证JTAG有关的5条线+GND(电源线3V3不是必须的)连接正确,而后选择JTAG模式或者SWD模式是在MDK-Keil的软件里面设置的。

@RadioOperator 谢谢,看样子是存软件配置即可,请问有在ubuntu下用pyocd测试过吗,我打算改一个在ubuntu下用

hggq commented

我意思是把bluepill 发挥下,如果能做stlink和串口模块就好了,不用再改去硬件那个,我看那图硬件stlink-v2好像还要跳线

@hggq 我也是说你把Bluepill烧成STLINK_V2-1,使用固件“STLinkV2.J28.M18_解除读保护.bin”,然后插到苹果电脑上,如果认得到STLINK,你已经成功一半了。STLINK_V2-1,是有串口的,也是使用PA2/PA3。
可能需要苹果电脑专用的STLINK驱动,我想你已经有了。

@RadioOperator 我在Ubuntu上用过stm32f106的dap,只是是SWD,不知道PYOCD是不是支援jtag,我去改个stlink试试

@hggq “STLinkV2.J28.M18_解除读保护.bin”固件文件,在我前面给你的链接里面,一楼的附件里面:
http://www.stmcu.org/module/forum/thread-617075-1-1.html

hggq commented

确实可以了,针脚图没有呢,是不是你里面那个,我确实看到stlink,用st-info --probe命令,说发现一个stlink 但是没有读到目标信息

我那个图也可以。我不知道你要使用几条线连接目标板。
至少要将PB12线,通过100欧姆电阻接到PB14线上,再试一试。

hggq commented

4线,就是wio wclk gnd 3.3V pb12接 100欧到pb14是什么作用

PB14是WIO的输出线,PB12是WIO的data输入线,所以要这么连接。
PB13和PA5是WCLK,也可能需要将PB13和PA5连起来用。电路图上两条线是同名的(T_JTCK)。

@RadioOperator 能否帮忙把BLUEPILL的hex转成bin,我在ubuntu上用stlink进行烧写,axf报又section未知,烧完后插入BLUEPILL, usb找不到

hggq commented

#!/bin/sh
arm-none-eabi-objcopy -I ihex --output-target=binary $1 $2

用这个脚本,arm-none-eabi-objcopy 可以把hex 转为bin

@lgl88911 搞定了没有,网络上面有许多小软件,都可以将hex转为bin。
用一些可以读hex文件的软件打开它,再将内存里面的数据转存为bin文件也可以。

@hggq @RadioOperator 我的环境时linux,之前用过arm-none-eabi-objcopy -I ihex的方式,直接提示不能识别hex格式

@lgl88911 xxxxxxxx.bin, 我加上了,没有测试过,您可以试一试。

hggq commented

arm-none-eabi-objcopy -I ihex --output-target=binary abc.hex abc.bin 这样 你执行,我经常这样操作,没有问题bin文件是hex文件三分之一大小样子arm-none-eabi-objcopy 是arm gcc 自带的

@RadioOperator 多谢,用Bin烧写后可以正常跑起来,因为我是在Linux下用所以没法自己编译你的代码.今天看了下想用gcc编译DAP,要用ST的hal重写CDC和HID工作量还是不小,由于时间原因还是放弃了.仁兄如果后续有移植到用gcc编译,请告诉我一下

@hggq 我用Objcopy hex和axf size都不太对(REMAP那个是402653448),我猜应该是section定义的原因(我在网上找的一个测试axf objcopy出Bin是正常的):
strip和gdb dump的时候都会报:

stFCthoa: warning: allocated section `ER_RW' not in segment

@RadioOperator有提供bin档,我就没花时间研究了

hggq commented

换成cubemx工程会好点 因为用hal库 可以换成linux 下编译

@hggq,就是用cubef1的midware,需要用CDC和HID来替换现有部分。st的东西我也没用过,所以看哪位仁兄有兴趣搞一搞

@RadioOperator 请问下SWD-unRemap version的虚拟串口波特率是多少

@lgl88911 这个虚拟串口波特率是可变的,两边设置成一样的即可。比如115200。

@RadioOperator 谢谢,刚才就是设置的115200,没看到输出,应该是target board挂了