gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:22:02 25 4
gpt4 key购买 nike

我们在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 特定的关键字,例如 irq 、 __swi 、 __task 、 __asm ,这些关键字已被 ARM CC (keil) 成功编译,但是当我们尝试将其移植到 GCC 编译器 (Eclipse) 时,该编译器无法编译这些关键字并显示错误。有没有办法在GCC编译器中编译这些keil特定关键字?

最佳答案

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

条目.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){}
}

关于eclipse - 在 Eclipse IDE 中使用 GCC 编译器编译 RTX 内核文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com