Компиляция файлов ядра 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){}
}