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

 
 
> Прерывания в компиляторе RealView, IRQ или FIQ?
SanyaKID
сообщение Jun 27 2007, 07:17
Сообщение #1


Участник
*

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



Разбирались мы тут с прерываниями и накопали вот что. Компилятор armcc не делает разницы между IRQ и FIQ перываниями, и использует как в IRQ так и в FIQ режимах общие регистры R0-R7, сохраняя их в стеке при входе прерывания.
А вот в описании архитектуры ARM7TDMI сказано что в режиме FIQ регистры R8-R14 в нутри прерывания это banked registers, то есть они не пересекаются с регистрами R8-R14 вне прерывания и их не надо класть в стек.
Так вот, может кто знает, можно ли как-нибуть указать компилятору, чтобы он пользовался этими banked register, а не общими? Хотя и экономится всего 2 команды, но ради научного интереса хочется выжать из Fast Interrupta все на что он способен! smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SpiritDance
сообщение Jun 27 2007, 08:41
Сообщение #2


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



В realView при описании обработчика IRQ на С используется ключевое слово __irq. Для прерываний fiq никаких ключевых слов и средств работы с fiq на С нет.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
SanyaKID
сообщение Jun 27 2007, 09:29
Сообщение #3


Участник
*

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



Цитата(SpiritDance @ Jun 27 2007, 12:41) *
В realView при описании обработчика IRQ на С используется ключевое слово __irq. Для прерываний fiq никаких ключевых слов и средств работы с fiq на С нет.


Да, но можно сделать так, чтобы оно вызывалось в режиме FIQ. В стартапе есть FIQ_Handler, содержащий адрес обработчика перываний FIQ. Если ему скормить адрес функции с ключевым словом __irq, и сделать одно из прерываний FIQ, то будет вызываться она.

А вообще, похоже всеже нельзя явно указать компилятору какие регистры использовать...

Сообщение отредактировал SanyaKID - Jun 27 2007, 09:31
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jun 27 2007, 09:39
Сообщение #4


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(SanyaKID @ Jun 27 2007, 13:29) *
А вообще, похоже всеже нельзя явно указать компилятору какие регистры использовать...

Смысл ключевых слов именно в этом. А контроллеру прерываний вы можете скормить что угодно.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
SanyaKID
сообщение Jun 27 2007, 09:50
Сообщение #5


Участник
*

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



Цитата(SpiritDance @ Jun 27 2007, 13:39) *
Смысл ключевых слов именно в этом. А контроллеру прерываний вы можете скормить что угодно.

Понятно, я не до конца вник во фразу smile.gif

Сообщение отредактировал SanyaKID - Jun 27 2007, 09:51
Go to the top of the page
 
+Quote Post
Andy_ry
сообщение Jul 11 2007, 09:00
Сообщение #6





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



В STR91x лучше дело обстоит - для FIC выделен "свой собственный банк регистров для минимизации времени контекстного переключения". Вот только что это за регистры не сказано - фик знает. sad.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 11 2007, 15:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Andy_ry @ Jul 11 2007, 12:00) *
В STR91x лучше дело обстоит...

Если-бы Вы были внимательнее, то поняли, что обсуждается не отсутствие (который на самом деле присутствеет, как уже писалось, во всех ARM и документрован) отдельного банка регистров, а то, что RealView НЕ УМЕЕТ ИМ ПОЛЬЗОВАТЬСЯ.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SanyaKID
сообщение Jul 16 2007, 10:32
Сообщение #8


Участник
*

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



Цитата(zltigo @ Jul 11 2007, 19:09) *
Если-бы Вы были внимательнее, то поняли, что обсуждается не отсутствие (который на самом деле присутствеет, как уже писалось, во всех ARM и документрован) отдельного банка регистров, а то, что RealView НЕ УМЕЕТ ИМ ПОЛЬЗОВАТЬСЯ.


Да, пользоваться он ими действительно не умеет. В итоге, у меня получился вариант, когда в Си функция прерывания описана как IRQ, но настроена как FIQ и в стартапе FIQ Handler скормлен адрес этого самого обработчика, помеченного как FIQ. Вызываться обработчик должен немного быстрее, но ,вообще говоря, то, что компилятор не использует специальные регистры этого режима, сводит почти на нет все преимущество FIQ
Go to the top of the page
 
+Quote Post
SergeyDDD
сообщение Jul 16 2007, 11:51
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248



Далай обработчик FIQ на ассемблере
Go to the top of the page
 
