首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Eclipse中使用GCC编译器编译RTX内核文件

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

Stack Overflow用户
提问于 2012-11-05 11:29:50
回答 1查看 1.1K关注 0票数 4

我们有一个由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的关键词?

EN

回答 1

Stack Overflow用户

发布于 2015-09-18 06:10:40

do_software_interrupt、do_irq和do_fiq分别是SWI、IRQ和FIQ的中断服务例程。这些功能是用gcc的属性特性在c语言中实现的。下面是包含irq、fiq和软件中断的例程的实际c代码。

entry.c

代码语言:javascript
复制
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){}
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13231221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档