реклама на сайте
подробности

 
 
> Вопрос по прерываниям, __int во время __swi Подскажите !!!
Paramon
сообщение Mar 19 2007, 13:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



У меня вопрос:
1) при выполнении __swi возможна ли работа простых __int ?
2) Если невозможна, то как сбросить влаг программного прерывания (__swi), не выходя из самой функции __swi, чтобы разрешить INTы во время её выполнения ? Или что можно ещё сделать.
/проверять флаги __INTов нежелательно/
/ __fiq не предлагать, он уже занят /

(ADuC7024 и AT91SAM7S256)

с уважением PARAMON !

Сообщение отредактировал Paramon - Mar 19 2007, 14:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kichkine
сообщение Mar 19 2007, 14:39
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
abcdefg
сообщение Mar 20 2007, 16:15
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490



Цитата(kichkine @ Mar 19 2007, 14:39) *
Из ARM Architecture Reference Manual, инструкция SWI:
Прерывания запрещены и процессор в режиме Supervisor. Но ведь ничто не мешает нам разрешить прерывания в рег. CPSR (бит I).


А как бы красиво оформить обратную ситуацию - в прерывании возникает необходимость запустить при выходе из прерывания "фоновую задачу"? Фоновой задаче назначить какой-нибудь вектор и выставлять соответствующий бит в VICSoftInt?
Go to the top of the page
 
+Quote Post
Paramon
сообщение Mar 20 2007, 17:03
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Цитата(abcdefg @ Mar 20 2007, 16:15) *
А как бы красиво оформить обратную ситуацию - в прерывании возникает необходимость запустить при выходе из прерывания "фоновую задачу"? Фоновой задаче назначить какой-нибудь вектор и выставлять соответствующий бит в VICSoftInt?



Извините не понял высказывания.

Мне требуется такая ситуация:
__swi может быть очень длинным с ветвлением, при его выполнении итак должны работать фоновые задачи (функции). При этом должны работать таймеры!!! и другие устр-ва по прерываниям т.е __int - работает,а __fiq - работает всегда(выбор из таблицы в ШИМ). (Из супервизора НАДО выйти, но непрекращая __swi). из __swi(он у меня вектор) выходить как из обычной вызываемой ф-и.
вход в __swi(он содержит набор своих векторов на каждую процедуру), из любого(даже загружаемого модуля), ну почти как в BIOS
/вот было бы здорово/

С уважением PARAMON!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Paramon   Вопрос по прерываниям   Mar 19 2007, 13:44
- - Paramon   Цитата(kichkine @ Mar 19 2007, 14:39) Из ...   Mar 19 2007, 15:00
- - abcdefg   Цитата(Paramon @ Mar 20 2007, 17:03) Изви...   Mar 20 2007, 17:14
- - Сергей Борщ   Цитата(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
- - bzx   Цитата(abcdefg @ Mar 20 2007, 17:14) Да э...   Mar 20 2007, 23:02


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016