+Quote Post
SanyaKID
сообщение Jul 17 2007, 06:40
Сообщение #10


Участник
*

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



Цитата(SergeyDDD @ Jul 16 2007, 15:51) *
Далай обработчик FIQ на ассемблере

Я долго ждал, когда ж мне это скажут smile.gif
Go to the top of the page
 
+Quote Post
SergeyDDD
сообщение Jul 17 2007, 14:33
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248



Цитата(SanyaKID @ Jul 17 2007, 10:40) *
Я долго ждал, когда ж мне это скажут smile.gif


Ну так...... Слушай меня.......

"Хотя и экономится всего 2 команды, но ради научного интереса хочется выжать из Fast Interrupta все на что он способен!"

А ваче то что может быть при такой постановке вопроса? И после всего написанного здесь.

Сообщение отредактировал SergeyDDD - Jul 17 2007, 15:06
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SanyaKID   Прерывания в компиляторе RealView   Jun 27 2007, 07:17
- - GetSmart   Из ваших слов в стеке сохраняются только R0-R7. Та...   Jun 27 2007, 08:00
- - zltigo   Цитата(SanyaKID @ Jun 27 2007, 10:17) Так...   Jun 27 2007, 08:15
|- - a3r3   Цитата(Andy_ry @ Jul 11 2007, 13:00) В ST...   Jul 11 2007, 09:30
||- - AlexandrY   Лучше, лучше ... В STR91x есть специальное мес...   Jul 21 2007, 08:22
||- - defunct   Цитата(SergeyDDD @ Jul 17 2007, 17:33) Да...   Jul 20 2007, 13:48
|- - kamedi_clab   Цитата(SanyaKID @ Jul 16 2007, 14:32) у м...   Jul 19 2007, 12:41
- - sergeeff   Что-то никак не пойму. Контроллер прерываний испо...   Jul 20 2007, 21:21
|- - Сергей Борщ   Цитата(sergeeff @ Jul 21 2007, 00:21) а о...   Jul 21 2007, 07:54
|- - sergeeff   Цитата(Сергей Борщ @ Jul 21 2007, 11:54) ...   Jul 21 2007, 11:05
|- - AlexandrY   Вы правы, человек поднял проблему не подумавши. Ц...   Jul 22 2007, 13:54
||- - zltigo   Цитата(AlexandrY @ Jul 22 2007, 16:54) че...   Jul 22 2007, 14:00
||- - sergeeff   Пример классный (без иронии, я на досуге тоже поду...   Jul 22 2007, 19:18
||- - zltigo   Цитата(sergeeff @ Jul 22 2007, 22:18) Но ...   Jul 22 2007, 19:29
||- - AlexandrY   Этот пример содержит подвох. Достаточно юзеру снов...   Jul 22 2007, 19:53
||- - zltigo   Цитата(AlexandrY @ Jul 22 2007, 22:53) Эт...   Jul 22 2007, 20:23
||- - AlexandrY   Юзер на C не успеет вновь разрешить прерывания до ...   Jul 22 2007, 20:35
||- - zltigo   Цитата(AlexandrY @ Jul 22 2007, 23:35) Юз...   Jul 22 2007, 21:34
||- - AlexandrY   Ok! Согласен. В принципе цели мы добились. Чел...   Jul 22 2007, 21:49
||- - zltigo   Цитата(AlexandrY @ Jul 23 2007, 00:49) Че...   Jul 22 2007, 22:06
|- - Сергей Борщ   Цитата(sergeeff @ Jul 21 2007, 14:05) Не ...   Jul 23 2007, 09:44
- - sergeeff   Насчет умной функции обработчика прерывания. Думае...   Jul 24 2007, 06:01
|- - zltigo   Цитата(sergeeff @ Jul 24 2007, 09:01) Но....   Jul 24 2007, 06:25
|- - Сергей Борщ   Цитата(sergeeff @ Jul 24 2007, 09:01) Пре...   Jul 24 2007, 10:48
- - SanyaKID   Ничего себе сколько тут уже понаписали... Вообщем-...   Jul 24 2007, 09:05
- - GetSmart   Цитата(SanyaKID)В итоге, в теории, чтобы не ковыря...   Jul 24 2007, 15:02
- - SanyaKID   Цитата(GetSmart @ Jul 24 2007, 19:02) Ну ...   Jul 25 2007, 09:43
- - Сергей Борщ   Цитата(SanyaKID @ Jul 25 2007, 12:43) Да,...   Jul 25 2007, 10:21


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

 


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


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