← Back to team overview

t-kernel-zh team mailing list archive

[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