Цитата(Muxa @ Aug 5 2005, 06:50)
Друзья. раз уж разговор о версии 4.30A
мне показалось, что есть баг в обработке FIQ
несмотря на модификаторы __fiq __arm void fiq_handler( bla-bla-bla...
он упорно генерит код для регистров irq, а не fiq
в моем случае в теле обработчика изменялся r8, а не r8fiq
времени было мало. я так и не понял, кто глючит, c-spay или сам компилятор
короче, FIQ я так и не запустил... ограничился векторными IRQ
кто сталкивался?
Может я ошибаюсь, но мне кажется, что компилятор тут не причем. То, будут ли использоваться FIQ регистры, зависит от источника прерывания - FIQ или IRQ.
Другой вариант, что в низкоуровневом обработчике прерываний меняется mode на User/Svc, чтоб пользоваться обычным стеком, так как FIQ очень мал (12 байт).
Посмотрел у себя, да, в стандартном Cstartup.s79 есть:
FIQ_Handler_Entry:
;- Switch in SVC/User Mode to allow User Stack access for C code
; because the FIQ is not yet acknowledged
Вообще, советую FIQ обработчики писать на ассемблере. Иначе толку от них никакого.