CoOS是个免费的面向CORTEX-M3的操作系统。我手头有个GCC版的,就想往MDK上移植。可是在汇编时出现了这个错误:CoOS\portable\GCC\port.c(69): error: #1113: Inline assembler not permitted when generating Thumb code
我在网上找了老半天,终于把这个问题搞定,就是把_ASM移到函数体外边。
__asm U8 Dec8 (U8 *data)
{
register U8 result = 0;
volatile
(
PUSH {R1}
CPSID I
LDRB R1,[%1]
SUB R1,#1
STRB R1,[%1]
CPSIE I
MOVS %0,R1
POP {R1}
:"=r"(result)
:"r"(data)
);
return (result);
}
可是又出现了以下错误
CoOS\portable\GCC\port.c(53): error: A1647E: Bad register name symbol, expected Integer register
正当我准备放弃之时,准备睡觉之前,上COOCOX网上看了下,原来有MDK移植好的。在坛里搜了下没有这方面的文章
就下来跑了一下,还真给力跑了下来。
比较一下汇编:
__asm U8 Inc8 (volatile U8 *data)
{
PUSH {R1}
CPSID I
LDRB R1,[R0]
ADDS R1,#1
STRB R1,[R0]
CPSIE I
SUBS R1,#1
MOVS R0,R1
POP {R1}
BX LR
ALIGN
}
看起来差不点,其实差老了,台上一分钟台下十年功。唉,练吧!
上照片,什么有图有真象!
上工程文件:
这个注点意,就是一定要包含C:MDK目录里的流明库所在的路径
在上OS的说明
CoOS_User_Guide_CH.pdf
(1.28 MB, 下载次数: 52)
整个工程文件打包:
LM3S8962OSMDK.rar
(770.51 KB, 下载次数: 52)
[
本帖最后由 ddllxxrr 于 2011-9-14 21:07 编辑 ]