|
|
  |
Высшая степень вложенности Real/Soft FIQ/IRQ |
|
|
|
Nov 17 2009, 07:38
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Почувствовав запах крови...он перешёл в наступление  VslavX, Подтвердите сперва свои слова цитатами, только с учётом хронологии чужих постов и моих ответов. Цитата(VslavX @ Nov 16 2009, 15:21)  Да критика в-общем-то не столько против вложенных прерываний, сколько против заявлений - "все чудаки, один я д'Артаньян". И чтобы Вы не запутались в "задании" я раскрою "посыл" этой заварухи (темы). Посыл такой - вложенные прерывания ничем не хуже треда. Местами даже лучше. Но это уже личное. А уж в безосной проге - сам бог велел. Вот, и если Вы найдёте в моих постах несоответствие или явный перебор, то тогда Вы правы, а пока... Цитата(VslavX @ Nov 17 2009, 02:36)  GetSmart, был задан вполне конкретный вопрос - с вполне конкретной целью оценить критические "времянки". Пока эта оценка не сделана - говорить про исключительную необходимость вложенных прерываний просто смешно. А я обязательно отвечу на "конкретные" вопросы. К слову, вспомнилась пестня "А ты в ответ: Я все отдам. Мадам, мадам. Падабадабадабадам..."  Лучше отгадайте загадку: программно переключаюсь из текущего режима FIQ с запрещёнными IRQ+FIQ в режим IRQ с запрещёнными IRQ и сразу улетаю на вектор 0x18 (IRQ vector). В чём причина?
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 17 2009, 09:56
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(GetSmart @ Nov 17 2009, 09:38)  И чтобы Вы не запутались в "задании" я раскрою "посыл" этой заварухи (темы). Посыл такой - вложенные прерывания ничем не хуже треда. ИМХО, хуже. Хуже тем что это - "финт ушами". В-принципе, "финты ушами" допустимы, но основания должны быть достаточно вескими, Вы таковые привести не смогли. Финт, давая незначительный выигрыш в быстродействии, существенно проигрывает в архитектурной стройности. Когда проект длится долго, становится достаточно большим, делается командой - начинаешь очень эту стройность ценить. Собственного опыта наберетесь - сами это поймете, а нет - ну и стойте на своем "посыле" - Ваше право, но больше я свое время на бесполезную дискуссию тратить не буду. Цитата(GetSmart @ Nov 17 2009, 09:38)  А я обязательно отвечу на "конкретные" вопросы. Ото когда (и если) ответите, тады и поговорим - с цифрами "на руках". BTW, а почему у Вас 24МГц тактовая ядра? Если используется ОС, то тактовую можно спокойно повысить до максимума. ОС очень легко позволяет реализовать энергосбережение - останавливая ядро в потоке IDLE. При этом проц всегда возьмет "сколько ему надо" в момент пиковой загрузки (теми же прерываниями) , а суммарное потребление возрастет очень незначительно.
|
|
|
|
|
Nov 17 2009, 13:25
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(GetSmart @ Nov 17 2009, 13:38)  Лучше отгадайте загадку: программно переключаюсь из текущего режима FIQ с запрещёнными IRQ+FIQ в режим IRQ с запрещёнными IRQ и сразу улетаю на вектор 0x18 (IRQ vector). В чём причина? Вопрос решён в соседней ветке  Не будь я таким заядлым экспериментатором - никто бы так и не узнал о баге во FreeRTOS Rst7-у респект. VslavX, что такое BTW ?
Сообщение отредактировал GetSmart - Nov 17 2009, 13:49
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 17 2009, 15:15
|

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

|
Цитата(GetSmart @ Nov 17 2009, 16:25)  Не будь я таким заядлым экспериментатором - никто бы так и не узнал о баге во FreeRTOS  Точнее разговоры о том, что задачи надо прежде всего естественными средствами, дабы не наступать на грабли и не иметь проблем с окружающим кодом, бы-ли бы более абстрактными. Вам, как я понимаю, что в лоб, что по лбу, но вообще пример поучительный.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 18 2009, 12:09
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(GetSmart @ Nov 18 2009, 09:40)  Про этот механизм я даже не знал. Я со FreeRTOSом познакомился всего пару месяцев назад. То есть при входе в прерывание проц автоматически "разгонется" без лишних задержек или эта фича всё таки создаёт лишние задержки? Смотреть документ "LPC23XX User manual", глава "Chapter 4: LPC23XX Clocking and power control", пункт "8.1 Idle mode". Не знаю как там конкретно во FreeRTOS (сам я на TNKernel сижу), но там тоже должна быть задача "IDLE" - которую процессор исполняет "когда ему нечего исполнять". Вот в ней и ставите примерно такой код Код for(;;) { enable_interrupt(); SC_PCON = bPCON_PM0; } Насчет увеличения latency_interrupt я в документации ничего не нашел, но, даже если и ядром добавляется пару тактов для выхода из IDLE, то это многократно скомпенсируется утроившейся частотой, и окончательный lanency в наносекундах будет втрое меньше.
|
|
|
|
|
Nov 18 2009, 12:46
|

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

|
Цитата(GetSmart @ Nov 18 2009, 10:40)  И если не трудно, то хотелось бы узнать - как во FreeRTOS сделать аналог моего вложенного IRQ, то есть треда, который активизируется по событию из FIQ и прерывает все другие треды. Если чисто-тупо, то обертка с сохранением контекста и соответственно в обработчике FIQ поднятие задачи xTaskResumeFromISR() и yield() Добавление обертки лично мне сильно не по душе, по той-же причине (тупо входим-выходим, но пользуемся редко), что и обертки для организации вложенности. Посему обертку херим, а yield() из обернутого обработчика IRQ активируемого из FIQ. Тут Вам коллеги подобное несколько раз подробно описывали. Естественно, шедулер во FreeRTOS прдвинутый и за это платится тактами. Посему, то о чем говорил я - для всемерного ускорения можете всю свою дополнительную работу прямо в обработчике IRQ написать не трогая системные сервисы вообще.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|