jtag调试 c语言,ARM JTAG调试常见问题

这篇文章总结了刚接触ARM的网友们的常见问题,希望对快速掌握ARM调试有帮助。

1 - 检测不到目标系统

调试前,请把目标板连接好,然后用调试软件检测目标系统。如果检测不到目标系统,请做

以下的检查。

A - 有些芯片是可以加密的,加密后JTAG接口就自动被禁用掉了;

B - 确定你的连接是正确的;

C - 确定你使用的仿真器是被调试软件支持的

D - 对WIGGLER而言,因为没有固定的电路图,所以需要在软件里做相应的设置;

E - 对LPC2000系列而言,RTCK管脚一般是用来控制是否使能JTAG接口的,请查阅数据手册;

F - 如果你用的芯片比较特殊,例如STR91X,因为内部扫描链是串接的,请设置好TAP,以让仿真器知道扫描链的长度;

2 - 程序下载不正确,程序跑飞一般的用户,刚开始调试的时候,编译好程序,就直接点击调试。但结果发现调试根本没有按照预期的进行。

发生这种问题一个最常见的原因是程序根本没有正确下载到目标系统中去。

对SDRAM而言,上电后一般都是不可以使用的,需要进行相应的配置才可以使用。所以如果是在SDRAM里进行调试,请先对SDRAM进行配置,或者

确定SDRAM已经初始化好了。如果是内部SRAM,一般来说,可以直接使用。所以,做一般的测试,最简单的办法是使用片内SRAM。

在调试的时候,最好是自己通过内存观察窗口判断一下,程序是否是下载到期望的地址去了,下载是否正确。以免出现调试

跑飞的问题。

3 - 软件断点和硬件断点的区别和数量限制所有的ARM7/ARM9芯片,内部有2个断点单元。断点单元可以用于设置硬件断点或是软件断点。

先说说硬件断点和软件断点的区别。硬件断点是通过监测地址来触发断点的。所以,硬件断点可以设置在任何地方,不管是FLASH,ROM还是RAM

,只要给定地址就可以了。而软件断点是通过监测特定的指令来触发断点的。在某个地址设置软件断点的时候,仿真器会将这个地址的数据/指

令替换成一个特殊格式的指令。断点单元通过监测这个特殊格式的指令来触发断点。

因为需要执行替换操作,所以软件断点只能设置在RAM里面。如果断点单元设置成监测某个地址,那一个断点单元只能监测一个地址,所以只能

设置2个硬件断点。如果断点单元设置成监测某个固定格式的指令,那一个断点单元可以支持数量没有限制的软件断点。因为设置软件断点的时

候只需要把要说着断点的位置的数据替换成被监测的固定格式的指令就可以了。这就是为什么大家经常看到说支持2个硬件断点和数目不限的软

件断点。但这里还是要提醒以下,如果2个断点单元都用于硬件断点,那用户就不可以设置软件断点了。

4 - 在FLASH内进行调试在FLASH进行调试,本质上来说,和在SDRAM/SRAM里调试是一样的。区别是,FLASH是只读的,对FLASH进行写操作的时

候,需要特别的命令。如果IDE支持直接将程序烧写到FLASH进行调试,那调试就会和在RAM里差不多。如果IDE不支持自动下载,可以先通过烧

写软件将要调试的程序烧写到FLASH里面,然后在进行调试。在FLASH和RAM里面进行调试的另外一个区别在与可使用的断点数量。因为FLASH是

只读的,所以只能使用硬件断点,所以最多只能使用2个断点。很多时候,单步运行也需要一个断点来实现,所以,用户只能使用一个断点。清

楚了这点,碰到提示说没有断点可以使用了,不能设置断点,或者不能单步运行的时候,就知道是怎么回事情了。

5 - 软件断点被覆盖

前面我们提到,软件断点是通过替换指令来实现的。这就存在一个可能,设置好的软件断点被覆盖掉了。特别是自拷贝程序,仿真器在拷贝前

在某个地址设置了一个软件断点。然后执行拷操作,这样的结果是设置断点的位置的值由于自拷贝而发生了改变,由于新的值并不是被监测

的特殊指令,所以这个断点就会失效。造成在这个位置程序不能停止的情况。这样的情况相对来说比较少,这里只是提醒一下,希望对碰到类

似情况的朋友有帮助。

6 - 反汇编调试

在调试的时候,一般看的都是源文件,汇编或C语言。如果调试的时候发现运行与期望的不一或是跑飞,可以看看反汇编,单不运行几步,然后

通过观察寄存器和内存来判断每条指令的运行是否正确。

7 - 调试的时候,注意内存观察窗口对调试的影响在调试的时候,如果内存观察窗口打开了,每次目标板被停止后,DEBUGGER都会通过调试代

理取内存,更新内存观察窗口的值。一般情况下,这样做都不会带来什么影响。但有个特殊情况必须要注意。在某些情况下,调试目标的某些

寄存器有特别的地方。例如,有些寄存器,只能读取一次,读取后它们的值就会变化。在这种情况下,因为更新内存观察窗口的值的时候会执

行一次读操作,所以程序重新运行的时候,在读取寄存器的值的时候,该值已经改变了,程序运行出现不期望的情况。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。 DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。 FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。 而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!! 值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。 写的多的是什么?“嵌入式LINUX” 到这相信大家看出来了吧,需要的是硬件中的软件。 二 ARM是硬件还是软件 很难说,ARM是硬件,LINUX是软件。 ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。 实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。 在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。 所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三 要不要买开发板 买哪家 我的答案是“在你个人的学习方*”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。 1 买 买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。 另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。 总体下来 元件+LCD屏+PCB=11XX块!够2410的了。 再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。 2 做 自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块 、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。 当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。 再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。 网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!!牛人! 但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。 3 买哪家 个人感觉分3类吧 1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。 但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实*感动!你看人家那代码写的。 2)感觉立宇泰的44B0不错 硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的 好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。 四 要不要有51 AVR等单片机基础 有更好,但没有也无所谓。 两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧? 但是做这个之前我特意找了ZLG

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值