目前在做一颗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 跳转至页
回复
打赏帖 | |
---|---|
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 |