Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Подскажите по прерываниям в ARM в примере Hаllow.+++
Отправлено
dshabrov (95.220.88.38) 11 марта 2011, г. 11:00
В этом примере два прерывания. Внешнее и внутреннее(интервальный таймер).
Внутреннее прерывание - функция system_int, ссылка на которую и программируется в соответствующий AIC_SVR. Написана на Си.
pAIC->AIC_SVR[AT91C_ID_SYS] = (unsigned long) system_int;
Вход в эту функцию system_int - STMDB R13!,{R0-R5,R12,R14}, выход - LDMIA R13!,{R0-R5,R12,R14}. Без переключения режимов.
Тут непонятно - почему не выполняются процедуры переключения режима. Как описано в ДШ.
Внешнее прерывание выполняется по - другому. Ссылка на ассемблерную вставку irq0_int программируется в соответствующий AIC_SVR. Эта вставка делает сохранение регистров, переключение режима как написано в ДШ.
Почему при внутреннем прерывании такой вставки не делается?? Получается что это прерывание выполняется в User mode. Так можно делать или это считается неправильным??
Спасибо.
Составить ответ | Вернуться на конференцию
Ответы