Eclipse在线调试ARM11——Tiny6410+OpenJTAG
Eclipse配置完成后我们来创建一个工程,首先是启动Eclipse,Workspace可以根据自己的需要选择,接下进行工程创建,File->New->C Project,在Project Name中填写工程名称,可以根据自己的项目需求填写,这里我写为leds,在下方的Project type选择框中选择Makefile project-> 新建文件start.S(File->New-> 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烧写程序。
Eclipse在线调试ARM11Tiny6410OpenJTA 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)