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

news2024/11/24 18:44:46

硬件准备

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代码结构分析:

任意文本编辑器打开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文件结束。

cklink_lite.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(不擦除)。

烧写固件

先刷入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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链接投票二维码制作制作投票链接视频选举投票制作

关于微信投票&#xff0c;我们现在用的最多的就是小程序投票&#xff0c;今天的网络投票&#xff0c;在这里会教大家如何用“活动星投票”小程序来进行投票。我们现在要以“信赖挚友”为主题进行一次投票活动&#xff0c;我们可以在在微信小程序搜索&#xff0c;“活动星投票”…

activiti整合springBoot其他操作

如果单纯使用activiti进行流程的自动控制&#xff0c;是可以实现的。但是通常我们都需要结合自定义的表&#xff0c;便于在流程执行中更加清晰的看到每一个流程实例节点的具体信息。关联自定义表与activiti表才能完成真正的业务 BusinessKey关联 // 定义businessKey Test pub…

【UML+OOPC嵌入式C语言开发】使用C语言实现一个面向对象语言才能够实现的类

文章目录简述OOPC开发环境知识讲解函数示例类的实现示例接口实现示例&#xff08;前面两部分有点无聊&#xff0c;如果大家没兴趣看可以直接从知识讲解开始看&#xff09; 简述OOPC oopc&#xff0c;是一种轻量级的面向对象的C语言编程框架&#xff0c; LW_OOPC是Light-Weight …

学习C++这几个网站足矣

