您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

浅谈ARM仿真器中的断点资源

发布日期:2011-05-13

  如今,越来越多的嵌入式开辟公司和工程师开始采取JTAG方法的ICE仿真器来举行步伐的调试事变。传统的全仿真方法(Full ICE)正在渐渐被利用机动、本钱低廉的JTAG仿真方法所代替。
  JTAG仿真器如今可以餍足嵌入式步伐调试的全部根本请求,比方:断点设置、单步调试、内存编辑、变量、寄存器观察等。(如图1所示)
 
  断点设置是JTAG仿真器最根本的调试成果。用户必要体系在设置断点处停下来后再举行调试。断点根据原理和用途差别又分为几个差别的种类。本文将大略地先容一下常用的几种断点范例。
  断点可分为硬件断点和软件断点两大类:
 
  1.硬件断点必要目标CPU的硬件支持,当前盛行的ARM7/9内部硬件计划提供两组寄存器用来存贮断点信息,以是ARM7/9内核最多支持两个硬件断点,而ARM11则可以支持到8个硬件断点。这与调试器无关。
 
  2.软件断点则是通过在代码中设置特性值的方法来实现的。当必要在某地点代码处设置软件断点的时间,仿真器会先将此处代码举行备份掩护,然后将预先设置好的断点特性值(一样平常为0x0000等不易与代码殽杂的值)写入此地点,包围原来的代码数据。当步伐运行到此特性值地点的地点时,仿真器辨认出此处是一个软断点,便会孕育产生停止。当取消断点时,之前受掩护的代码信息会被主动规复。
 
  硬件断点可以设置在任意位置的代码上,包括ROM和RAM;而软件断点由于必要修改相应地点的值,以是一样平常只能设在RAM上,但是数量可以不受限定。由于硬件断点设置的机动性,以是是最优先选用的断点资源,但是两个断点每每很难餍足工程师举行深入调试的必要,于是软件断点可以作为硬件断点的补充资源来利用。
 
  由于通常的软件断点只能设在RAM运行的代码上,而随着体系的代码量越来越大,分外是在移动通讯范畴,扩充大容量的RAM势必会增长产品的本钱,以是如今很多体系直接在FlashROM上运行代码。对付这种在FlashROM上运行代码的体系,一样平常的软件断点是无法设置的,这也是软件断点的范围性。对付如许的体系,只能通过瓜代利用两个硬件断点餍足必要,但是会带来肯定的不便。
 
  要很好的办理这一抵牾,只有使仿真器增长在FlashROM上设置软件断点的成果,拓展仿真器中可供利用的断点资源。比方,日本横河谋略机株式会社(YDC)最新推出的高端ARM仿真器-advicePRO,便是第一个支持Flash断点的ICE仿真器产品。(如图2所示)
  在FlashROM上设置软件断点的原理与在RAM上设置软断点雷同,也是在设置的断点处用特性码更换原有代码,通过辨认特性码使断点变乱产生。差别的是,在FlashROM上设置软件断点必要对Flash举行擦写操纵,这就必要仿真器可以或许有Flash编程成果,并且可以或许在尽大概短的时间内完成特性码的写入。完成这一系列的读写操纵,就可使在FlashROM上调试代码的工程师得到更充分的断点资源,从而大大进步了开辟服从。

图 1: 调试器界面及常用成果 

图 2: 横河公司的最新产品advicePRO 
 
  但是,由于对Flash举行擦写必要肯定的时间,以是在实行到Flash断点的时间会以为到有一个停顿的时间。固然这一点比RAM上的软件断点要差些,但是相对付给工程师调试事变团体上带来的方便而言,这一点是完全可以担当的。
 
  设置断点举行调试是最根本的一种调试本领,选择具有丰富断点资源的ICE仿真器,可以明显地进步调试服从。固然,条件是工程师可以或许机动利用种种断点资源。