历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2020年10月28日 | 专家浅谈ARM仿真器中的断点资源

2020-10-28 来源:elecfans

  目前,越来越多的嵌入式开发公司和工程师开始采用JTAG方式的ICE仿真器来进行程序的调试工作。传统的全仿真方式(Full ICE)正在逐渐被使用灵活、成本低廉的JTAG仿真方式所取代。


  JTAG仿真器目前可以满足嵌入式程序调试的所有基本要求,例如:断点设置、单步调试、内存编辑、变量、寄存器观测等。(如图1所示)

  
图 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所示)

  

图 2  横河公司的最新产品advicePRO

  在FlashROM上设置软件断点的原理与在RAM上设置软断点类似,也是在设定的断点处用特征码替换原有代码,通过识别特征码使断点事件发生。不同的是,在FlashROM上设置软件断点需要对Flash进行擦写操作,这就需要仿真器能够有Flash编程功能,并且能够在尽可能短的时间内完成特征码的写入。完成这一系列的读写操作,就可使在FlashROM上调试代码的工程师获得更充裕的断点资源,从而大大提高了开发效率。


  但是,由于对Flash进行擦写需要一定的时间,所以在执行到Flash断点的时候会感觉到有一个停顿的时间。虽然这一点比RAM上的软件断点要差些,但是相对于给工程师调试工作整体上带来的便利而言,这一点是完全可以接受的。


  设置断点进行调试是最基本的一种调试手段,选择具有丰富断点资源的ICE仿真器,可以明显地提高调试效率。当然,前提是工程师能够灵活使用各种断点资源。


推荐阅读

史海拾趣

Dynex公司的发展小趣事

以下是关于Dynex公司在电子行业中的五个发展起来的相关故事,每个故事都基于事实进行描述,避免主观褒贬:

  1. 早期发展与产品专业化

Dynex公司成立于1956年,最初专注于设计和生产双极功率半导体器件。在成立初期,公司凭借其创新技术和高品质的产品,迅速在大功率半导体领域获得了良好的声誉。随着市场需求的不断增长,Dynex不断扩展产品线,包括IGBT(绝缘栅双极型晶体管)、功率组件和专用硅蓝宝石集成电路等。这些产品在输配电、传动、航空、工业自动化和控制等领域得到广泛应用,奠定了Dynex在电子行业中的基础地位。

  1. 技术突破与市场竞争

在电子行业竞争激烈的背景下,Dynex持续进行技术研发和创新。公司通过引入先进的生产技术和设备,提升产品性能和质量。同时,Dynex还注重与高校和研究机构的合作,共同开展科研项目,推动半导体技术的突破。这些努力使Dynex在市场中保持领先地位,并赢得了客户的信任和认可。

  1. 国际化战略与市场拓展

随着全球化的发展,Dynex公司意识到必须走向国际市场以获取更广阔的发展空间。因此,公司开始实施国际化战略,积极开拓海外市场。Dynex通过参加国际展会、建立海外销售网络等方式,与全球客户建立联系。同时,公司还根据不同地区的市场需求,调整产品策略和服务模式,以满足客户的多样化需求。这些努力使Dynex在国际市场上取得了显著的成绩。

  1. 收购与整合

在发展过程中,Dynex通过收购和整合其他公司来扩大业务规模和市场份额。例如,在2009年,Dynex收购了某知名半导体公司,将其纳入旗下。这次收购不仅使Dynex获得了更多的技术和产品资源,还增强了公司的竞争实力。此外,Dynex还通过与其他公司的合作和联合开发,共同推动半导体技术的进步和应用。

  1. 智能城市与区块链技术的融合

近年来,随着智能城市的快速发展和区块链技术的兴起,Dynex开始探索将半导体技术与这些领域进行融合。公司利用自身在半导体技术方面的优势,为智能城市的建设提供高效、可靠的半导体解决方案。同时,Dynex还积极研究区块链技术在医疗保健、供应链管理等领域的应用,为客户提供更加安全、便捷的服务。这些努力使Dynex在电子行业中保持了领先地位,并为公司的未来发展注入了新的动力。

General Cable公司的发展小趣事
确保YN5103的电源引脚(通常为VCC和GND)正确连接到电源和地。
依必安派特(ebmpapst)公司的发展小趣事

在实现了从贸易到制造的转变后,依必安派特并没有停止前进的步伐。在2012年,依必安派特亚太研发中心正式落户上海,开始了本土化研发之路。这一举措使得依必安派特能够更好地了解中国市场的需求和趋势,为中国客户提供更加符合其需求的产品和解决方案。同时,本土化研发也加速了依必安派特在中国市场的创新步伐,推动了公司业务的快速发展。