文章目录cppreferencecplusplusquick-bench[C 之父的网站](https://www.stroustrup.com/bs_faq.html)C提案[Cpp Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)[C Super-FAQ](https://isocpp.org/faq)[learn c](https://www.learncpp.com/)[A…

从上海分时电价机制调整看转供电用户电能计费

安科瑞 耿敏花2022年12月16日&#xff0c;上海市发改委发布《关于进一步完善我市分时电价机制有关事项的通知》(沪发改价管〔2022〕50号)。通知明确上海分时电价机制&#xff0c;一般工商业及其他两部制、大工业两部制用电夏季&#xff08;7、8、9月&#xff09;和冬季&#xf…

Codeforces Round 855 (Div. 3)(A~F)

A. Is It a Cat?定义满足条件的字符串为&#xff1a;其中仅可能含有meow四种字母的大小写&#xff0c;而且相同种类的字母必须挨在一起&#xff0c;四种字母的顺序必须按照meow排列。给出一个字母串&#xff0c;求是否满足条件。思路&#xff1a;感觉是个很麻烦的模拟。首先把…

这6个高清图片素材库,马住,马住~

网上找的图片素材清晰度不够&#xff0c;版权不明确怎么办。看看这几个可商用图片素材网站&#xff0c;解决你的所有图片需求&#xff0c;高清无水印&#xff0c;赶紧马住&#xff01; 1、菜鸟图库 美女图片|手机壁纸|风景图片大全|高清图片素材下载网 - 菜鸟图库 ​ 网站素材…

Vector - CAPL - 简介及数据结构

对于想进入车载行业或者已经在车载行业工作的朋友对于CAPL这个词都会相当的熟悉&#xff0c;都知道他是做车载网络测试脚本的语言&#xff0c;并且跟C有点类似&#xff0c;但是它到底是什么呢&#xff1f;CAPL全称&#xff08;Communication Access Programming Language&#…

Qt 崩溃 corrupted double-linked list Aborted

文章目录摘要1 使用全局静态变量2 不取第一个和最后一个数3 将数据计算放到同一线程计算4 替换槽函数5 修改传值为const6 神奇的环境因素7 更神奇的板子差异8 另一个细节Aborted最后关键字&#xff1a; Qt、 Aborted、 corrupted、 double、 linked 摘要 额&#xff0c;结论&…

【上位机入门常见问题】SQLServer2019 安装指导

SQLServer2019 安装指导 这里要说一下SQLServer的版本问题&#xff0c;首先说纵向的高低版本&#xff0c;如果大家跟我学习&#xff0c;我教给大家的是T-SQL编程的方法&#xff0c;而不是直接操作菜单的方法&#xff0c;所以&#xff0c;我们学习中只要使用SQLServer2012或以上…

嵌入式学习笔记——STM32单片机开发前的准备

STM32单片机开发前的准备1.集成开发环境的选取STM32 CubeIDEKEIL_MDK2.KEIL_MDK环境搭建安装包获取及安装芯片包下载及安装工程建立(STM32F407VET6为例)1.新建工程文件夹2.新建工程3.安装ST-LINK以及CH340的驱动4.设置KEIL&#xff0c;并烧录本文重点1.集成开发环境的选取 前面…

深入分析Vert.x里Future的compose() 和 map()

Vert.x 是一个异步框架。因此&#xff0c;它需要一种方法来表示可能尚未准备好但将来可用的值&#xff0c;也称为延迟值(deferred values)。您可能熟悉不同名称的延迟值&#xff1a;Promise, Future, Deferred, Mono, Uni 都是延迟值设计模式的实现。 Vert.x 有自己的延迟值实…

IP 地址类型有哪些?

IP 地址有不同的类别&#xff0c;每个类别内有不同的类型。消费者 IP 地址具有互联网服务计划的每个个人或企业都将拥有两种类型的 IP 地址&#xff1a;专用 IP 地址和公共 IP 地址。术语“公共”和“专用”与网络位置有关 - 即&#xff0c;在网络内部使用专用 IP 地址&#xf…

【C++】30h速成C++从入门到精通(内存管理、函数/类模板)

C内存分布我们先来看一下下面的一段代码相关问题int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pChar3 "abcd";int* ptr1 (int*)mal…

离线数据仓库项目搭建——准备篇

文章目录&#xff08;一&#xff09;什么是数据仓库&#xff08;二&#xff09;数据仓库基础知识&#xff08;三&#xff09;数据仓库建模方式&#xff08;1&#xff09;星行模型&#xff08;2&#xff09;雪花模型&#xff08;3&#xff09;星型模型 VS 雪花模型&#xff08;四…

【iobit 软件】家族系列 - 正版激活码

装机必备iobit系列软件 - 激活码获取看最后 第一款、Advanced SystemCare 16 您需要的人工智能驱动的PC优化器&#xff0c;以释放磁盘空间&#xff0c;加速PC并保护在线隐私。 功能特点&#xff1a; 1. 系统清理与优化&#xff1a;通过清除系统垃圾文件、注册表信息、无用文…

智能微型断路器在某银行网点的设计与应用

安科瑞 耿敏花【摘要】&#xff1a;随着人工智能、移动互联等现代信息技术和通信技术在电力行业的应用&#xff0c;实现电力系统各个环节人机交互、万物互联&#xff0c;打造状态全方面感知、信息合理处理、应用便捷灵活的泛在电力物联网已成为必然趋势 。本文主要对智能微型断…

后羿采集器快速入门----一款没有编程经验也能轻松使用的数据采集软件

后羿采集器快速入门 一、前言 不知道大家有没有苦恼于如何快速获取网页上的数据&#xff1f;想要进行大量重复性的操作但又要花费大量时间经历学习爬虫&#xff0c;这对于没啥编程基础的朋友们来说简直太不友好了&#xff01;那么有没有一个软件&#xff0c;能够通过傻白甜式…

【设计模式】代理模式

代理模式 为某个对象提供一种代理&#xff0c;以控制其他对象对这个对象的访问。属于结构型模式。 某些情况下&#xff0c;一个对象A不适合或者不能引用、直接访问某个对象B&#xff0c;而代理对象可以在客户端A和目标对象B之间起到中介作用 代理模式主要有三个重要角色: 抽…

【推拉框-手风琴】vue3实现手风琴效果的组件

简言 在工作时有时会用到竖形手风琴效果的组件。 在此记录下实现代码和实现思路。 手风琴实现 结构搭建 搭建结构主要实现盒子间的排列效果。 用flex布局或者其他布局方式将内容在一行排列把每一项的内容和项头用盒子包裹&#xff0c; 内容就是这一项要展示的内容&#xf…