登录站点

用户名

密码

嵌入式开发的单步调试技术[ 2007-4-16 20:00:00 | By: caopengly ]

已有 1451 次阅读  2009-09-24 10:14   标签单步调  caopengly  嵌入式  技术  开发 
 

做过嵌入式开发的人都知道,在ADS1.2或者SDT2.5下面,单步调试是很简单的,但是gnu/uClinux下就要麻烦一些。

下载了一个u-boot.1.1.4,按照u-boot的架构,在smdk2410的基础上,新建工程,并用cygwin编译成功。

调试方面麻烦一些,手头上有一个仿真器TechorICE Emulator,但是调试arm-elf-gcc编译出来的文件把握不是很大。

找到u-boot-1.1.4目录下面,有3个文件,一个是u-boot,一个是u-boot.srec,一个是u-boot.bin。其中u-boot是带调试信息的elf格式文件。就是这个了!

打开axd debugger (ADS1.2带的),连接Emulator,用Load Image,装载u-boot。u-boot文件装载到RAM里面成功。

接下来可以单步运行。

一开始是gnu汇编文件(start.S),ARMCC的汇编语法与gnu的不一样,所以不能显示出源代码。

进入了C函数,可以进入源代码调试,不过先要设定源代码的目录。在adx Debugger的Options --> Source Path,将源代码的几个目录都一一加入。就可以做C语言的单步调试了。^_^

也许有人问:调试信息也包含了这些信息啊,为什么还要设定源代码的目录呢?因为我是在cygwin环境下编译的,在该环境中,u-boot-1.1.4的全路径是“/arm/u-boot-1.1.4/”,而不是windows下的目录“c:\cygwin\arm\u-boot-1.1.4”,所以调试信息里的路径全是“/arm/u-boot-1.1.4/”,可以看看的depend的信息。

设定源代码的目录非常重要,否则就实现不了源代码的单步调试了。^_^

用cygwin作为开发环境,也就是这个道理。基本上都是在Windows下编译,修改,调试。效率比linux环境下要高一些。(当然这只是我的个人见解 ^__^)

我跟一个写uClinux的同事讨论了蛮久,如何源代码级的调试uClinux。用上面的方法是可以调试kernel的,但是调试应用程序(app)好像不行(他说不行)。如果哪位大大实现了,请务必告诉我,谢谢了!

 简单总结一下:
1)产生带调试信息的elf格式的文件。
2)用ADS1.2带的调试器Debugger装载这个文件。
3)修改源代码的目录。
4)完成。 

上一篇: [FPGA与EDA]转帖:我们的CPU [ 2007-9-11 11:48:00 | By: caopengly ] 下一篇: [转]嵌入式系统 Boot Loader 技术内幕[ 2007-4-15 16:03:00 | By: caopengly ]

分享 举报