Компиляция файлов ядра RTX с использованием компилятора GCC в Eclipse IDE

У нас есть проект в 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 (Eclipse), этот компилятор не может скомпилировать эти ключевые слова и выдает ошибки. Есть ли способ скомпилировать эти ключевые слова, определенные в keil, в компиляторе GCC?

1 ответ

do_software_interrupt, do_irq и do_fiq являются подпрограммами обработки прерываний для SWI, IRQ и FIQ соответственно. Эти функции реализованы в c с использованием атрибутов gcc. Вот фактический код c, содержащий подпрограммы для irq, fiq и программных прерываний.

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){}
}
Другие вопросы по тегам