刚开始学习嵌入式,用的是OK6410,网上大多数资料和视频都是ARM9的,很少有ARM11的。想参考ARM9的裸机调试方式调试6410,但是在使用RVDS中的AXD调试时,一直不成功。
主要困惑是,在ARM9(2440)调试时,可以直接加入启动代码2440INIT.S,再添加自己的代码。但是在ARM11(6410)调试时,大多数资料里面的代码都不是启动代码,只是一个简单的跳转指令,跳转到自己的代码段。在查看很多调试教程贴后,发现大家都要做一个步骤,就是烧写UBOOT,同时启动时进入UBOOT状态。然后再调试代码。
个人认为这是利用UBOOT里面的bootloader来初始化CPU的。不知这样理解是否正确?由于想一步一步从底层学起,就没继续研究UBOOT的配置和下载。
但是这个想法是通过一天的调试总结出来的,发现只有将烧写了superboot.bin的SD插入到板卡上,同时选择SD启动,AXD才能正常打开并进入调试界面。否则,AXD会一直开在Load Image阶段。如果选择Nandflash启动的话,则AXD检测不到CPU型号(即使Jlink GDB server能检测出CPU型号)。
同时想问一下,怎样才能像调试ARM9(2440)那样,添加启动代码来初始化CPU,在调试时,可以单步调试启动代码,查看启动代码的初始化过程。然后再跳转到自己的代码段(汇编或者C代码)?
原文:http://www.cnblogs.com/john199112/p/4358302.html