- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用PEEDI工具调试Linux核和应用程序
关键词:调试Linux核,GNU工具链,KaRo Trition起步包,PEEDI,简单快捷;
介绍
基于微形控制器的32位高速ARM的持续流行使得Linux可以进入嵌入式装置的世界。这是需要调试它的核及应用变得重要的原因。Linux是一个多处理开发系统,它利用一个存储管理单元(MMU)给每个过程一个单独的存储空间。MMU也同样为保护每个存储单元区别于其它存储单元负责。不同过程调试间的转换,因此这里我将展示怎么调试Linux核以及应用不受干扰程序被调试。
我用到的工具
为了达到本文的目的,我将用到ARM-ELF和ARM-LINUX GNU工具链,以及带有2个配套原件Trition LP单元的KaRo Trition起步包。Trition板内带有Linux。
设置 PEEDI
除了所有在目标配置文件中共同的设置,这里必须设置两个XScal明确参数。首先是调试控制器的地址。调试控制器是一个2KB调试检测器,就像程序以定义过的虚拟地址下到CPU的微操作快速缓冲贮存区。这个地址被选择,以至于没有用户操作编码被过度写入,这保证了在用户执行编码时CPU没有命令到达。这里有另一个是调试控制器地址的限制——PEEDI的分支命令优先于CPU的重置向量,这允许了分支在+/-32MB之间波动,外向量处于0x0000_0000或者0xFFFF_0000.因此最终的调试地址可能从0x0000_0000到0x01FF_FC00,以及从0xFE00_0000到0xFFFF_FC00,与1KB(0x400)范围均衡,没有与任何用户编码重合。我个人选择地址0xFFFFF800,CPU剩余的2KB的存储空间。
在载入调试控制器后,PEEDI需要优先于CPU的重置向量来指向调试控制器的进入。由于微型指令的快速缓冲贮存区是32位长字节,PEEDI不能优先而只有重置向量可以优先于所有的八个向量。那就是PEEDI必须一直注意应用向量的原因。接下来是第二个XScal明确参数设置,指导PEEDI怎么管理外向量。这里有两个选择——设置向量的连续值,或者让PEEDI每次调试开始时都能恢复向量。每个向量可能有自己的性能设置,因此,如果我们选择连续向量,我们需要在描述有效的ARM指令时设置相应的CORE_VECTOR_XXX参数值,属于用户编码的相应向量.例如:0xE59FF018代表了”LDR pc,[pc,#18]”命令,这对于一个外向量是很普遍的。我个人的选择是第二个——让PEEDI接受每次CPU进入调试控制器后的向量。为了实现它,我会设置所有的CORE_VECTOR_XXX参数为AUTO。即使在应用编码下载时,PEEDI填满向量,这项技术工作效果都很好。有种情况是当PEEDI不能自动下载向量,即当向量运行时的应用被设置。为了在那种困难的时刻帮助PEEDI,你不得不在向量设置后和确保断开前在用户编码处设置一个断点。你可以用三种方式来完成:
设置32位写通道,观察在用户编码向量最后修正的点。
在向量被设置但是不确定处,设置硬件断点到编码点。
在资源编码,向量被设置但是不确定处增加一个软件断点“asm(“bkpt 0”)”。
在目标停止之后,你可以马上重新开始。整个过程可以轻易地在核的初始化部分自动运行,就像这样:
在开始真正的调试之前我们有一件事需要加强注意——确保没有用户编码会打扰调试控制器。尤其是提供Triton板的Linux接口打扰控制器启动,为了阻止它:
——在资源的任一处用“MCR p15,0,rd,c7,c5”代替“MCR p15,0,rd,c7,c5,1”
——在建立Linux核时,使CONFIG_XSCALE_CACHE_ERRATA(XScale快速缓冲区勘误表的工作区)不能正常运行。
现在我们准备好接上电缆,来证实我们迄今为止所完成的。在你接上PEEDI到你的调试板时,如果每件事都是正确的,你可以首先看到红灯亮,在这之后,Linux注册启动。现在你可以键入一些字符来观察Linux正常的工作,然后你可以分配PEEDI命令行界面暂停指令来停止目标,尝试键入更多的字符,没有任何东西出现。现在出现结果命令,你原先键入的字符开始出现。因此我们已经控制目标了。
调试核
为了调试核,我们需要一段ELF格式的程序,包括调试信息,即收集GCC-g附件,这段程序必须在目标中闪存。首先我们要做的是在执行核编码的时候停止目标。使用暂停命令不是一个好的办法,因为我们可能在用户进程中暂停,因此最好在核内设置一个断点或者就像我前面讲到的那样将最后的程序移到初始化部分。现在如果我们重新开始目标,在向量被核的备份编码设置后会断开。这里我们可以在载入ELF核之后在主机上开始gdb/insight。
然后连接PEEDI:
现在我们将用一个简单的步骤让g
文档评论(0)