Поздравляем il-2 с днём рождения!
- RISC-V, прерывания, стек прерываний и mscratch применительно к ОСРВ
Задал вопрос в телеграм-канале RISC-V MCU. Задам и тут: Nikolay_Po(1626 знак., 10.06.2026 22:55, ARM, полностью)
- Доделал я порт FreeRTOS для QingKeV4 с включённой вложенностью
прерываний. Как тов. Клен тут пояснял в своих примерах, ограничился
только прерываниями с HPE, то есть, уровень вложенности до 3х
включительно. Nikolay_Po(1359 знак., 10.07.2026 14:25, +2)
- CAUTON: Не используйте HPE с FreeRTOS. Путём долгих страданий,
выяснил, что HPE не совместим с существующим шаблонным механизмом
сохранения, а, главное, восстановления контекста. Причём выяснил
это не сразу. Не давала покоя жажда оптимизаций и выжимки скорости. Nikolay_Po(585 знак., 15.06.2026 17:32)
- Вот моя шпаргалка на тему вымучивания HPE+FreeRTOS которую себе
написал храню в FreeRTOSConfig.h klen(3778 знак., 15.06.2026 19:50)
- В качестве ликбеза, почему SysTick должен вытеснять SWI? Пусть себе
переключится до конца. А то выйдет так, что SysTick обнаружил, что
нужно передать управление другой задаче и поменяет текущий TCB, в
то время, как процесс переключения контекста ещё не завершён... Я
наоборот думал, и, возможно, читал в комментариях на
forums.freertos.org, что вложение этих двух прерываний, таймера и
переключателя контекста, должно быть исключено... - Nikolay_Po(16.06.2026 16:50)
- OK. Приму объяснение, что SysTick нужен для выполнения регулярных,
требовательных к низкому джиттеру, действий, а так же для
минимального джиттера значения системного времени, используемого из
более приоритетных прерываний, как пользующихся API, так и нет.
Предположу, что SysTick-у безопасно отдать приоритет, так как
работа вызываемого внутри xTaskIncrementTick() влияет только на
определение потребности в переключении контекста, без влияния на
процесс переключение. Если Nikolay_Po(20 знак., 17.06.2026 16:42)
- Ну вроде это очевидно, что если ртосина не может контролировать
контекст, то и работать не будет. - =AlexD=(15.06.2026 17:55)
- Мне до обнаружения этой очевидности пара недель потребовалась.
Чувствую себя как тот кадр, у которого не получается
программировать МК... - Nikolay_Po(15.06.2026 17:59)
- Давайте разбирастя, ув. кроты! контекст прерывания ( читай по сути
исключения процессора ) и "что то где сохраняется контекст
FreeRTOS" - веши перпендикулярные. 0) в FreeRTOS прерываний не
существует 1) контекст исключений и контекст задач - ваще не одно и
тоже 2) FreeRTOS + исключения(прерывания у меня работают с HPE 3)
Где я балбес? - klen(15.06.2026 19:04)
- Есть вопросы. 1. Как при выходе из прерывания, при включённом HPE,
если это прерывание само меняет контекст и само восстанавливает по
своему разумению те же регистры, что восстанавливает и HPE,
оставить контекст RTOS для задачи, а не восстановленое HPE
состояние регистров на момент входа в прерывание? Я знаю только
один способ - установить GIHWSTKNEN и выйти, предварительно сбросив
MIE, чтобы защититься от вложенности. Nikolay_Po(579 знак., 16.06.2026 17:13)
- У меня такая переключалка выходит, в части блокировки прерываний
приоритетом до RTOS API включительно: Nikolay_Po(1443 знак., 16.06.2026 16:46)
- Контекст сохраняется не где-то каг-то, а в прерывании ;-). А из
прерывания переключения контекста он уходит не строго обратно, а
уже в другую задачу. А таг всё верно ;-). - =AlexD=(16.06.2026 10:24)
- Дык, стек РТОС, это доступ через какой-нить индексный регистр,
программно, а стек вызовов-прерываний проца, это чисто механическая
штука. Прерывания, вообще, для кода, прозрачны, он их не осчучает:
откуда-то, из параллельной вселенной, ему падают флаги и данные. - mse homjak(15.06.2026 19:15)
- я разумею почти так же ( сохранение регистров проца при эксепшене
не совсем аппаратная штука - традиционно компилятор генерит пролог
и эпилог ). вопрос в том где связзь HPE и кода сохранения и подъема
контекста задачи ОС? я утверждаю что её нет. но это не точно :)
думаю что суть в правильном назначении приоритетов прерываниям - у
меня в этом было откровения после которых все заработало с HPE - klen(15.06.2026 19:43)
- Меня что беспокоит: если я выхожу из прерывания, при входе в
которое было включено HPE, то при выходе, регистры, сохраняемые
аппаратно, восстановятся на значения в момент входа. Как быть, в
таком случае, с прерыванием, которое переключало контекст задачи и
при выходе должно оставить новые значения регистров, не те, чтобы
были на момент входа? Разве HPE не будет препятствовать сохранению
новых значений регистров, если они - контекст задачи RTOS, на
которую только что Nikolay_Po(14 знак., 16.06.2026 17:16)
- Дык, этта... Контекст задачи должэн переключать планировщик. - mse homjak(16.06.2026 18:46)
- Ну так все порты FreeRTOS на RISC-V (да и на прочие схожие по
возможностям контроллера прерываний чипы/архитектуры), используют
для переключения контекста прерывание. Контекст прерывания (содержимое набора регистров, значение указателя стека) перед
возвратом из прерывания, заменяется на контекст задачи ОС (то же самое, плюс некоторые регистры, которые могут не
сохранятся при обычном прерывании). И HPE этому препятствует,
восстанавливая контекст прерывания Nikolay_Po(996 знак., 16.06.2026 21:10)
- Ну, ХЗ. Я предполагал, что стек задачи, это не стек машины. Или там
нет возможности для такого финта ушами? Ну, типа, mashine/user
mode. Там указателя стека, как такового, нет, мож как-то можно
разделять стек машины и стек задачи? По крайней мере, команда mret
на что-то намекает. Да и, в принцыпе, наработана масса трюков, типа
замены вершины стека и возврат из прерывания в процэдуру
сохранения/смены контента для переключения задач. - mse homjak(16.06.2026 22:36)
- Если задача должна быть вытеснена (а FreeRTOS - вытесняющая ОС),
это можно сделать, лишь прервав задачу прерыванием. Внутри
прерывания, вместо восстановления контекста прерывания "как было до
прерывания", восстанавливается контекст более приоритетной задачи.
И вот это нетиповое использование прерывания, с возвратом не в
прежний контекст прерывания, а в новый, и, по моему мнению, не
совместимо с аппаратным восстановлением контекста. Nikolay_Po(387 знак., 16.06.2026 22:37)
- Сохранение, да. Но эксепшын, аппаратен и сразу, в машине моде. Т.е
код будет исполнен всегда, плус, у него свои регистры и всё такое. mse homjak(366 знак., 15.06.2026 19:58)
- А нет желания спросить у синего кита? Он тоже китайский, про свои
родные контроллеры ответят: ### Резюме по вашим вопросам: 1.
**Верно.** Каждое прерывание (и вложенное в том числе), которое
может вызвать переключение контекста, должно работать на выделенном
стеке прерываний, чтобы не затереть стек задачи. 2. **Верно.**
Использовать `naked` обязательно. Компилятор не знает про
`mscratch` и вашу логику переключения стеков. Только ручное
управление контекстом спасет Yft(925 знак., 11.06.2026 17:11)
- ниче не понял, но вопросы правильные. я когда портил - сильно лоб
морщил. у меня сделано 1) не все прерывания выключаются, только те
что могуть влиять на планировщик, для этого есть регистр
PFIC_ITHRESDR порога пиоритета 2) таски работают в user режиме чтоб
не достали до SCR-регистров. 3)чтото еще перепиливал klen(23200 знак., 11.06.2026 01:00, ссылка)
- Посмотрел я. И не понравилось в твоих примерах, что прерывания
глобально блокируются дольше, чем мне хотелось, см. GIHWSTKNEN. С
момента его установки, глобально прерывания блокированы. Nikolay_Po(179 знак., 24.06.2026 23:26)
- Кстати, в шаблоне для RISC-V, в свежем порте FreeRTOS, заложили
условное сохранение контекста FPU: Nikolay_Po(129 знак., 15.06.2026 13:42, ссылка)
- Правильно ли я понял, что для ОСРВ, прерывания полностью
блокируются сбросом бита MIE? И нет возможности
разрешать не запрещать более приоритетные прерывания, не влияющие на задачи
и переключения контекста ОС? Nikolay_Po(975 знак., 12.06.2026 22:03)
- А где эти? Особенно интересуют макросы для обработчиков прерываний
при входе POP_ISR_SP и выходе PUSH_ISR_SP. Nikolay_Po(451 знак., 11.06.2026 15:30)
- В ближний сельмаг завезли вот такое чудо. Не удержался, купил, уже
жду вечера, хоть и избегаю крепости выше 12. Бapбoc(46 знак., 17.07.2026 13:48, Off, картинка, полностью)
- Я тут недавно купил ПИВО томатное. Для интереса. Градус есть,
привкус томата тоже есть, и пузырьки тоже есть. Ни мне не жене не
понравилось. - Sl(18.07.2026 23:26)
- Органолептическая экспертиза напитка показала, что ваш покорный
угадал. Годное. Спиртовый вкус не перебили, зато послевкусие радует
-- помидорчик и перчик, и ещё что-то приятное. - Бapбoc(17.07.2026 17:15)
- Когда-то, лет 20 назад, мы с друганом "кровавую Мэри" делали на
основе томатного сока и спирта. Пропорция простая: наливаешь в
стакан томатный сок, не доливая пары сантиметров до краев, а сверху
аккуратно по ножу заливаешь 1-1.5см спирта. Пилось превосходно! Eddy_Em(314 знак., 19.07.2026 00:19)
- на вкус и цвет, как говорится, фломастеры раздные LordN(63 знак., 17.07.2026 18:48)
- Не хвастайте загодя.. "Утро туманное, утро седое…." покажет.. :) - Solo(17.07.2026 17:17)
- Хосспидя. Формула этилового спирта не зависит от напитка,
содержащего означенное вещество. Всё зависит от закуски, состояния
организма и погоды на Марсе. - Бapбoc(17.07.2026 17:26)
- Когда-то было чудо под названием Yupi - растворимый напиток. Турки
у себя и сейчас продают типа фруктовые чаи в виде опять же порошка.
С алкоголем даёт ужаснейшее сочетание. Моё предположение -
анилиновые красители. Недавно пробовал типа чилийское игристое с
тем же послеотвращением Vit(134 знак., 19.07.2026 03:41, картинка, картинка)
- ...фаза Луны еще. Но игнорировать влияние чистоты от примесей не
позволю. Ибо личный опыт
не пропьёшь. Cкpипaч(166 знак., 17.07.2026 17:31)
- Моя говорить о напитках, а не о бухле. Вы, товарищи, ещё Бориса
Фёдорыча помяните. - Бapбoc(17.07.2026 17:43)
- У бабы Дуси - рецепт! А у "Финляндии" - технологическая цепочка.. - Solo(17.07.2026 17:33)
- У бабы Дуси секретный инградиент - стиральный порошок "Малютка", а
у "Финляндии" - запах ландышей на рассвете. - Cкpипaч(17.07.2026 17:35)
- Дык, выбери бабу Маню! Там - чистотел! - Solo(17.07.2026 17:37)
- Зубной порошок "Чистотел"? Напомнило рассказ как в одном селе
построили молокозавод на месте родника. И ни одного молоковоза туда
с тех пор не заезжало. Объемы производства неизбежно ведут
использованию прекурсоров. - Cкpипaч(17.07.2026 17:38 - 17:42)
- "Мы всю неделю пили помарин.." - Solo(17.07.2026 17:41)
- В пионерлагере, да? 8) - Cкpипaч(17.07.2026 17:42)
- Пожже.. В стройотряде.. - Solo(17.07.2026 17:43)
- Алкаши! Дайте час доработать! Хватит смаковать! - Kpoк(17.07.2026 17:49)
- К слову, собственно Помарин вроде бы брезговали. Всякие
ягодно-плодовые брали. - Cкpипaч(17.07.2026 17:46)
- Помню, из детства.. Мамка, где-то в сельпо, отстояла очередь и
купила целую коробку..Дело было зимой.. Морозы.. - Solo(17.07.2026 17:50)
- Ну дома все натуральное было. Вплоть до сливовицы, двойной
перегонки. А вот в походах алкоголь экономили. В ущерб здоровью
конечно, но в 9-м классе здоровья было что у дурака фантиков. Cкpипaч(113 знак., 17.07.2026 18:01)
- Не, я про "Помарин".. Короче, - отличная паста! А вот, когда не
успевала баржа со спиртным, по осени, в завоз, да к берегу - то
беда! Всей населеньем, цепочкой, да по наледи, переносили на берег.
Блядь, помню, как померзло портвейна, то ли "Кавказ", то ли
"Иверия".. - Solo(17.07.2026 18:07)
- Ога!!! А погода на Марсе - не ахти.. - Solo(1 знак., 17.07.2026 17:30, ссылка)
- Отнес квартальные отчеты в налоговую.. Зашол в "Ваську".. Там беру
обычно светлое, нефильтрованное. А тут вижу новый кран и этикетку:
"Мальцов", 14,5%/5%.. 200 рэ.. Посчиталл остаттки пенсии в
кошельке, наскреб на 1.5 л. Вот полдникую, посасываю и пишу вам,
дорогия бедуины.. - Solo(1 знак., 17.07.2026 16:02, ссылка)
- "Кровавая Мэри" вышла на промышленный уровень. Самую вкусную КМ я
пил в городе Усинске в коктейль-баре "Айсберг": томатный сок
заканчивался, потому был только для дам, а для суровых вахтовиков
бармен предлагал замену томатного сока на водку. С учетом того, что
в продаже была только "Ишимская" 45 %об., то коктейль получился
превосходный. - bodis(17.07.2026 14:43)
- Томатный сок с водкой? :) - Cкpипaч(17.07.2026 13:53)
- Философское. Cкpипaч(1 знак., 19.07.2026 09:07, Off, картинка, полностью)
- Грозовой фронт Tech_(30 знак., 17.07.2026 17:12, Off, картинка, полностью)
- Какой-то интересный глюк - при раскрытии любой темы топика
нажиманием на (+) на экране с топиками появляется пустое место в
самом верху всех топиков, и это пустое место по размеру (высоте)
совпадает с лентой новостей (которая справа). Это у меня одного
так? Браузер - MS Edge - il-2(10.07.2026 07:33, Webmaster, полностью)
- Кто-нибудь уже видел фильму "Гражданин мститель", запрещённый к
просмотру в Европе, выложенный лично Маском в Хе и, как говорят,
доступный на торрентах? Стоит смотреть, или достаточно знать, что
есть этакое? - Бapбoc(17.07.2026 20:34, zen, полностью)
- Обратная задача. Переехал с GD32F103 на STM32F103. Перестал
работать таймер TIM1!!!! Все включено. В отладчике вижу:
тактирование на шине включено, таймер включен, а CNT не тикает! Я
начинаю верить в чудеса... - IBAH(17.07.2026 21:50, ARM, полностью)
- Подскажите, какая существует альтернатива Multisim с похожим
интерфейсом ввода схемы для симуляции? Кроме Proteus. Multisim
никак не показывает нелинейность транзисторного двухтактного
усилителя вблизи 0,7В. - Make_Pic(01.07.2026 18:56, SCH, полностью)
- и к слову о русских. "На Украине предложили переименовать страну в
Русь." Это прикол российской пропаганды? Лaгyнoв(100 знак., 17.07.2026 19:44, Off, ссылка, полностью)
- А Задорнов то оказался прав :-) - il-2(1 знак., 16.07.2026 15:32, zen, youtube, полностью)
- WCH обновили Mounriver Studio. Теперь пакет для Linux -
MounRiverStudio_Linux_X64_V2.5.0.deb. Саму среду не ставил, но
проверил OpenOCD. Nikolay_Po(685 знак., 30.06.2026 14:36, ARM, картинка, полностью)
- Сейчас общался с одним знакомым торгующим всякими около
электронными вещами - оборудованием, расходными материалами,
комплектующими, подрабатывающий контрактной сборкой. Нарассказывал
всяких ужасов, про грядущий "честный знак" в электронике. Говорит,
что у него сейчас зависли несколько партий пустых плат на таможне
без этого долбанного знака. После нового года тебе никто резистор
не продаст, если ты не состоишь в этой системе. Нужно у себя
заводить специально обученных людей БAPMAЛEЙ(47 знак., 16.07.2026 20:14, Off, полностью)
- Ну что, все уже почитали отзывы об "Одиссее Ноланда"? :) Что, к слову, у AI'шек с "повесточкой"?
Ну, типа, на запрос "красивая белая женщина" выдавать исключительно
одноногих негритянок в белых платьях, а? Cкpипaч(1 знак., 17.07.2026 08:59, Off, картинка, полностью)
- Он не любил Россию... =L.A.=(287 знак., 12.07.2026 13:23, zen, ссылка, полностью)
- Кстати, кто-нибудь обратил внимание, что Медведев в Телеграме не по
злорадствовал в своей любимой манере. И даже М.Захарова промолчала.
Не отслеживаю Соловьёва, но, видимо, тоже. SciFi(46 знак., 16.07.2026 16:42)
- Он никого не любил. Шут гороховый. - =AlexD=(13.07.2026 10:26)
- Говорят вечером в субботу, 11 июля, сенатор США Линдси Грэм
скончался в результате апоплексического удара Boвa(27 знак., 12.07.2026 18:05)Cкpипaч
- Он в это время находился на Украине, но об этом как-то скользко
пишут - "10 июля Грэм встретился с Зеленским, вчера (11 июля, в
день смерти???) был на заводе БПЛА в Киеве". il-2(95 знак., 12.07.2026 15:19, ссылка)
- "Если Бога нет, то кто это сделал? Шах и мат атеисты!" - POV(12.07.2026 15:02)
- если пархатый англо-сакс тебя не любит - верный признак что ты
делаешь все верно! хочеш быть успешным - продолжай в том же духе! - klen(12.07.2026 14:40, +1)
- Закон о спасении Америки. Трамп речь толкнул. Вот текст, оригинал
на ютубе. - Бapбoc(1 знак., 17.07.2026 09:11, Off, ссылка, полностью)