背景
最近买了一块基于平头哥C906核,SOC为全志的D1s,的核心板,手工焊接在白嫖的底板上(此处感谢百问网老师的友情支持,手动狗头)。在焊接完成后,进行点亮跑程序的时候,发现没有优雅的调试方法,只能用串口调试的方法,无法追踪程序在核心上的运行流程。
因此基于上面的问题,咨询了一下,老师转发了SD转JTAG的PCB文件,打开后发现上面有WHYCAN.COM的链接,百度搜索相关关键字,便查找到了参考资料中的链接地址,仔细阅读,是把芯片的SD接口的复用乘JTAG功能的IO引脚,延伸出来,做成了10 PIN的JTAG接口,在通过10PIN的JTAG连接器,便可以当成开发板直接暴露出来的JTAG IO口使用了。
确定目标
参考东山派D1s的板载JTAG调试接口原理图,分析SD转JTAG能不能实现PC通过JTAG对板子的JTAG方式调试。分析可以的实现的话,就需要把PCB拿去打板,再把BOM里面的原件都买回来,手工焊接上;然后连接到板子上面;再找一个CKLINK调试器,PC上面安装好CKLINK-Server,查看是否可以识别到芯片。
技术方案
我们参考东山派D1s的板载JTAG调试接口原理图,如下:
可以发现,东山派D1s开发板中,核心板的PF0,PF1,PF3,PF5复用为JTAG功能,默认的是SD接口。再和购买的D1s核心板与白嫖的底板原理图对比,可以发现核心板的IO为同一个IO口,不过在白嫖的底板上,是直连到的TF卡物理座子上面。
下面是转接板的原理图,通过转接板,完成JTAG引脚直连SOC的PF0,PF1,PF3,PF5的功能。
通过上面的分析,并查找D1s的datasheet,可以发现通过转接板,可以直连IP核心的JTAG引脚,可能需要软件配置一下IO功能复用,即可完成IP核心的JTAG接口配置;再将对应的JTAG引脚连接CKLINK硬件调试器上面,就可以实现JTAG调试IP核,可以打断点,观察变量等常用的软件调试功能,加速开发效率。
实现
下面记录一个一个PCB到最终实现一个实物的过程,给没有手工DIY的童鞋们打个样,带佬可以忽略该章节~
PCB打板
TODO
BOM元器件购买
TODO
元器件焊接
TODO
实物图
下面就是最终完成的转接板实物图啦~
- 正面图:
- 反面图
参考资料
- 设计一片 SD NAND + JTAG(全志soc) 转接板 [切记切记0.8mm厚度]
- riscv_programming_practice