Вчера сел переносить efsl с gcc на iar
потребность возникла по следующим причинам:
1. Куплена отладочная плата с внутрисхемным эмулятором J-LINK под iar
2. Под IAR больше рабочих примеров
3. Лекарство под RDI так и не было найдено (не очень то и хотелось)
4. Кроме efsl планируется ввести в проект еще кучу всего разного
5. С UCFS разобраться как я понял гораздо сложнее
Скачал EFSL для AT91SAM7S64 http://www.siwawi.arubi.uni-kl.de/avr_proj...0404_public.zip
Ну так вот в принципе все файлы легли кроме
двух:
interrupt_utils.h
interrupt_utils.c
ну и как следствие:
systime.c
Как я понял причина в различной интерпретации ассемблерного
кода и макросов двумя компиляторами (если не прав поправьте меня)
Так в файле interrupt_utils.h присутствует следующая строка:
#define ISR_ENTRY() asm volatile(" sub lr, lr,#4\n" \
" stmfd sp!,{r0-r12,lr}\n" \
" mrs r1, spsr\n" \
" stmfd sp!,{r1}")
После которой компилятор затыкается
Исправление ее к виду :
#define ISR_ENTRY() asm (" sub lr, lr,#4\n" " stmfd sp!,{r0-r12,lr}\n" " mrs r1, spsr\n" " stmfd sp!,{r1}\n")
Изменяет вид ошибки но не исправляет ситуацию
Там же присутствует строка:
#define NACKEDFUNC __attribute__((naked))
Которая так же не проходит в systime.c
В interrupt_utils.c есть строка?
asm volatile (" mrs %0, cpsr" : "=r" (retval) : /* no inputs */ );
Может я чего то не понимаю Может перенести просто невозможно
В ассемблере я не специалист как впрочем и в С
Если не трудно помогите перевести в IAR
Спасибо!!!