- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PEEDI调试uClinux核和应用程序带GNUgdb案例.doc
PEEDI JTAG仿真器调试uClinux核和应用程序带GNU gdb/insight
关键词:PEEDI JTAG,调试uClinux核,目标设置,中断点;
介绍:
这是一篇关于用PEEDI JTAG仿真器调试uClinux核和应用程序带GNU gdb/insight的应用介绍。
现在最流行的32位的高速ARM是基于允许Linux进入嵌入式装置的微控装置。这就是需要调试核以及应用变得重要的原因。尽管Linux是一个真正多进程的操作系统,它利用一个存储管理单元(MMU)来给每个过程一个单独的存储空间。但是低端的ARM核(ARM7)不具有存储管理单元,因此Linux的常规性性没有被应用。这里讲述的是uClinux,一种定向于微存储管理单元的CPU的Linux系统。尽管没有存储管理单元被应用,没有实际的存储空间是可利用的。这就意味着所有的过程都共享同样的存储空间,因而每个处理过程,每次都是下载到不同基地址,而这在被应用的时候都不知道。
为什么通过JTAG调试?
通过JTAG界面进行调试不需要监测器,像程序在目标上运行,因此是这是免打扰的,而且不占用目标资源。
平台和工具:
为了达到这篇应用介绍的目的,我会运用到:
uClinux 核v2.4
GNU工具链——gcc v2.95,gdb/insight v6.5.50
目标CPU——Atmel AT91C140
JTAG仿真器——PEEDI
备注:不要在v6.3前使用GNU gdb/Insight,这会破坏工作支持。
设置PEEDI
除了所有在目标配置文件中共同的设置之外,有另一个参数需要被设置——在uClinux核中init_task_union结构的基地址。这个结构包含所有当前在目标文件内运行的程序的列表。因此PEEDI可以显示它们。这个地址在运行uClinux核被得知,因为每次这个核被装载时都用同样的地址。它可能会从用nm gcc工具中获得,比如:
这里linux是uClinux elf格式的程序。现在我们可以在目标配置文件中设置地址了:
目标设置
三幅不同的程序已经在目标中程式化
——uboot——这是引导载入器
——linux核
——ROM文件系统程序
在简单的程序执行中,配置文件中的每段程序被描述成不同的FLASH部分,这种PEEDI闪存设置命令方式可被用作它们之间的转换。
在我们选择好所用的核之后我们可以执行程序了,然后选择和执行另外两段程序:
我们已经完成目标的执行,现在我们可以设置其它起始部分,这不需要初始化目标,因为这是引导载入器完成的,只有设置Embeddedlce存储器在软件断点模式下断开:
调试核
在调试核时你需要用调试信息编辑它:
运行make config 或者make menuconfig
确保Custtomize kernel Setting
确保Customize Vendor/User Settings
在核设置时,开启Full Symbolic/Source debugging support
在用户设置时,开启build debugable libraries 和build debugable applications.
保持整洁,保持数据执行保护。
备注:如果你只想调试uClinux应用程序而不包括核,那么不需要在调试信息时编译核。
我们用以下.gdbinit文件来更简便的调试:
在核已经建立之后你可以开始载入gdb/insight。
在.gdbinit文件之后,gdb会自动地连接PEEDI,然后我们可以载入程序。
开始uClinux核只需键入:
这时你已经进入了核,而且已经备份了。现在你可以断开调试,增加断点来调试你的编程。
调试应用
调试uClinux应用时,你需要首先准备这些应用:在应用的开始加入一个软件断点模式,这将会让程序在它开启时停在那儿。
再次编译应用,让ROMFS并编译它使得符合目标。
从闪存或者RAM中引导uClinux核。
你可以从你的系列控制台或者远程登录开始应用。
目标会在运行到(”.long 0xDFFFDFFF)行时停止。
gdb命令”info threads”给你.text,.data和.bss系列开始的信息,这对载入符号信息时是必要的。
Spar是我们关注的。现在我们知道程序的地址,我们需要而且我们可以载入需要被执行的带有正确的信息地址的文件:
(peedi)add-symbol-file spar.gdb 0xF64040-s.data 0xF4A004-s.bss 0xF53104
add symbol table from file”spar.gdb”at
.text_addr=0x64040
.data_addr=0xf4a004
.bss_addr=0xf53104
(y or n)y
Readi
文档评论(0)