阅读:1603回复:3
请教在DEBUG和RELEASE下build EBOOT的区别
我用的是SMDK2440,在release下build出来的EBOOT可以正常运行,可是,相同设置下在DEBUG下build出来的EBOOT就是undefined instruction,或者在EBOOT下完之后系统就重启了。不知哪位高手可以帮忙推测一下原因呐? 多谢!
|
|
论坛版主
|
沙发#
发布于:2004-11-05 13:29
这种情况检查一下两个地方:
1.你的堆栈指针的设置(在startup里面),debug的时候代码没有优化,堆栈操作不太一样,这个问题主要出在startup调用c的代码的时候可能出问题,不过具体是怎么回事需要你自己定位错误点后分析。 2.对内部寄存器访问,注意smdk2440的片内的那些必须按32bit对齐访问的寄存器,用C写的代码里面对这些寄存器访问的时候被编译出来的代码是不是一条32bit访问代码 另外你先确定出问题的地方吧,通过从debug port输出信息慢慢定位到出问题的一个较小范围,慢慢分析 |
|
板凳#
发布于:2004-11-05 16:47
谢谢老大。有的朋友说,这是因为厂家发布的就是RELEASE版的,所以编译不过,而且编DEBUG的也没有意义,因为,这是在CE起来之前跑的东东,本来也跟不了的。
不过俺觉得,这个差异还是蛮有意思的,我试试看按老大的提示跟一跟原因。有结果再来告诉大家:) |
|
论坛版主
|
地板#
发布于:2004-11-05 17:14
要得:)
特别注意SDRAM初始化前,如果调用C写的代码的时候有堆栈操作就要出问题。 这个编译器有时候把32bit寄存器访问的C代码编译成4个8位访问。 |
|