相关服务

  • 《现代电子技术》2007年第6期摘录:《现代电子技术)2007年第6

如发现有乱码,请点击下面链接浏览原文
正文摘录:

《现代电子技术)2007年第6期总第245期b新型元器件司(4)编写数据寄存器、指令寄存器的访问函数。实现寄存器的访问。(5)编写按钮事件。获取ARM7TDMI处理器的ID。voidCGetDeviceIDDlg::OnButtonl(){intstatus;unsignedintSC—hum=0;unsignedintshift—out;CStringstemp;status=tapetrl—acs—ireg(JTAG—IDCODE);status=tapctrl—acs—dreg(32,&sc—num,~shift—out);stemp.Format(”%x”,shiftout);m—IDEDIT=stemp;UpdateData(0);,程序说明:tapctrl—acs—ireg(JTAG—IDCODE);将JTAGIDCODE(1110B)放到指令寄存器中。tapctrl—acs—dreg(32,&SC—hum,&shift—out);将DeviceIdentification寄存器的内容读出。运行结果如图5所示:图5读取ARM7’rI)MI处理器的ID3.2程序的下载和调试3.2.1ICEbreaker模块ARM7TDMI处理器的ICEbreaker模块为ARM7TDMI内核提供了集成的片内调试支持。ICEbreaker通过ARM7TDMI处理器TAP控制器串行编程。图6ICEbreaker模块图6是内核、ICEbreaker模块与TAP控制器之间的关系,其中只显示了与ICEbreaker有关的信号。ICEbreaker逻辑包含下面几部分:(1)两个独立的调试控制寄存器和调试状态寄存器,为ARM7TDMI处理器的调试提供了控制信号。(2)两组实时观察点单元。可以编程这两个观察点使内核暂停指令的执行。每个观察点单元都可配置为观察点或断点。3.2.2实现流程(1)使用ARM提供的编译器,获得可执行程序的二进制文件。(2)使用扫描链2访问ICEbreaker模块的调试控制寄存器和调试状态寄存器,使ARM7TDMI进入调试状态。(3)使用扫描链1,向ARM7TDMI的指令流水线中插入STR指令,依次将二进制文件装载到LPC2210的SRAM的指定地址中。(4)使用扫描链2访问ICEbreaker模块的观察点数据、地址、控制寄存器,设置调试断点。(5)出调试状态,等待程序执行到断点。程序的源代码可以从Open—Jtag论坛上下载。针对LPC2210的硬件结构要对源代码进行修改,例如将下载的代码的地址设为0x40000000。在调试过程中,发现在访问扫描链2时,向指令寄存器写入SCANN指令,从TDo输出的ScanPathSelect寄存器为0。理论上从ScanPathSelect寄存器的输出值应为1000B,修改判断条件后,程序顺利执行。4结语本文介绍了32位ARM嵌入式处理器的调试技术。在JTAG边界扫描技术的基础上介绍了ARM的ICE—breaker模块,并给出了读取ARM7TDMI处理器的ID和程序的下载调试两个例子。嵌入式调试技术是嵌入式软硬件开发中必要的一环,掌握了他能在开发中起到事半功倍的作用。参考文献[1]ARM7TDMIdatasheet,http://www.arm.corn/.[2]JTAG调试原理[EB/OL].http://www.embedworld.corn/project/openjtag.[3]周立功.ARM嵌入式系统实验教程(二)[M].北京:北京航空航天大学出版社,2005.作者简介刘文超男,1983年出生,硕士研究生。主要研究方向为嵌入式系统。潘永才男,1964年出生,副教授,硕士生导师。主要研究方向为嵌入式系统、数字信号处理、系统分析与集成。

阅读此文(图):   点击此处在线翻阅