|
SWI, Смысл использовать SWI |
|
|
|
 |
Ответов
|
Mar 24 2015, 19:31
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185

|
В описании операционной системы RL-ARM от Keil углядел очень интересный механизм В ОС предусмотрен системный вызов для установки флагов событий, предназначенный для вызова из обработчика прерывания: void isr_evt_set(unsigned short event_flags, 0S_TID task); Таким образом, типичный процесс, выполняющий обработку прерывания, будет выглядеть следующим образом: Код void Task3(void) { while(1) { os_evt_wait_or(0x0001, 0xFFFF); /* Ждем установки флага события обработчиком */ ......... // Обрабатываем прерывание } // В следующем проходе цикла снова засыпаем } Обработчик прерывания в данном случае будет содержать минимальное количество кода: void FIQ_Handler (void) __fiq { isr_evt_set(0x0001,tsk3); /* Сообщаем процессу tsk3 о возникновении прерывания */ EXTINT = 0x00000002; // Сбрасываем флаг прерывания } Можно ли быть уверенным в том, что управление будет сразу же передано обработчику, а не с наступлением системного тика?
Сообщение отредактировал IgorKossak - Mar 25 2015, 18:30
Причина редактирования: [codebox] для длинного кода, [code] - для короткого
|
|
|
|
|
Mar 25 2015, 06:16
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185

|
Цитата(mantech @ Mar 25 2015, 00:19)  Скорее всего данная процедура только подаст сигнал блоку Task swicher, что нужно передать управление ожидающему процессу по очередному тику, а не прямо след. тактом. Для таких задач нужно использовать прерывания устройства, либо виртуальный обработчик прерываний по дескрипторам и распределением их по активным задачам, как это делалось еще в 386расширенном режиме на pc-шках... Вот что пишут производители http://infocenter.arm.com/help/index.jsp?t...isr_evt_set.htmWhen the isr_evt_set function is called too frequently, it forces too many tick timer interrupts and os_clock_demon task scheduler is executed most of the time. It might happen that two isr_evt_set functions for the same task are called before the task gets a chance to run from one of the event waiting functions (os_evt_wait_). Это даёт основание полагать, что после вызова этой функции управление сразу передаётся диспетчеру, а не с приходом очередного тика. Я прав?
|
|
|
|
Сообщений в этой теме
серый волк SWI Aug 29 2007, 09:12 Vitaliy_ARM Функция SWI (программное прерывание) часто использ... Aug 29 2007, 09:19 alexander55 Цитата(серый волк @ Aug 29 2007, 13:12) н... Aug 29 2007, 09:24 ig_z Цитата(alexander55 @ Aug 29 2007, 12:24) ... Aug 29 2007, 15:09 AVR Цитата(alexander55 @ Aug 29 2007, 13:24) ... Sep 2 2007, 17:29  Сергей Борщ Цитата(AVR @ Sep 2 2007, 20:29) Я использ... Sep 2 2007, 19:10 серый волк спасибо
1.может ли исполнение прерывания быть пре... Aug 29 2007, 10:16 alexander55 Цитата(серый волк @ Aug 29 2007, 14:16) с... Aug 29 2007, 12:08  Paramon Цитата(alexander55 @ Aug 29 2007, 16:08) ... Aug 30 2007, 03:45   alexander55 Цитата(Paramon @ Aug 30 2007, 07:45) FIQ ... Aug 30 2007, 04:30    Paramon Цитата(alexander55 @ Aug 30 2007, 08:30) ... Aug 30 2007, 07:56     alexander55 Цитата(Paramon @ Aug 30 2007, 11:56) пото... Aug 30 2007, 08:25 zltigo Цитата(серый волк @ Aug 29 2007, 12:12) п... Aug 29 2007, 10:23 серый волк Александр,
я правильно понимаю...
если у меня иде... Aug 29 2007, 12:27 zltigo Цитата(серый волк @ Aug 29 2007, 15:27) я... Aug 29 2007, 12:35 alexander55 [quote name='серый волк' date='Aug 29 ... Aug 29 2007, 13:45 серый волк с кашей это точно...
интересует в общем что поисх... Aug 29 2007, 12:47 Dron_Gus Обычно ничего. Если Вы не позаботились о вложеных ... Aug 29 2007, 13:10 серый волк СПАСИБО Aug 29 2007, 13:43 серый волк Thanks Aug 31 2007, 12:18 Vitaliy_ARM Здесь есть ответы на многие вопросы
Там на фили... Sep 6 2007, 09:09 Alechek Подниму тему.
Вопрос "если у меня идет выполн... Mar 20 2013, 11:00 MK2 Цитата(Alechek @ Mar 20 2013, 14:00) Подн... Mar 20 2013, 19:39 Д_М Здравствуйте!
Выше много писали о том, что во ... Mar 23 2015, 20:29 jcxz Цитата(Д_М @ Mar 24 2015, 02:29) Правильн... Mar 24 2015, 03:47  Д_М Цитата(jcxz @ Mar 24 2015, 07:47) Неправи... Mar 24 2015, 12:41   jcxz Цитата(Д_М @ Mar 24 2015, 18:41) А как то... Mar 24 2015, 13:06    Д_М Цитата(jcxz @ Mar 24 2015, 17:06) Использ... Mar 24 2015, 14:18     DmitryM Цитата(Д_М @ Mar 24 2015, 17:18) Из описа... Mar 24 2015, 16:15     mantech Цитата(Д_М @ Mar 24 2015, 17:18) Самый ба... Mar 24 2015, 17:27   SII Цитата(Д_М @ Mar 24 2015, 15:41) А как то... Mar 24 2015, 16:24 SII FIQ не запрещается икакими прерываниями, кроме сам... Mar 24 2015, 05:52 jcxz Цитата(SII @ Mar 24 2015, 11:52) FIQ не з... Mar 24 2015, 06:39  SII Цитата(jcxz @ Mar 24 2015, 09:39) Переиме... Mar 24 2015, 08:43 Golikov A. надо делать все не так
Если мы говорим про UART, т... Mar 24 2015, 17:00 DmitryM Цитата(Golikov A. @ Mar 24 2015, 20:00) Н... Mar 24 2015, 17:28 Д_М Цитата(Golikov A. @ Mar 24 2015, 21:00) н... Mar 24 2015, 18:24 SII Цитата(Golikov A. @ Mar 24 2015, 20:00) о... Mar 25 2015, 07:36 jcxz Цитата(Д_М @ Mar 25 2015, 01:31) Можно ли... Mar 25 2015, 08:26  mantech Цитата(jcxz @ Mar 25 2015, 11:26) Уже ско... Mar 25 2015, 19:04   jcxz Цитата(mantech @ Mar 26 2015, 01:04) А чт... Mar 26 2015, 05:35
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|