- Есть ли "нормальный mutex" в IAR ARM ?2020-06-09
- Доброго дня.2020-04-13
-
- Спрошу здесь, чтобы топики не плодить: как FreeRTOS в конфигах
попросить, чтобы при событии быстро отрабатывала определённая
задача? Есть прерывание АЦП, которое надо передать дальше. На
пальцах - делаем задачу с высоким приоритетом, которая ждёт
события/флага/сообщения/... Из прерывания это самое ожидаемое и
инициируем. И чтобы задача очухалась не по тику шедулера, а по
возникновению события? Чего лучше ожидать задаче(легковеснее), как
попросить на "родном" языке об Dingo(97 знак., 15.11.2022 11:40)
- Пишут что Task Notification работает быстрее чем очереди и семафоры. С другой стороны, если
нужен еще и механизм для передачи данных из обработчика прерываний
в задачу, то может оказаться что удобнее решить обе проблемы разом используя
stream-buffer. ЫЫyкпy(4 знак., 15.11.2022 14:22, ссылка, ссылка)
- Спасибо! - Nikolaj(15.11.2022 15:49)
- Есть еще xTaskNotifyFromISR BlackMorda(1 знак., 19.11.2022 23:23, ссылка)
- Спасибо! - Nikolaj(15.11.2022 15:49)
- Без шедулера всё равно ни как - контекст переключает он. Можно
только принудительно заставить шедулер переключится на требуемую
задачу и то только если её приоритет выше той задачи что была
прервана этим прерыванием: Nikolaj(1042 знак., 15.11.2022 11:51)
- В прерывании отдать семафор с проверкой приоритетов и запросом к
шедулеру на переключение контекста: Nikolaj(135 знак., 15.11.2022 11:55)
- Да, словами - оно. Буду пробовать. taskYELD() и есть вызов
шедулера? Он разберётся, что его из прерывания дёрнули? Или я
сильно параною? - Dingo(15.11.2022 12:16)
- Вроде как "taskYIELD — отдать управление диспетчеру принудительно, не дожидаясь тика" )) Nikolaj(140 знак., 15.11.2022 13:26)
- Да, словами - оно. Буду пробовать. taskYELD() и есть вызов
шедулера? Он разберётся, что его из прерывания дёрнули? Или я
сильно параною? - Dingo(15.11.2022 12:16)
- В прерывании отдать семафор с проверкой приоритетов и запросом к
шедулеру на переключение контекста: Nikolaj(135 знак., 15.11.2022 11:55)
- Пишут что Task Notification работает быстрее чем очереди и семафоры. С другой стороны, если
нужен еще и механизм для передачи данных из обработчика прерываний
в задачу, то может оказаться что удобнее решить обе проблемы разом используя
stream-buffer. ЫЫyкпy(4 знак., 15.11.2022 14:22, ссылка, ссылка)
- НЯП, из коробки вложенные прерывания поддерживаются только на
архитектурах, где это аппаратно предусмотрено (Cortex-M например).
ARMv5 вложенные прерывания не поддерживает аппаратно, можно
поизгаляться конечно, используя стек SVC или System, но то такое,
корявенькое. - LightElf(07.11.2022 14:17)
- В NUC9xx есть AIC, который: 1) рулит приоритетами при одновременном
возникновении; 2) можно использовать для организации вложенных
прерываний. Да даже и без AIC, есть IRQ и есть FIQ. - VVB(07.11.2022 15:21)
- Может ткнёте, где почитать про него? А то в TRM весьма скудно. - Dingo(08.11.2022 07:48)
- А чем не устраивает Family Programming Guide? Страница 31, вроде
все доходчиво. LightElf(1 знак., 15.11.2022 14:21, ссылка)
- Спасибо. Может, у вас ещё какие-то документы есть? Errata,
например. - VVB(16.11.2022 09:30)
- В чипах ревизии B было несколько жестких багов, но эти чипы в массовое распространение не шли и в дикой природе почти не встречались (у меня есть парочка, но то такое). Есть скользкие моменты, описанные в аппнотах, про порядок подачи питаний, RESET, RTC. LightElf(266 знак., 16.11.2022 13:01, ссылка, ссылка)
- Спасибо, этот документ не попадался на глаза, в материалах для
NUC970 не упомянут! Dingo(1 знак., 15.11.2022 17:38, картинка)
- Ну они такие, да.
ЖопаДока есть, а слова нет. - LightElf(15.11.2022 17:44)
- Ну они такие, да.
- Спасибо. Может, у вас ещё какие-то документы есть? Errata,
например. - VVB(16.11.2022 09:30)
- Кроме TRM, нигде. Даже примеров работы с AIC не предоставляется.
Переписка с тех. поддержкой Nuvoton ("глухие телефончики" в лице
Промэлектроники) дала странный результат: "errata на NUC9xx нет,
вложенные прерывания не поддерживаются", хотя в документации на AIC
сказано обратное. VVB(496 знак., 08.11.2022 08:08)
- Судя по стартап, там короткая табличка векторов по немаскируемым
событиям и по одному вектору для IRQ и FIQ. Остальная обработка
программно используя регистры AIC. - Dingo(14.11.2022 06:28)
- Это стандартная таблица векторов для архитектуры ARMv5T. - LightElf(15.11.2022 14:50)
- Спасибо. - Dingo(08.11.2022 10:32)
- Судя по стартап, там короткая табличка векторов по немаскируемым
событиям и по одному вектору для IRQ и FIQ. Остальная обработка
программно используя регистры AIC. - Dingo(14.11.2022 06:28)
- А чем не устраивает Family Programming Guide? Страница 31, вроде
все доходчиво. LightElf(1 знак., 15.11.2022 14:21, ссылка)
- Не вижу смысла спорить. У ARMv5TE нет аппаратной поддержки
вложенных прерываний, наличие/отсутствие VIC/AIC ничего в этом
вопросе не меняет. FIQ может прервать обработчик IRQ, для чего есть
аппаратная поддержка в виде банка регистров и самое главное -
отдельного LR. Но вложенности IRQ в IRQ или FIQ в FIQ процессор не
предоставляет. Способы программно извернуться и таки сделать
вложенные прерывания - существуют, но FreeRTOS их не использует. - LightElf(07.11.2022 16:56)
- Ну дык я и написал "недо-ось". И спорить не собирался. - VVB_(07.11.2022 19:16, )
- Ну, кагбэ, у порта FREERTOS под обсуждаемый камень есть автор,
можно его попинать на предмет зачем он так сделал. У меня остались
позитивные впечатления от нувотоновских программеров, правда меня
линух интересовал больше. - LightElf(12.11.2022 00:57)
- У меня смешанные. -> Но что умеют и не левой пяткой - по исходникам видно. Что касается FreeRTOS - не могу сказать, некомпетентен. Dingo(583 знак., 14.11.2022 05:57, ссылка)
- Ну, кагбэ, у порта FREERTOS под обсуждаемый камень есть автор,
можно его попинать на предмет зачем он так сделал. У меня остались
позитивные впечатления от нувотоновских программеров, правда меня
линух интересовал больше. - LightElf(12.11.2022 00:57)
- Ну дык я и написал "недо-ось". И спорить не собирался. - VVB_(07.11.2022 19:16, )
- Может ткнёте, где почитать про него? А то в TRM весьма скудно. - Dingo(08.11.2022 07:48)
- В NUC9xx есть AIC, который: 1) рулит приоритетами при одновременном
возникновении; 2) можно использовать для организации вложенных
прерываний. Да даже и без AIC, есть IRQ и есть FIQ. - VVB(07.11.2022 15:21)
- 1. Создаете N потоков обработки прерываний с разными приоритетами, каждое слушает семафор и пробегает по назначенным прерываниям. После сброса флага прерывания - включает обработчик прерывания (но только если это действительно надо) lloyd(171 знак., 07.11.2022 13:04)
- Спрошу здесь, чтобы топики не плодить: как FreeRTOS в конфигах
попросить, чтобы при событии быстро отрабатывала определённая
задача? Есть прерывание АЦП, которое надо передать дальше. На
пальцах - делаем задачу с высоким приоритетом, которая ждёт
события/флага/сообщения/... Из прерывания это самое ожидаемое и
инициируем. И чтобы задача очухалась не по тику шедулера, а по
возникновению события? Чего лучше ожидать задаче(легковеснее), как
попросить на "родном" языке об Dingo(97 знак., 15.11.2022 11:40)