目前在做一颗soc芯片arm9的前端仿真,我正在尝试写一段testbench,给JTAG端口信号,测试简单的JTAG访问操作。
看了twentone和duyunhai的<ARM JTAG调试原理>文档后,对JTAG TAP controller的状态有了一些认识。
经过两三天的调试,有了一点小成果。就是能从shift状态下,看到了TDO上输出4b'0001信号,具体执行操作如下:
test-logic reset -->run-test/idle --> select -DR-Scan -->select-IR-Scan -->Capture -IR --> Shift -IR(在该状态下,保持TCK运行4个clk,就能看到4b'0001信号,再保持TCK,就能看到TDI上的数据从TDO输出到端口) -->
...
目前的问题是,不知道接下去怎么配置,通过执行IDCODE指令,TDO读出arm ID
共9条
1/1 1 跳转至页
非常感谢版主给我的指点。:)
但是对配置IDCODE指令,没有成功。
如下图是我采用的时序图。期望能在配置了指令寄存器后,能在shift-DR时把ID寄存器的值读出来,实际没有。
具体操作流程是:test-logic reset -->run-test/idle --> select -DR-Scan -->select-IR-Scan -->Capture -IR --> Shift -IR(5个TCK) -->Exit1-IR -->Update-IR --> run-test/idle --> select -DR-Scan -->Capture -DR --> Shift -DR ---
我看了arm9的manual,发现指令是一样的,也是1110。
我又尝试用一个别的公司arm芯片,用示波器通过Multi-ice连接到目标板,然后用示波器直接在板上采集波形。因为一开始会有芯片加载过程,我认为可能就是在识别ID号。读取波形,没有发现tdo数据,如图:兰线是TCK(一堆无规则的脉冲),紫线是TMS,绿线是TDO
假设现在在RUN-TEST状态,写IDCODE指令(长度=4,指令=B'1110)的过程应该如下:
RUNTEST -> TMS=1,+TCK -> SELECTDR -> TMS=1,+TCK -> SELECTIR -> TMS=0,+TCK -> CAPTUREIR -> TMS=0,+TCK -> SHIFTIR -> TMS=0,TDI=0,+TCK -> SHIFTIR -> TMS=0,TDI=1,+TCK -> SHIFTIR -> TMS=0,TDI=1,+TCK -> SHIFTIR -> TMS=1,TDI=1,+TCK -> EXITIR -> TMS=1,+TCK -> UPDATEIR -> TMS=0,+TCK -> RUNTEST
共9条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |