在Eclipse IDE中使用GCC编译器编译RTX内核文件

我们在KEIL IDE中有一个用于LPC2148的项目,其中包含RTX内核程序以及其他程序,由ARM CC编译.现在我们需要将IDE从KEIL(ARM CC)更改为
Eclipse(GCC).当我们尝试在Eclipse GCC Compiler中编译它时,它在RTX_Config.c和RTX_Config.h文件中显示错误.使用GCC编译器成功编译其他文件.但是RTXConfig.c文件具有编译器特定的代码,这些代码不是由GCC编译的.有没有解决方案在Eclipse IDE中使用GCC编译器编译这个项目?作为初学者,请帮助我.提前致谢

我们有一些keil特定的关键字,如irq,__swi,__ task,__ asm,由ARM CC(keil)成功编译,但是当我们尝试将其移植到GCC Compiler(Eclipse)时,此编译器无法编译这些关键字并显示错误.
有没有办法在GCC编译器中编译这些特定于keil的关键字?

最佳答案 do_software_interrupt,do_irq和do_fiq分别是SWI,IRQ和FIQ的中断服务程序.这些函数使用gcc的属性特性在c中实现.这是包含irq,fiq和软件中断例程的实际c代码.

entry.c

void __attribute__((interrupt("IRQ"))) do_irq()
{
    //your irq service code goes here
}

void __attribute__((interrupt("FIQ"))) do_fiq()
{
    //your fiq service code goes here
}

void __attribute__((interrupt("SWI"))) do_software_interrupt()
{
    volatile unsigned int int_num;
    asm("LDR r0, [lr, #-4]");
    asm("BIC r0, #0xFF000000");
    asm("MOV %0, r0":"=r"(int_num):);
    //based on int_num, you can determine which system call is called
}

void c_start() {
    asm volatile ("SVC 0x5");
    while(1){}
}
点赞