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

 
 
> Прерывания в компиляторе 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
Ответов
sergeeff
сообщение Jul 20 2007, 21:21
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Что-то никак не пойму. Контроллер прерываний используется? Так на кой нужны какие-то отдельные функции со всякими умными __irq и прочим?

Контроллеру указываешь адрес любой функции void fff(void), а обработчик прерывания пишется один на всех в startup'e. Примеров тому - полно. Или хочется чего-то особо экзотического?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 21 2007, 07:54
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sergeeff @ Jul 21 2007, 00:21) *
а обработчик прерывания пишется один на всех в startup'e. Примеров тому - полно. Или хочется чего-то особо экзотического?
Индивидуальный обработчик на каждый источник позволяет компилятору сохранять на стеке только необходимые регистры. В общем же придется сохранять все.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 21 2007, 11:05
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(Сергей Борщ @ Jul 21 2007, 11:54) *
Индивидуальный обработчик на каждый источник позволяет компилятору сохранять на стеке только необходимые регистры. В общем же придется сохранять все.


Не понимаю. Согласно стандарту вызова функций scratch регистры не сохраняются. Прерывание может прийти в любой момент времени. Значит обработчик должен сохранить именно scratch - остальные при необходимости и так сохранятся при вызове функции, если функции это надо. Ключевые слова типа __irq именно это и заставляют компилятор делать. Или нет?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 22 2007, 13:54
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Вы правы, человек поднял проблему не подумавши.

Цитата(sergeeff @ Jul 21 2007, 14:35) *
Не понимаю. Согласно стандарту вызова функций scratch регистры не сохраняются. Прерывание может прийти в любой момент времени. Значит обработчик должен сохранить именно scratch - остальные при необходимости и так сохранятся при вызове функции, если функции это надо. Ключевые слова типа __irq именно это и заставляют компилятор делать. Или нет?
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
- - SpiritDance   В realView при описании обработчика IRQ на С испол...   Jun 27 2007, 08:41
|- - SanyaKID   Цитата(SpiritDance @ Jun 27 2007, 12:41) ...   Jun 27 2007, 09:29
|- - SpiritDance   Цитата(SanyaKID @ Jun 27 2007, 13:29) А в...   Jun 27 2007, 09:39
|- - SanyaKID   Цитата(SpiritDance @ Jun 27 2007, 13:39) ...   Jun 27 2007, 09:50
|- - Andy_ry   В STR91x лучше дело обстоит - для FIC выделен ...   Jul 11 2007, 09:00
|- - a3r3   Цитата(Andy_ry @ Jul 11 2007, 13:00) В ST...   Jul 11 2007, 09:30
||- - AlexandrY   Лучше, лучше ... В STR91x есть специальное мес...   Jul 21 2007, 08:22
|- - zltigo   Цитата(Andy_ry @ Jul 11 2007, 12:00) В ST...   Jul 11 2007, 15:09
|- - SanyaKID   Цитата(zltigo @ Jul 11 2007, 19:09) Если-...   Jul 16 2007, 10:32
|- - SergeyDDD   Далай обработчик FIQ на ассемблере   Jul 16 2007, 11:51
||- - SanyaKID   Цитата(SergeyDDD @ Jul 16 2007, 15:51) Да...   Jul 17 2007, 06:40
||- - SergeyDDD   Цитата(SanyaKID @ Jul 17 2007, 10:40) Я д...   Jul 17 2007, 14:33
||- - 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
||- - 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 Текстовая версия Сейчас: 24th June 2025 - 11:10
Рейтинг@Mail.ru


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