t-kernel-zh team mailing list archive
-
t-kernel-zh team
-
Mailing list archive
-
Message #00001
[Open T-Kernel] 增加ARMCC编译器支持(ARM RVCT, KEIL)
大家好,现在我们需要做 ARMCC 工具键的支持,我估计我们第一步要做的是这样吧。
把代码中所有包含 GCC 汇编的代码全部找出来,这样应该有两种地方包含汇编代码。
1. 在 C 语言里面内嵌的汇编代码
2. 汇编语言的文件
对于第 1 种情况,我们先用预编译将其隔离:
> #if (defined __GNUC__) && !(defined __SES_ARM) && !(defined __CROSSWORKS_ARM)
> Asm("...");
> #endif
这个工作建议用脚本完成之后,再用对比工具确认。
或者在未做实质性功能支持之前,改动如下定义:
include/machine.h
> #ifndef Asm
> #ifdef __GNUC__
> #define Asm __asm__ volatile
> #else
> #define Asm() do { } while(0)
> #endif
> #endif
对于第二种情况,将整个文件用预编译将其隔离,如:
lib/crt/crt0/src/sysdepend/tef_em1d/crt0.S
> #if (defined __GNUC__) && !(defined __SES_ARM) && !(defined __CROSSWORKS_ARM)
>
> #include <machine.h>
>
> #if _Csym == 0
> #define START _start
> #else
> #define START start
> #endif
>
> .text
> .global START
> .type START, function
> .balign 4
> START:
> b _C_startup
>
> #endif
然后再增加一个增加后缀为 -armct 的文件,如 crt0-armct.S 的文件,放在相同的目录下。
Makefile 的改名,编译的时候,采用的方法是,将两个支持不同编译器的文件都同时编译进
工程,当然由于预处理,实际上只会编译进一个文件。
第一步,先不作实质性的功能实现,先做好一个空的支持。
--------
Du Huanpeng
u74147@xxxxxxxxx