我们有一个由ARM LPC2148编译的带有RTX内核程序的KEIL IDE项目,我们需要将它从KEIL(ARM CC)改为Eclipse(GCC)。当我们试图在Eclipse编译器中编译它时,它显示了RTX_Config.c和RTX_Config.h文件中的错误。其他文件使用GCC编译器编译成功。但是RTXConfig.c文件有编译器特定的代码,这些代码不是GCC编译的。是否有使用GCC编译器在Eclipse中编译此项目的解决方案?作为初学者,请帮助我解决这个问题。提前感谢
irq、__swi、__task、__asm等特定于keil的关键字由ARM CC (keil)成功编译,但当我们试图将其移植到GCC编译器(Eclipse)时,该编译器无法编译这些关键字并显示错误。有没有办法在GCC编译器中编译这些keil的关键词?
发布于 2015-09-18 06:10:40
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){}
}https://stackoverflow.com/questions/13231221
复制相似问题