|
Вложенные прерываня |
|
|
|
 |
Ответов
|
Jul 8 2006, 19:32
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата можно и повторный вызов обработчика схлопотать Повторный вызов не схлопотать. Запрещаются все приоритеты равные и ниже текущего. А то, что нельзя делать одинаковые приоритеты я и сам жалею. Помню как удобно было на 51/52 процах с трёхуровневой системой прерываний. Быстро и удобно. В данном вопросе только один минус - лишняя многоуровневость. Но гораздо больше плюсов. Особенно быстрое время реакции на все прерывания с учётом приоритетов. А медленные софтверные прерывания вообще не сделать без вложенности. Цитата просто их не надо использовать без необходимости Не-а. Я бы советовал не использовать обычные прерывания без особой необходимости. Особенно длинные или использующие много стека.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jun 19 2009, 07:30
|
Группа: Новичок
Сообщений: 4
Регистрация: 17-11-08
Пользователь №: 41 713

|
Цитата(GetSmart @ Jul 8 2006, 22:32)  Повторный вызов не схлопотать. Запрещаются все приоритеты равные и ниже текущего. А то, что нельзя делать одинаковые приоритеты я и сам жалею. Помню как удобно было на 51/52 процах с трёхуровневой системой прерываний. Быстро и удобно.
В данном вопросе только один минус - лишняя многоуровневость. Но гораздо больше плюсов. Особенно быстрое время реакции на все прерывания с учётом приоритетов. А медленные софтверные прерывания вообще не сделать без вложенности.
Не-а. Я бы советовал не использовать обычные прерывания без особой необходимости. Особенно длинные или использующие много стека. Повторный вызов можно схлопотать элементарно. VicVectAddr=0 открывает ВСЕ прерывания. Нужно явно маскировать и восстанавливать приоритеты.
|
|
|
|
|
Jun 19 2009, 09:11
|
Группа: Новичок
Сообщений: 4
Регистрация: 17-11-08
Пользователь №: 41 713

|
Цитата(aaarrr @ Jun 19 2009, 10:36)  Ошибаетесь: Если мы обсуждаем версию ARM PrimeCell, используемую в большинстве LPC, то ошибаетесь Вы. Действительно, при чтении VicVectAddr, контроллер повышает приоритет разрешенных прерываний до уровня текущего прерывания. Это обеспечивает правильный вход в стэк прерываний, но только до первой записи в VicVectAddr, что сбрасывает логику контроллера. Таким образом, незавершенные ISR могут прерываться прерываниямм с более низким приоритетом, если прерывания этого типа разрешены в CPSR. Макросы Keil'a просто открывают прерывания. Никакого "Handle nested interrupt" в них нет. VicSWPriorityMask должен быть использован для правильной реализации вложенности.
|
|
|
|
|
Jun 19 2009, 10:07
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(KeiserSose @ Jun 19 2009, 13:11)  Если мы обсуждаем версию ARM PrimeCell, используемую в большинстве LPC, то ошибаетесь Вы. Во-первых, и так понятно, что речь шла о pl190, у pl192 этот регистр называется VICADDRESS. Во-вторых читаем (pl192): Цитата The PrimeCell VIC implements two forms of interrupt priority masking:
Hardware masking The hardware masking is applied whenever an interrupt is being serviced, either with a read from the VICADDRESS Register, or by asserting the VICIRQACK input when the VIC port is used. This prevents other active interrupts of an equal or lower priority generating a new IRQ while the interrupt service routine is being executed. When the interrupt routine has completed and the VICADDRESS Register has been written to, the interrupt mask is cleared to allow all enabled interrupt sources through. Note The VICIRQSTATUS and VICRAWINTR Registers are not affected by this masking.
Software masking The software masking is applied using the value programmed into the VICSWPRIORITYMASK Register. This mask is applied continuously, and at the same time as the hardware mask when an interrupt is being serviced. Note The values in the VICIRQSTATUS and VICRAWINTR Registers do not reflect the masking by the VICSWPRIORITYMASK Register. и еще: Цитата Writing to the VICADDRESS Register indicates to the interrupt priority hardware that the current interrupt is serviced, enabling the masking of lower priority or the same priority interrupts to be removed and for the interrupts to become active. И как получается вывод Цитата VicSWPriorityMask должен быть использован для правильной реализации вложенности. ? Программное управление приоритетами было введено в дополнение к аппаратному, и никак его не отменяет: Цитата Software-programmable interrupt priority level masking added, in addition to the hardware priority level masking.
|
|
|
|
|
Jun 19 2009, 19:41
|
Группа: Новичок
Сообщений: 4
Регистрация: 17-11-08
Пользователь №: 41 713

