我们在KEIL IDE中有一个LPC2148的项目,里面有RTX内核程序以及其他程序,它是由ARM CC编译的。现在我们需要将IDE从KEIL(ARM CC)更改为Eclipse(GCC)。当我们尝试在 Eclipse GCC 编译器中编译它时,它在 RTX_Config.c 和 RTX_Config.h 文件中显示错误。其他文件使用GCC编译器编译成功。但是 RTXConfig.c 文件具有编译器特定的代码,这些代码不会被 GCC 编译。有什么解决方案可以使用GCC编译器在Eclipse IDE中编译这个项目吗?作为初学者,请帮助我。提前致谢
我们有一些 keil 特定的关键字,例如中断,__swi,__task 、 __asm 已被 ARM CC (keil) 成功编译,但是当我们尝试将其移植到 GCC 编译器 (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){}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)