问下,那个hex是可以做stlink又可以做虚拟串口的
hggq opened this issue · 35 comments
我看到有一个压件文件里面有几个 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
新的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
我是苹果系统,现在只想用stlink和串口 F103-DAP-SWO-CDC-BLUEPILL-REMAP.hex 也不行
STLINK-V2 硬件 别人拿走我的了,现在只有一个,不敢测试,等再买一个看看
我没有苹果电脑,这个真的没有办法帮您了,您自己试一试,谢谢。
苹果系统我装好了 stlink驱动,如果烧成stlink我可以用了
那您只能烧STLINK-V2-1。您如果是想将BluePill板变身为STLINK。那样的话,您仔细看看STLINK的电路图,有好几条线要接的,不能直接烧码就拿来用。
看了,我意思是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下用
我意思是把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
确实可以了,针脚图没有呢,是不是你里面那个,我确实看到stlink,用st-info --probe命令,说发现一个stlink 但是没有读到目标信息
我那个图也可以。我不知道你要使用几条线连接目标板。
至少要将PB12线,通过100欧姆电阻接到PB14线上,再试一试。
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找不到
#!/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, 我加上了,没有测试过,您可以试一试。
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档,我就没花时间研究了
换成cubemx工程会好点 因为用hal库 可以换成linux 下编译
@RadioOperator 请问下SWD-unRemap version的虚拟串口波特率是多少
@lgl88911 这个虚拟串口波特率是可变的,两边设置成一样的即可。比如115200。
@RadioOperator 谢谢,刚才就是设置的115200,没看到输出,应该是target board挂了