新闻中心

EEPW首页>嵌入式系统>设计应用> Eclipse在线调试ARM11——Tiny6410+OpenJTAG

Eclipse在线调试ARM11——Tiny6410+OpenJTAG

作者: 时间:2016-11-28 来源:网络 收藏

其中“D:/Working/arm/init/init.bin”要根据您的具体情况进行改写。

本文引用地址://m.amcfsurvey.com/article/201611/322800.htm

第二种跟第一种的不同在于第二种情况需要将init.bin文件烧写到Steppingtone来初始化Tiny6410的DDR。init.bin及其工程可以在这里下载,适用于所有支持OpenJTAG的S3C6410开发板:

另外,配置好这些后还需要配置调试环境的Commands选项,对于第一种情况,可以如下填写:

对于第二种情况,则可以这样写:

第一个里面写有reset和halt的原因是锁相环不能重复初始化,如果程序中对锁相环进行了设置reset之后就会失效,这样每次调试都会执行reset,后一次的设置就不会受前一次的影响。对于第二中情况里面没有加reset是因为代码要写到DDR中进行调试,reset之后init.bin的初始化作用失效,调试时无法烧写代码到DDR,进而无法进行调试。所以第二种情况下被调试的代码应该判断自己的位置,可以模拟u-boot,检测到代码在DDR中运行时跳过lowlevel_init。

通过上面这些分析,我们应该了解了OpenJTAG的调试原理,现在总结一下,使用OpenJTAG在线调试Tiny6410时应该按照以下步骤进行:

(1)启动OpenOCD,连接OpenOCD到开发板,然后在telnet中执行halt,将目标机挂起。

注意:默认状态下,OpenOCD自带配置文件的JTAG时钟频率是6000,对于某些开发板来说这个工作频率太高,经过测试Tiny6410的JTAG时钟频率为1000时最佳。

(2)创建Eclipse,编码代码并编译。

注意:代码编译时应该启用-g选项,这样生成的ELF文件才会带有调试信息,如果不加-g则没有调试信息,无法调试。

(3)按照前面的贴图,配置Eclipse调试选项。Commands的break _start是指对_start下断点,当然可以改成其他函数。

(4)进行调试。

好了,到这里OpenJTAG调试Tiny6410的全部工作已经完成,这时你已经可以顺利的进行Tiny6410的单步调试了,起始这里讲述的调试原理适用于所有支持OpenJTAG的S3C6410开发板,所以如果调试其他开发板也可以按照以上分析进行操作,下面是单步调试的贴图,作为真相吧!

最后,提几个需要注意的问题:

(1)在编写Makefile时应该注意添加-g选项,否则elf文件中没有调试信息,无法进行调试

(2)在编写Makefile时不应使用-O优化选项,优化后的代码跟原代码失去了对应关系,调试时跳转错乱。

(3)调试uboot或者内核时需要根据具体的要求修正openjtag.cfg中的频率。

(4)OpenJTAG下载程序时应该使用OpenOCD而不应该使用oflash,如果是用oflash需要将dbgsel引脚拉高,强烈建议直接使用OpenOCD指令进行烧写。对于TQ2440或者MINI2440可以直接使用oflash烧写程序。


上一页 1 2 下一页

评论


技术专区

关闭