最近在CCS4.2下写移植barebox(bootloader),但是每当需要将汇编的返回参数传到c中的临时变量里面,总是无法通过编译,例图下列代码:
u32 get_base(void)
{
u32 val = 0x0;
asm(" mov r0, pc ");
asm(" str r0, val ");
val &= 0xF0000000;
val >>= 28;
return val;
}
报错提示:
[E0001]
Undefined symbol
str r0, val
[E0001]
Address must be defined in the current section
str r0, val
[E0004]
Illegal operand
str r0, val
Assembly Errors, No Assembly Warnings
val
Errors in Source – Assembler Aborted
又比如:
void noting(void)
{
for(;;);
}
void expection_vectors(void)
{
asm(" ldr pc, =noting ");
}
请相关专家帮忙解决一下,谢谢了!
mike lee:
回复 Yaoming Qin:
在CCS下移植GCC的项目本生就是个错误,跟何况bootloader
Yaoming Qin:
回复 mike lee:
我没明白你的意思,我觉得你没有必要依赖于ccs来做移植,你能说说你的想法么
mike lee:
回复 Yaoming Qin:
主要是想利用XDS560v2调试一些底层的东西,但是发现太嘛烦,所以只有基于操作系统的开发…