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

 
 
> SWI, Смысл использовать SWI
серый волк
сообщение Aug 29 2007, 09:12
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 29-08-07
Пользователь №: 30 125



начал разбираться с армом
наткнулся на SWI
не понимаю смысл его использования
так из примера ничего не ясно
похоже на вызов обкновенной функции
спасибо

#include <LPC21xx.H>

void SWI_Call1(int pattern) //Software interrupt with passed parameters
{
IOCLR1 = 0x00FF0000; //set the leds
IOSET1 = pattern;
}

void SWI_Call2(void)
{
IOCLR1 = 0x00FF0000;
IOSET1 = 0x00AA0000;
}

void main(void)
{
int pattern = 0x00550000;
IODIR1 = 0x00FF0000;
IOCLR1 = 0x00FF0000;

SWI_Call1(pattern);
SWI_Call2();

while(1)
{
; //Loop forever
}
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Д_М
сообщение Mar 24 2015, 19:31
Сообщение #2


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

Группа: Участник
Сообщений: 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] - для короткого
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 24 2015, 20:19
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Д_М @ Mar 24 2015, 22:31) *
Можно ли быть уверенным в том, что управление будет сразу же передано обработчику, а не с наступлением системного тика?


Скорее всего данная процедура только подаст сигнал блоку Task swicher, что нужно передать управление ожидающему процессу по очередному тику, а не прямо след. тактом. Для таких задач нужно использовать прерывания устройства, либо виртуальный обработчик прерываний по дескрипторам и распределением их по активным задачам, как это делалось еще в 386расширенном режиме на pc-шках...
Go to the top of the page
 
+Quote Post
Д_М
сообщение Mar 25 2015, 06:16
Сообщение #4


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

Группа: Участник
Сообщений: 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.htm

When 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_).

Это даёт основание полагать, что после вызова этой функции управление сразу передаётся диспетчеру, а не с приходом очередного тика. Я прав?

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- серый волк   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


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:26
Рейтинг@Mail.ru


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