参考 CMISI_DAP,BlackMagic代码。
预备下周末结案,目前方案:
1:Host用STM32F427,跑RTEMS系统, IO口模拟SWD时序。
2:flash的操作函数,由Host通过SWD下载入target ram执行。(CMISI_DAP采用这种方式)
不知道jlink的flash操作是不是一样的原理。他要适用这么多芯片,那得有准备多少这样的小程序啊。。。
3:USB用的虚拟串口,用ST官方提供的驱动,上位机编程简单。tafget本身程序.bin文件由上位机通过虚拟串口传入。
此虚拟串口的波特率,奇偶,起停位设置均形同虚设。
目前状态:
SWD时序基本调试通过,读写target ID/reg已经正常,暂时未经过高强度测试。。
正在弄flash操作。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个是我自己疏忽,没有unclok flash所致。写几个pc。xpr等写不进去也是犯低级错误。往里写了奇数。。。
然后。。。flash操作函数是直接拷贝的stm32库函数。
只是把寄存器读写全换成swd读写。这样效率很低。当然擦除flash可以直接用swd操作,没啥影响。但是大数据编程的时候,时间都浪费在swd 波形传输上了,还是直接download程序到ram执行最快。
大家可以看看Keil,它也是download程序到ram去弄的,在keil程序目录下,有个flash文件夹,里面就是每个芯片都有一段flash操作程序。
一周热门 更多>