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段。
|