[ARM Linux入门与实践] ADS1.2的代码移植到RealView一些error分享

[复制链接]
5029|2
 楼主| yenz 发表于 2009-4-9 00:49 | 显示全部楼层 |阅读模式
<br />RealView&nbsp;MDK在中国推出已经有一段时间了,而且作为未来发展的趋势必将取代ADS1.2,成为工程师广泛应用的开发平台。<br />把ADS1.2的代码移植到RealView可能让初学者遇到很多error;<br />不兼容问题主要在于启动的汇编代码中加入了很多的与编译器相关的调用.下面以2440abootloader为例,只需修改原有的2440init.s部分代码就可以了,说下一些常见的问题:<br />1:error&nbsp;:&nbsp;No&nbsp;section&nbsp;matches&nbsp;selector&nbsp;–no&nbsp;section&nbsp;to&nbsp;be&nbsp;FIRST/LAST.<br />把原来的Init&nbsp;代码段名修改成RESET:<br />&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;Init,CODE,READONLY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;RESET,CODE,READONLY<br /><br />2:error&nbsp;&nbsp;Undefined&nbsp;symbol&nbsp;Main&nbsp;(referred&nbsp;from&nbsp;2440init.o).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error:&nbsp;scatter-load&nbsp;file&nbsp;declares&nbsp;no&nbsp;heap&nbsp;or&nbsp;stack&nbsp;regions&nbsp;and&nbsp;__user_initial_stackheap&nbsp;is&nbsp;not&nbsp;defined<br />&nbsp;&nbsp;&nbsp;&nbsp;一般完成上一步修改就不会出现这个error;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;如果代码中使用了main则加入部分代码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;__user_initial_stackheap<br />__user_initial_stackheap<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=&nbsp;&nbsp;Heap_Mem<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=(Stack_Mem&nbsp;+&nbsp;USR_Stack_Size)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R2,&nbsp;=&nbsp;(Heap_Mem&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Heap_Size)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;=&nbsp;Stack_Mem<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR<br /><br /><br />3:&nbsp;Undefined&nbsp;symbol&nbsp;Image$$RW$$Limit&nbsp;(referred&nbsp;from&nbsp;*.o)<br />&nbsp;&nbsp;&nbsp;Undefined&nbsp;symbol&nbsp;Im.............<br /><br />把Image$$RO$$Base,&nbsp;&nbsp;Image$$RO$$Limit,&nbsp;Image$$RW$$Base,&nbsp;&nbsp;Image$$ZI$$Base,&nbsp;Image$$ZI$$Limit<br />改成:<br />Image$$ER_ROM1$$RO$$Base,Image$$ER_ROM1$$RO$$Limit,&nbsp;Image$$RW_RAM1$$RW$$Base,Image$$RW_RAM1$$ZI$$Base,&nbsp;Image$$RW_RAM1$$ZI$$Limit<br /><br />4:error&nbsp;&nbsp;contains&nbsp;invalid&nbsp;call&nbsp;from&nbsp;'~PRES8'&nbsp;function&nbsp;to'REQ8'&nbsp;function&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;汇编文件的开头,添加“PRESERVE8”指令。<br /><br /><br />5:error:&nbsp;L6235E:&nbsp;More&nbsp;than&nbsp;one&nbsp;section&nbsp;matches&nbsp;selector&nbsp;-&nbsp;cannot&nbsp;all&nbsp;be&nbsp;FIRST/LAST.<br />&nbsp;&nbsp;&nbsp;&nbsp;建立realview工程时,不要导入realview的S3C2440.s,否则当把Init代码段名改成RESET时,会存在两个RESET段。<br />
阿南 发表于 2009-4-9 01:03 | 显示全部楼层

不错不错,谢谢楼主分享

  
gavin_li 发表于 2009-6-22 11:56 | 显示全部楼层

还在用ADS1.2

用空装RealView看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部