|
Убедил. Был неправ. Вспылил.
|
|
|
|
Сообщений в этой теме
moonrock Вложенные прерываня Jul 7 2006, 20:39 DASM Цитата(moonrock @ Jul 8 2006, 00:39) Всем... Jul 7 2006, 22:04 Andrew2000 Цитата(DASM @ Jul 8 2006, 02:04) А никак.... Jul 7 2006, 22:40 moonrock как я понимаю, такое ограничение накладывает контр... Jul 7 2006, 22:44 GetSmart Извращенцы вы тут все. Говорят о том, что не знают... Jul 7 2006, 23:07 aaarrr Читать лучше не абстрактные хелпы, а обратиться к ... Jul 7 2006, 23:41 DASM да... был неправ. Всем спасибо, век живи - век учи... Jul 8 2006, 05:01 moonrock Всем большое спасибо, а вот тот ответ, который я х... Jul 8 2006, 09:23 aaarrr Цитата(moonrock @ Jul 8 2006, 13:23) ...н... Jul 8 2006, 11:22 yuri_t IMHO,без крайней необходимости с nested interrupt... Jul 8 2006, 10:17 zltigo Цитата(moonrock @ Jul 8 2006, 12:23) ARM ... Jul 8 2006, 10:38 GetSmart Цитата(zltigo @ Jul 8 2006, 16:38) Не ков... Jul 8 2006, 15:22  zltigo Цитата(GetSmart @ Jul 8 2006, 18:22) И ес... Jul 8 2006, 15:52   GetSmart Цитата(zltigo @ Jul 8 2006, 21:52) Ну и г... Jul 8 2006, 17:38    zltigo Цитата(GetSmart @ Jul 8 2006, 20:38) Они ... Jul 8 2006, 18:41 GetSmart Те же, кто не хочет использовать много асма, могут... Jul 8 2006, 12:14 zltigo Цитата(GetSmart @ Jul 8 2006, 15:14) У ме... Jul 8 2006, 12:49  Andrew2000 А на мой вопрос про завменитель CLZ кто-нить может... Jul 8 2006, 13:00   zltigo Цитата(Andrew2000 @ Jul 8 2006, 16:00) А ... Jul 8 2006, 13:08 aaarrr Цитата(GetSmart @ Jul 8 2006, 16:14) Те ж... Jul 8 2006, 13:06 Andrew2000 Цитата(aaarrr @ Jul 8 2006, 17:06) Могли ... Jul 8 2006, 13:48  zltigo Цитата(Andrew2000 @ Jul 8 2006, 16:48) Пр... Jul 8 2006, 14:00 aaarrr Цитата(Andrew2000 @ Jul 8 2006, 17:48) На... Jul 8 2006, 14:12 Andrew2000 Цитата(aaarrr @ Jul 8 2006, 18:12) Цитата... Jul 10 2006, 15:53 DASM А вот и не подеретесь
Zltigo - а чего в ентих... Jul 8 2006, 16:42 zltigo Цитата(DASM @ Jul 8 2006, 19:42) Zltigo -... Jul 8 2006, 17:17 DASM Да уж... Мне как-то повезло... Ни разу FIQ не надо... Jul 8 2006, 17:38 moonrock блин, тут все такие умные, один умней другого, аж ... Jul 8 2006, 19:37 zltigo Цитата(moonrock @ Jul 8 2006, 22:37) мой ... Jul 8 2006, 20:02 Nixon Цитата(moonrock @ Jul 8 2006, 22:37) блин... Jul 10 2006, 16:08  Сергей Борщ Цитата(Nixon @ Jul 10 2006, 19:08) В каче... Jul 10 2006, 16:25 GetSmart Я старым (уже) IAR 4.20
Тут где-то выкладывали ссы... Jul 8 2006, 20:02 aaarrr Цитата(Сергей Борщ @ Jul 10 2006, 20:25) ... Jul 10 2006, 16:34 zltigo Цитата(aaarrr @ Jul 10 2006, 19:34) До за... Jul 10 2006, 17:06 aaarrr Цитата(zltigo @ Jul 10 2006, 21:06) Прове... Jul 10 2006, 17:12 zltigo Цитата(aaarrr @ Jul 10 2006, 20:12) КодRe... Jul 10 2006, 17:25  Angle Подскажите, если кто знает, пример кода для обрабо... Oct 1 2007, 10:55   xelax Цитата(Angle @ Oct 1 2007, 14:55) Подскаж... Oct 2 2007, 05:52 Tannen Мои пять копеек вопроса про вложенные прерывания.... Jun 18 2009, 13:17 Сергей Борщ Цитата(Tannen @ Jun 18 2009, 16:17) Код ... Jun 18 2009, 14:01 Step_ARM Половину не понял из того, что написано...
Хотя во... Jun 23 2009, 05:43 meister Цитата(Step_ARM @ Jun 23 2009, 09:43) Кор... Jun 23 2009, 06:41  Step_ARM Цитата(meister @ Jun 23 2009, 10:41) Когд... Jun 23 2009, 08:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|