打印
[ARM Linux入门与实践]

ADS1.2的代码移植到RealView一些error分享

[复制链接]
3621|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yenz|  楼主 | 2009-4-9 00:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

RealView MDK在中国推出已经有一段时间了,而且作为未来发展的趋势必将取代ADS1.2,成为工程师广泛应用的开发平台。
把ADS1.2的代码移植到RealView可能让初学者遇到很多error;
不兼容问题主要在于启动的汇编代码中加入了很多的与编译器相关的调用.下面以2440abootloader为例,只需修改原有的2440init.s部分代码就可以了,说下一些常见的问题:
1:error : No section matches selector –no section to be FIRST/LAST.
把原来的Init 代码段名修改成RESET:
    ;     AREA  Init,CODE,READONLY
         AREA  RESET,CODE,READONLY

2:error  Undefined symbol Main (referred from 2440init.o).
      error: scatter-load file declares no heap or stack regions and __user_initial_stackheap is not defined
    一般完成上一步修改就不会出现这个error;

    如果代码中使用了main则加入部分代码
                EXPORT  __user_initial_stackheap
__user_initial_stackheap

                LDR     R0, =  Heap_Mem
                LDR     R1, =(Stack_Mem + USR_Stack_Size)
                LDR     R2, = (Heap_Mem +      Heap_Size)
                LDR     R3, = Stack_Mem
                BX      LR


3: Undefined symbol Image$$RW$$Limit (referred from *.o)
   Undefined symbol Im.............

把Image$$RO$$Base,  Image$$RO$$Limit, Image$$RW$$Base,  Image$$ZI$$Base, Image$$ZI$$Limit
改成:
Image$$ER_ROM1$$RO$$Base,Image$$ER_ROM1$$RO$$Limit, Image$$RW_RAM1$$RW$$Base,Image$$RW_RAM1$$ZI$$Base, Image$$RW_RAM1$$ZI$$Limit

4:error  contains invalid call from '~PRES8' function to'REQ8' function *
     汇编文件的开头,添加“PRESERVE8”指令。


5:error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
    建立realview工程时,不要导入realview的S3C2440.s,否则当把Init代码段名改成RESET时,会存在两个RESET段。

相关帖子

沙发
阿南| | 2009-4-9 01:03 | 只看该作者

不错不错,谢谢楼主分享

使用特权

评论回复
板凳
gavin_li| | 2009-6-22 11:56 | 只看该作者

还在用ADS1.2

用空装RealView看看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