Есть примеры использования SWI в LPC. Это выглядит примерно следующим образом:
Объявление SWI обработчика #pragma swi_number=0x10 __swi __arm u16 SWI_Func(int a) { return 0; }
Вызов SWI_Func(1);
Одним словом работаем как с обычной функцией, только её адрес находится в специальной таблице, меняется режим работы на привилегированный, и запрещаются прерывания.
Но когда я вызываю SWI в ST911, - выполняется инструкция SWI 0x10, после чего меня выкидывает в SWI_Handler(), файла 91x_it.c из stdlib. Вообщем вместо обработки конкретной функции, у меня просто возникает SWI прерывание.
Что я делаю не так?
|