W800系列|ST-LINK|STM32最小版|HEX文件|CKLINK|DebugServer|学习(3-1):自制cklink调试工具

目录

硬件准备

软件安装

调试工具制作

烧写固件

CDK使用CKLINK下载调试SDK

问题解决

参考博文

补充


硬件准备

1.stm32最小系统板:stm32c8t6

2.stlink下载器:stlink v2版本

软件安装:

1、STM32 ST-LINK Utility(官网下载)

2、csky IDE: 剑池CDK集成开发环境V2.18.2

https://occ.t-head.cn/community/download?id=4119141468164132864

调试工具制作

1.首先查看stm32最小系统板原理图,

1)、PA12是否有电阻。有的去掉;

2)、PA12PB5之间是否有其他东西。否则在两者之间并一个2k电阻。

2.使用stlink下载

连接后先更新一下stlink固件

升级后的版本号位V3.9.0:

 按接线线序连接STM32C8T6和stlink对应端口,connect:

连接成功后,显示连接信息:

刷写固件前的要先全盘擦除:

 擦除完成

安装C-skyDebug工具(DebugServer),用于测试:

链接:https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource/1836682/1626764310739/T-Head-DebugServer-windows-V5.12.1-20210716-1524.zip

平头哥的DebugServer软件里面,提供了两个CK-Link-Lite的固件,位于.\T-HeadDebugServer\bin\links\CK-Link目录下,分别是cklink_lite_iap.hex和cklink_lite.hex。

任意文本编辑器打开cklink_lite_iap.hex可见

 开头2行和末尾2行记录hex的地址等重要数据。

第1行-

: 02 0000 04 0800 F2

2个字符表示116进制字节

:每行开始 (0X3A)

02:代表本行有2个字节数据

0000:本行数据的起始地址(偏移地址)

04:扩展线性地址标识,后面2个字节数据是后面数据的基地址

注:由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,故有了扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录含数据的高16位,扩展线性地址记录总是有两个数据字节。

0800:是扩展地址 (0x0800 << 16) = 0x08000000后面的数据记录都以这个地址为基地址。即iap文件的基址是0x08000000

F2: 记录本行校验和 F2=0x100-(0x02+0x04+0x08)

结尾为..0X0D 0A

利用winhex打开cklink_lite_iap.hex可见开头及换行字符(采用记事本打开时特殊符号不显示):

 第2行及以下的数据行:

 :10000000280800201D350008050A0008070A000816

:每行开始

10:本行有16个byte数据 (0x10)

0000:基于初始地址的偏移量,表示本行数据起始地址为0x08000000。下一行则是0x08000010依次类推

00:数据标识,表示后面字节为记录的数据

280800201D350008050A0008070A0008:10个byte的数据

16:校验和:

0X100-(10+00+00+00+28+08+00+20+1D+35+00+08+05+0A+00+08+07+0A+00+08)= 0X100-0XEA=16

以下类似。

:100010000B0A00080F0A0008130A0008000000007D

:10002000000000000000000000000000170A0008A7

:10003000190A0008000000001B0A00081D0A000839

末尾2行记录:

 倒数第2行-:04 0000 05 080000ED 02

04:表示本行有4个byte数据

0000:表示本行数据起始地址为0x00000000

05: 表示后面存放要执行的下一个指令的地址

080000ED:表示要执行的下一个指令的地址(main函数地址)

02;校验和

最后1行::00000001FF

01:标识hex文件结束。

 第1行与前述cklink_lite_iap.hex代码结构相同。

第2行及以下的数据行:

:10 4000 00 B019002021410008474D0008F54A0008 7A

:每行开始

10:本行有16个byte数据 (0x10)

4000:基于初始地址的偏移量,表示本行数据起始地址为0x08004000。下一行则是0x08004010依次类推。0X4000=16384=16 KB=0X10 KB

00:数据标识,表示后面字节为记录的数据

B019002021410008474D0008F54A0008:10个byte的数据

16校验和:

0X100-(10+40+ B0+19+00+20+21+41+00+08+47+4D+00+08+F5+4A+00+08)= 0X100-0X86=7A

注意:这里(10+40+ B0+19+00+20+21+41+00+08+47+4D+00+08+F5+4A+00+08)=0X386,省略首位3,只保留2位参与计算,即0X86。

其他类似。

综上,从存储位置关系上分析,需要写烧写入cklink_lite_iap.hex,再烧写cklink_lite.hex(不擦除)。

烧写固件

插入电脑的usb接口,C-SKY CKLINK已可以正常识别了。

以win11为例,按win(视窗)+X键,打开设备管理器:

有博主将刷入的2个.hex文件拼合起来,并升级改写为CKLinkLite2.30.hex,可以直接烧写使用: 

合并文件下载详见:https://oshwhub.com/l88889686/cklinkw80x-fang-zhen-qi

CDK使用CKLINK下载调试SDK

硬件接线

CK-LINK

W806

3V3

3V3

RST

RST(复位脚)

TCK

CLK(PA1)

TMS

DAT(PA4)

GND

GND

运行DebugServer后,提示错误:

根据问答社区, 有网友碰到同样的问题,解决方法是降低CDK版本:

 目前官网还能找到的低版本是剑池CDK集成开发环境V2.16.2,安装后也不能用,问题依旧。

https://occ.t-head.cn/community/download?id=4092601014065106944

问题解决

根据网友提供方法,在设备管理器里卸载设备,然后右键选择“扫描检测硬件改动”,重新扫描后,CKLink就重新枚举变为“CKLink-Serial Port”。

可以看到CKlink-Lite了:

打开Debugger Server,正常识别了,创建gdb调试服务,保持后台运行,开始调试把!

参考博文:

1、HEX文件格式详解

HEX文件格式详解_hex格式_揪住小尾巴的博客-CSDN博客

2、自制CKLink-lite调试器,调试D1裸机编程

http://bbs.eeworld.com.cn/thread-1200313-1-1.html

补充:

W800系列||STM32最小版|CKLINK|待完善|学习(3-2):自制cklink调试工具测试(win11系统识别错误待解决)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值