本帖最后由 turmary 于 2016-5-16 10:04 编辑
送给新手,老司机勿喷
1. 结构图
| 图1 |
2. 先从最外层说起,片外JTAG/SWD引脚,参考芯片Data Sheet, Reference Manual.
以STM32为例,RM0008 from st.com
调试章节
这时已经可以访问图1中,DP内的DPACC,APACC
3. DP分JTAG-DP/SW-DP/SWJ-DP
参考 IHI0031A_ARM_debug_interface_v5.pdf from arm.com
寄存器在Debug Port Registers章节
此时可以访问图1的AP Access和APSEL,下一层访问AP
AP Access一看就明白,指定读写/地址/数据,APSEL的设置参考DDI0314F_coresight_component_trm.pdf
4. AP 有AHB-AP/APB-AP/JTAG-AP等
参考IHI0031A_ARM_debug_interface_v5.pdf
ARM_debug_interface_v5中
AHB-AP/APB-AP都是MEM-AP的实例,面象对象的说法。
JTAG-AP就是JTAG-AP
以及DDI0314F_coresight_component_trm.pdf的Debug Access Port章节
此时可以访问AHB-AP, AHB-AP中又是地址+数据,见下图。
这里的地址已经连接到AHB总线矩阵,因些激动人心的时刻到了,
大部分4G地址空间的存储和外设都可以访问了。
5. 具体的Cortex-M3控制
参考Cortex-M3技术参考手册(Cortex-M3 Technical Reference Manual.pdf)
读写Cortex-M3 核心寄存器(R0-R12,SP,LR,PC等),启停CPU
访问存储及外设,设置Flash断点参考
6. 一些开源程序,从小的开始说
1> swddude
VC/MinGW编译,Windows上运行,通过FT232/FT2232连接Target,只支持SWD方式,TARGET仅有LPC的两个Cortex芯片
2> CMSIS-DAP
ARM/MBED出品,源码
MDK编译,LPC/FRDM上运行
3> OpenOCD
功能强大,支持全面
|