我们在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){}
}