|
Прерывания в компиляторе RealView, IRQ или FIQ? |
|
|
|
Jun 27 2007, 07:17
|
Участник

Группа: Участник
Сообщений: 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 все на что он способен!
|
|
|
|
|
 |
Ответов
|
Jun 27 2007, 09:29
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 27 2007, 09:50
|
Участник

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

|
Цитата(SpiritDance @ Jun 27 2007, 13:39)  Смысл ключевых слов именно в этом. А контроллеру прерываний вы можете скормить что угодно. Понятно, я не до конца вник во фразу
Сообщение отредактировал SanyaKID - Jun 27 2007, 09:51
|
|
|
|
|
Jul 11 2007, 09:00
|
Группа: Новичок
Сообщений: 9
Регистрация: 29-03-07
Пользователь №: 26 595

|
В STR91x лучше дело обстоит - для FIC выделен "свой собственный банк регистров для минимизации времени контекстного переключения". Вот только что это за регистры не сказано - фик знает.
|
|
|
|
|
Jul 11 2007, 15:09
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jul 16 2007, 10:32
|
Участник

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

|
Цитата(zltigo @ Jul 11 2007, 19:09)  Если-бы Вы были внимательнее, то поняли, что обсуждается не отсутствие (который на самом деле присутствеет, как уже писалось, во всех ARM и документрован) отдельного банка регистров, а то, что RealView НЕ УМЕЕТ ИМ ПОЛЬЗОВАТЬСЯ. Да, пользоваться он ими действительно не умеет. В итоге, у меня получился вариант, когда в Си функция прерывания описана как IRQ, но настроена как FIQ и в стартапе FIQ Handler скормлен адрес этого самого обработчика, помеченного как FIQ. Вызываться обработчик должен немного быстрее, но ,вообще говоря, то, что компилятор не использует специальные регистры этого режима, сводит почти на нет все преимущество FIQ
|
|
|
|
|
Jul 17 2007, 06:40
|
Участник

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

|
Цитата(SergeyDDD @ Jul 16 2007, 15:51)  Далай обработчик FIQ на ассемблере Я долго ждал, когда ж мне это скажут
|
|
|
|
|
Jul 17 2007, 14:33
|
Местный
  
Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248

|
Цитата(SanyaKID @ Jul 17 2007, 10:40)  Я долго ждал, когда ж мне это скажут  Ну так...... Слушай меня....... "Хотя и экономится всего 2 команды, но ради научного интереса хочется выжать из Fast Interrupta все на что он способен!" А ваче то что может быть при такой постановке вопроса? И после всего написанного здесь.
Сообщение отредактировал SergeyDDD - Jul 17 2007, 15:06
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|