共2条
1/1 1 跳转至页
2410 请教2410启动代码的问题
问
正在调试2410的启动代码三星的2410init.s,RO base设为0x40000000,编译后始终无法正常运行。在axd的反编译窗口发现0x40000000处是一句main函数的返回语句 mov pc,r14,0x40000004处才是 b ResetHandler,汇编执行到初始化堆栈的地方 bl InitStacks一下跳转到0x40000000处是main函数的返回语句 mov pc,r14,非常不解,请DX支招。
答 1: RE这个就不好说了:
1:你的编译环境设置好没有,ARM LINKER里面的设置你最好再查下;
2:bl InitStacks是调用程序,其下应该是继续bl,然后b _main,会跳转你该去查下程序有没有写错. 答 2: 有进展谢谢sassos,改了ARM LINKER里面的设置。编译出来正常一点了,0x40000000是b ResetHandler了,但执行到bl InitStacks处停住了,AXD提示 DBE Warning 00256: Execution stopped, because of an unknown breakpoint (this indicates an internal error).
各位继续帮忙啊
答 3: 呵呵,是查生指令异常啦!看看你初始化对栈地方对不对哦? 答 4: RE查下程序里面你的初始化堆栈 答 5: 我是单步执行的执行bl InitStacks后就停住了根本没有跳到InitStacks子程序里,我调试的时候板上的pPCBoot已经启动了,会有影响吗? 答 6: REbl是调用,在调试时你不会看到执行initstack里面内容,你应该看到
bl InitStack
bl TargetInit
b _main
顺序往下执行
看下你的initstack程序,有没有保存程序返回地址,具体该这样:
InitStack
MOV RO,LR
MOV CPSR_C,#0XD3
......
......
......
MOV PC,R0
然后下面再分配堆栈空间
查看下你的堆栈空间分配是否太小 答 7: 谢谢各位是jtag代理软件的问题,换成banyan就好了 答 8: 好好看看datasheet吧2410 ro是0x30000000 比如你sdram是64M的 那最高也就是0x34000000
当然不对了 答 9: 直接搜索这方面的文章看看,
答 1: RE这个就不好说了:
1:你的编译环境设置好没有,ARM LINKER里面的设置你最好再查下;
2:bl InitStacks是调用程序,其下应该是继续bl,然后b _main,会跳转你该去查下程序有没有写错. 答 2: 有进展谢谢sassos,改了ARM LINKER里面的设置。编译出来正常一点了,0x40000000是b ResetHandler了,但执行到bl InitStacks处停住了,AXD提示 DBE Warning 00256: Execution stopped, because of an unknown breakpoint (this indicates an internal error).
各位继续帮忙啊
答 3: 呵呵,是查生指令异常啦!看看你初始化对栈地方对不对哦? 答 4: RE查下程序里面你的初始化堆栈 答 5: 我是单步执行的执行bl InitStacks后就停住了根本没有跳到InitStacks子程序里,我调试的时候板上的pPCBoot已经启动了,会有影响吗? 答 6: REbl是调用,在调试时你不会看到执行initstack里面内容,你应该看到
bl InitStack
bl TargetInit
b _main
顺序往下执行
看下你的initstack程序,有没有保存程序返回地址,具体该这样:
InitStack
MOV RO,LR
MOV CPSR_C,#0XD3
......
......
......
MOV PC,R0
然后下面再分配堆栈空间
查看下你的堆栈空间分配是否太小 答 7: 谢谢各位是jtag代理软件的问题,换成banyan就好了 答 8: 好好看看datasheet吧2410 ro是0x30000000 比如你sdram是64M的 那最高也就是0x34000000
当然不对了 答 9: 直接搜索这方面的文章看看,
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |