初步探讨arm调试技术

初步探讨arm调试技术

ID:19373890

大小:32.50 KB

页数:8页

时间:2018-10-01

初步探讨arm调试技术_第1页
初步探讨arm调试技术_第2页
初步探讨arm调试技术_第3页
初步探讨arm调试技术_第4页
初步探讨arm调试技术_第5页
资源描述:

《初步探讨arm调试技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、初步探讨ARM调试技术初步探讨ARM调试技术字号:小中大打印发布:2008-12-1402:12作者:webmaster来源:本站原创查看:312次自从深入到bootloader的开发中,遇到很多困难。而这些困难,大都是因为基础技术储备不足导致的。有时候也会后悔,本科的时候没有努力学习。其实静下心来想一下,根本原因并不在于此。我想,主要是因为自己并没有确定的方向,只是满足于课程安排内容的掌握。没有目标,或者目标较低,自然前进的动力也就有限,很多的时间也就浪费掉了。而现在算是有了喜欢的方向,有了比较高的目标,所以觉得时间太少,需要学习的东西太多了。另外一个原因,嵌入式系统本来就是一个多学科

2、交叉的方向,要求的基础比较高。没有2到3年的技术储备期,是很难真正成长起来的,在这个过程中,如果有人指导,或者经过大的项目锻炼,成长得会更快一些。但是,现在没有人指导,只能自己摸索,心理上也不要老是依赖外界,最主要的还是要靠自己的努力。经过这么长时间的努力,虽然基础还是比较薄弱,但是已经进步了很多了。后面的路会越走越坎坷,因为技术上越来越深入,一个人做终究还是吃力。不过不要紧,尽自己的最大努力,做到最大限度的提升。毛德操的书教导了我几个学习方法:一是从历史的角度去探讨技术;二是首先从理论上建立宏观的概念;三是如果要深入那就要进行场景分析。在实践中,这三个都是非常有帮助的。因为嵌入式设计的

3、面太广,不可能所有都深入去学,要有自己的定位。在这个定位的基础上,与之相关的理论基础要利用前两个方法去探讨,开阔自己的技术视野,对定位的核心则要同时采用三个方法,尽可能的去深入分析,以求精通。我的定位还是基于ARM+Linux的系统软件开发,偏重于底层。bootloader算是第一个重点,基于Linux的驱动开发是第二个重点。这两个都是嵌入式系统核心MCU相关,打牢了基础之后可以考虑向上层发展。迟早需要跨越这个阶段,没什么捷径,努力攀登吧。--------------------------------------在bootloader的深入学习中,深感调试的重要性。毛德操书中曾提过,在

4、软件开发的“生命周期”中,程序调试(debug)以及调试手段的重要性是“怎么强调也不为过”的。诚然,尤其是在bootloader这样的底层软件开发中,调试能起到的作用就更为突出了。下面进行具体分析。一、最简单的调试方法---状态灯一般地,在ARM开发板上总会留几个Led灯,在开发bootloader或者学习不带OS的程序编写时,就要充分利用这几个Led灯了。也就是说,把Led灯作为状态灯。如果有n个可以自由支配的Led灯,那么可以表达2^n个状态。比如,现在的EDUKIT-III实验箱上,有四个led,有GPF[7:4]来控制,低电平点亮,高电平熄灭,电路就不必画了,最简单的部分。在写l

5、ed灯的驱动时,不妨采用查表法,把led的状态做成一个表,这样在表达的时候要方便的多。这部分实验在前面已经做过,ARM汇编和C版本都有,不再详述。下面主要谈几点方法:·把流程按照功能分为几块,在每块的结束放一个状态灯。这样通过状态灯可以显示到了第几个功能块,一般要逐块测试,放状态灯后,加个死循环。·利用条件判断语句来进行逻辑测试。比如有一个寄存器状态,假设为register1,正常应该是value1,那么就可以如下判断:if(register1==value1){led_state1;/设置灯状态1/}else{led_state2;/设置灯状态2/}while(1){;}还有很多其他方

6、法,不过核心还是靠自己的逻辑分析。二、打印信息,辅助调试这种方法在PC的程序调试中也比较常用。比如熟悉的printf,在Linux内核的printk,不过这些都是打印到终端上。在嵌入式系统中则一般是没有终端的,特别是在bootloader阶段,就是“裸机”啊。不过可以借助于这种思想,利用串口来实现打印信息(当然,得有串口支持了。现在ARM一般都会有UART外设,而且很常用的手段就是把一个rs232串口作为debug口)。在bootloader阶段,可以利用状态灯法先简单的实现一个串口驱动程序,可以采用简单的实现方式,只实现查询发送就可以了。这样,就可以需要了解的信息,通过debug口来输

7、出到相应的串口调试助手上。根据这些信息,来确定程序问题所在,从而尽快排除故障。这种方式就是串口作为底层来实现的printf,在ARM中应用比较广泛。在C语言中,可以通过一个调试开关开控制发行版/调试版,如下所示:#defineDEBUG//#undefDEBUG#ifdefDEBUGuart_printf(”debuginfo”);#endif三现代调试技术调试的基础是检测,而检测有“无损(non-intrusive)”和“无损

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。