|
Вопрос по прерываниям, __int во время __swi Подскажите !!! |
|
|
|
 |
Ответов
|
Mar 19 2007, 14:39
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Из: Kiev
Пользователь №: 21 933

|
Цитата 1) при выполнении __swi возможна ли работа простых __int ? Из ARM Architecture Reference Manual, инструкция SWI: if CondidtionPassed(<cond>) then R14_svc = address of SWI instruction + 4 SPSR_svc = CPSR CPSR[5:0] = 0b010011; enter Supervisor mode CPSR[7] = 1; disable IRQ -- прерывания запрещены PC = 0x08 Цитата 2) Если невозможна, то как сбросить влаг программного прерывания (__swi), не выходя из самой функции __swi, чтобы разрешить INTы во время её выполнения ? Или что можно ещё сделать. Прерывания запрещены и процессор в режиме Supervisor. Но ведь ничто не мешает нам разрешить прерывания в рег. CPSR (бит I).
Сообщение отредактировал kichkine - Mar 19 2007, 14:40
|
|
|
|
|
Mar 20 2007, 16:15
|
Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490

|
Цитата(kichkine @ Mar 19 2007, 14:39)  Из ARM Architecture Reference Manual, инструкция SWI: Прерывания запрещены и процессор в режиме Supervisor. Но ведь ничто не мешает нам разрешить прерывания в рег. CPSR (бит I). А как бы красиво оформить обратную ситуацию - в прерывании возникает необходимость запустить при выходе из прерывания "фоновую задачу"? Фоновой задаче назначить какой-нибудь вектор и выставлять соответствующий бит в VICSoftInt?
|
|
|
|
|
Mar 20 2007, 17:03
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997

|
Цитата(abcdefg @ Mar 20 2007, 16:15)  А как бы красиво оформить обратную ситуацию - в прерывании возникает необходимость запустить при выходе из прерывания "фоновую задачу"? Фоновой задаче назначить какой-нибудь вектор и выставлять соответствующий бит в VICSoftInt? Извините не понял высказывания. Мне требуется такая ситуация: __swi может быть очень длинным с ветвлением, при его выполнении итак должны работать фоновые задачи (функции). При этом должны работать таймеры!!! и другие устр-ва по прерываниям т.е __int - работает,а __fiq - работает всегда(выбор из таблицы в ШИМ). (Из супервизора НАДО выйти, но непрекращая __swi). из __swi(он у меня вектор) выходить как из обычной вызываемой ф-и. вход в __swi(он содержит набор своих векторов на каждую процедуру), из любого(даже загружаемого модуля), ну почти как в BIOS /вот было бы здорово/ С уважением PARAMON!
|
|
|
|
|
Mar 20 2007, 17:14
|
Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490

|
Цитата(Paramon @ Mar 20 2007, 17:03)  Извините не понял высказывания.
С уважением PARAMON! Да это не относится к вашему вопросу, просто в тему вложенных прерываний. В упрощенном варианте - хочу из обработчика прерывания irq при выходе попадать в обработчик софтового прерывания (который разрешает вложенность прерываний)
|
|
|
|
|
Mar 20 2007, 23:02
|

Местный
  
Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528

|
Цитата(abcdefg @ Mar 20 2007, 17:14)  Да это не относится к вашему вопросу, просто в тему вложенных прерываний. В упрощенном варианте - хочу из обработчика прерывания irq при выходе попадать в обработчик софтового прерывания (который разрешает вложенность прерываний) Компилятор не важен. Это делается через стек. При выходе из irq в стек заносишь указатель, на который хочешь попасть.
--------------------
Для связи email: info собака qbit.su
|
|
|
|
Сообщений в этой теме
Paramon Вопрос по прерываниям Mar 19 2007, 13:44 Paramon Цитата(kichkine @ Mar 19 2007, 14:39) Из ... Mar 19 2007, 15:00    Сергей Борщ Цитата(abcdefg @ Mar 20 2007, 16:14) В уп... Mar 20 2007, 21:52     Paramon Цитата(Сергей Борщ @ Mar 20 2007, 21:52) ... Mar 21 2007, 07:57      Сергей Борщ Цитата(Paramon @ Mar 21 2007, 06:57) Надо... Mar 21 2007, 11:00       Paramon Цитата(Сергей Борщ @ Mar 21 2007, 11:00) ... Mar 21 2007, 13:48        Сергей Борщ Ага, теперь понятнее.
Цитата(Paramon @ Mar 21... Mar 21 2007, 15:39         Paramon Цитата(Сергей Борщ @ Mar 21 2007, 15:39) ... Mar 21 2007, 16:43          Сергей Борщ Цитата(Paramon @ Mar 21 2007, 15:43) Я бы... Mar 21 2007, 18:35           Paramon Цитата(Сергей Борщ @ Mar 21 2007, 18:35) ... Mar 22 2007, 08:13            Сергей Борщ Цитата(Paramon @ Mar 22 2007, 07:13) вчер... Mar 22 2007, 12:22             Paramon Цитата(Сергей Борщ @ Mar 22 2007, 12:22) ... Mar 22 2007, 12:59              Paramon Цитата(Paramon @ Mar 22 2007, 12:59) У ме... Mar 23 2007, 09:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|