Gemmy Electronics Co Ltd公司的发展小趣事
对于高压电击式捕鼠器,需检查升压电路中的变压器、整流桥、滤波电容等元件是否完好。
ASC Capacitors公司的发展小趣事

ASC Capacitors始终坚持品质至上的原则。公司从原材料采购到生产工艺,再到产品出厂,每一个环节都严格把控,确保产品质量无可挑剔。此外,ASC Capacitors还建立了完善的质量检测体系,对每一批产品进行严格测试,确保产品性能达到最佳状态。正是这种对品质的执着追求,使得ASC Capacitors赢得了客户的广泛赞誉和信任。

Alpha Semiconductor公司的发展小趣事

Alpha Semiconductor位于美国加州硅谷的研发与生产基地是公司发展的重要支撑。在这里,公司拥有一流的研发团队和先进的生产设备,能够为客户提供高质量的产品和服务。硅谷作为全球科技创新的中心之一,为Alpha Semiconductor提供了丰富的技术资源和人才支持,使得公司能够不断推陈出新,保持在半导体行业的领先地位。

通过以上五个故事,我们可以看到Alpha Semiconductor公司在电子行业中的发展历程。从初创时期的代工服务起步,到后来的OEM定制产品、自主研发电源管理产品,再到高性能标准模拟和混合信号IC的制造实力,以及在美国硅谷的研发与生产基地的建立,每一个阶段都见证了公司的成长和进步。Alpha Semiconductor凭借着不断的技术创新和市场拓展,已经成为了半导体行业中的佼佼者。

问答坊 | AI 解惑

快乐知识:CPU是如何制作成的?

如果按价格/重量来计算,CPU要比黄金还贵得多。几乎所有的人都知道CPU主要是以硅为为原料制成的。而硅是地球上多得无法计数的元素了(如果我高中的化学知识没有记错硅应该是排名第二的)是什么魔力使这种最不值钱的东西变成炙手可热的宝物的呢?是 ...…

查看全部问答>

嵌入式驱动和内核开发思路

http://www.top-e.org/linux-kernel-driver-training.pdf 好的话别忘了顶一下。。。…

查看全部问答>

windows mobile添加短信的语音朗读扩展功能-如何获得短信接收信息

我这边实现了语音朗读的功能,现在需要给短信加载上这个扩展功能,即当接收到短信后,会立即语音朗读出短信的内容 问题:windows mobile下目前使用微软自带短信功能,无代码,需要自己获取接收短信消息并提取其内容播放 我这边查看资料,斟测短信 ...…

查看全部问答>

wince 6.0电池驱动问题

客户提出电池状态反应太慢(指充电器插拔“控制面板->电源”下的状态变化): 插入充电器显示为“正在充电”,拔出充电器显示为“主电池”,充电完成显示“外部”。 因为上层是调用驱动的BatteryPDDGetStatus函数去获得状态结构体,所以这部分驱 ...…

查看全部问答>

2410能通过dma把数据从dreq存储到usb host吗?

我菜鸟,2410通过dma从外部芯片fifo中取得数据 因为是裸奔,没操作系统,所以网卡估计用不上了,原还打算通过网卡传输出去的。。。 我想能不能插个u盘,然后arm控制dma将数据从外部芯片fifo传输到u盘里?或者sdram随便某个地方? 谢谢啊qq;6425 ...…

查看全部问答>

关于底层操作函数

*PBODR(vxImmrGet()) &= 0xfcff; *PBPAR(vxImmrGet()) &= 0xfffffcff; *PBDIR(vxImmrGet()) |= 0x00000300; SCCR(); 上面这些函数是什么意思, 网上也没有搜到! 哪里有关于这类函数的说明的文档? 谢谢…

查看全部问答>

这个分频计程序为什么错啦?

--将1khz的标准信号std_clk分成周期为2秒的占空比为50%的CE输出LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY freq_division_1 IS        PORT(std_clk,reset:IN STD_LOGIC;            &nb ...…

查看全部问答>

选型

本帖最后由 dontium 于 2015-1-23 13:35 编辑 现愈做10路AD采集,40路PWM输出的应用。采用 DSP+FPGA的方案是否可行。能否推荐一下其他的方案。谢谢。 …

查看全部问答>

有没有人用过这个芯片啊,m62429

用stm32怎样去用这个芯片,求指导…

查看全部问答>

求认同!示波器探头使用注意事项

有大牛总结示波器探头注意事项,, 经常会遇到一些朋友和我抱怨示波器的探头怎么这么爱坏啊?有没有什么结实一点的,好一点的探头啊?不是道大家是否也又遇到平时探头经常损坏的问题?其实,探头本身是属于耗材的,一般探头的损坏来源于两个地方: ...…

查看全部问答>