- Хочу поюзать GD32F405. Я так понимаю полный аналог STM32F405? + выполнение кода из ОЗУ (кеш на всю программу) - IBAH(05.08.2026 11:38, ARM, полностью)
- Потребление (мА) CH32V003 - некоторые исследования при постепенной
подаче питания от 1.2В до 5В. Zikon(491 знак., 06.09.2026 22:28, ARM, ссылка, картинка, полностью, +2)
- Продолжение исследования потребления чипов при старте и сравнение
малого потребления (N32,PY32,STM32,CW32) N32G435 тот же кристалл
что и N32L4xx и в данном тестировании использовались библиотеки от
N32L406 Zikon(1 знак., 17.09.2026 13:05, картинка)
- Переделал и добавил тесты с GPIO в Analog mode - добавил V006, X035
и ещё Zikon(1 знак., 08.09.2026 14:51, картинка)
- Когда-то я тоже снимал зависимость потребления для ch32v103, но в
режиме отключения (standby mode). Указанные в даташите значения
были только при питании 3 В. Если повышать до 5 В, ток возрастал
чуть ли не до сотни микроампер. Пишу по памяти. Но если интересно,
могу перемерить. - COKPOWEHEU(07.09.2026 13:39,
)
- "Портебление" :)) В заголовке графиков. Спасибо! Хорошая,
конкретная инфа. - vpv.vpv(07.09.2026 08:37)
- Новый MIC32-2 / К1948ВГ1Т (~ STM32H7). Утянуто с Электроникса. - !Neofit(1 знак., 13.09.2026 12:20, ARM, ссылка)
- Отладка WCH CH32V317. Есть странности/глюки. Вроде, не фатальные,
но попивают крови. Дублирую тут своё сообщение из группы RISC-V
MCU: Nikolay_Po(2004 знак., 06.09.2026 01:37, ARM, полностью)
- постоянно натыкаюсь на странное поведение v307 - после передачи
счечик DMA обнуляется а бит EN у канала нет, поведение не такое как
у ST мы привыкли, тут могут быть истоки проблемы при записи в
счетчик нового значения. в V003 рабоате как у всех = EN
сбрасывается аппаратно. но это все не про отладку как у вас. - klen(11.09.2026 16:57)
- Ну, ниже я сегодня дал пояснение, что глюки были, по большей части,
из-за гонок - транзакция SPI заканчивалась раньше и генерировала
уведомление задаче-драйверу FLASH раньше, чем мой код, запускавший
транзакцию, устанавливал подходящее состояние конечного автомата.
Но это не отменяет влияния отладки на тайминги работы всего. Nikolay_Po(335 знак., 11.09.2026 17:16)
- Там такое: на высокой скорости, СЦК тратит время на поход через
пин, дорожку, пин, схему(задержка в буферах-регистрах), пин,
дорожка, пин схема сдвига. На 70+Мгц, это, порядка 13-15нС. или
6-7, ХЗ, как у вашего ЦПУ СПИ организован. Если задержка получается
впритык, то вот вам сбои чтения. Ибо приёмный регистр получает СЦК
прямо изнутри проца. При записи проблем не будет. И снижая частоту,
вы выходите из впритыка. - mse homjak(11.09.2026 17:26)
- Рискну предположить, что это может быть связано с доступом
отладчика к периферии "на лету", т.е. и программа исполняется и в
отладчике показывается значение регистров периферии. В какой-то
момент доступ к периферии со стороны отладчика и ядра как-то не
удачно накладываются друг на друга и происходит сбой. - AlexBi(06.09.2026 09:09)
- USBFS (Usb Mass storage) GD32f407v что за фигня? Пробую демо из
официальных примеров. Balda(214 знак., 08.09.2026 12:00, ARM, полностью)
- Переехал с STM32F405 на GD32F405. Не стартует передача DMA в
Уарт!!! если сначала вздрочнуть записью USART1->DR все ОК. Как
решить не записывая всякий мусор в УАРТ? - IBAH(08.09.2026 14:24, ARM, полностью)
- Подскажите пожалуйста как поднять с нуля платку типа
BeagleBoneBlack после ремонта с перепаянной чистой eMMC. С
комплектной CD-card плата загружает Linux и работает до момента
извлечения карты (доступен терминал). И еще можно как-то проверить
работоспособность припаянной микросхемы eMMC? - NeedHelp(07.09.2026 16:21,
, ARM, полностью)
- 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)
- Кортекс М, memcpy() через DMA. Имеет смысл? по идее, если
тормознуть проц, еще как имеет. Вопрос. Как изящно тормозуть проц и
запустить его по окончании работы DMA. Делать прерывание по концу
ДМА, а процессор уводить в __WFI(); ? - IBAH(31.08.2026 16:48, ARM, полностью)
- как вы скзали wfi + dma irq. но я бы не засыпал проц - в это время
параллельно исполнять целевой код. то есть распараллеливание
копирование и еще чтото. - klen(31.08.2026 19:10)
- Зачем? - SciFi(31.08.2026 16:48)
- ну мне кажется, что это всяко быстрей, чем по байтику копировать - IBAH(31.08.2026 18:51)
- Библиотечные memcpy не по байтику копируют, там разогнано. Ну и
опять же, зачем? Куда-то опаздываем? - SciFi(31.08.2026 19:07)
- Быстрее будет только на заметных объемах данных, т.к. ДМА надо
настроить, это время. А еще ДМА может работать на частоте в разы
ниже процессорной, тогда выигрыша по скорости может не быть. AlexBi(104 знак., 31.08.2026 19:06)
- Могу ошибаться, но разве DMA не через раз (условно) шевелится,
только когда шина высвободилась?... POV(189 знак., 31.08.2026 18:55)
- Обычно шины ОЗУ и ПЗУ разные, шина ОЗУ часто свободна - AlexBi(31.08.2026 19:09)
- Насколько я понимаю проц имеет самый высокий приоритет на шине, и
если его усыпить, то DMA все по быстренькому перекидает, и гораздо
быстрее чем проц ручками. - IBAH(31.08.2026 19:09)
- Всё уже было. Вот тут с картинками: SciFi(2 знак., 31.08.2026 19:14 - 19:25, ссылка, картинка)
- Странно: почему у newlib-nano такое сильное отставание в memcpy()? Eddy_Em(107 знак., 01.09.2026 09:03)
- Там как раз по байтику. Зато минимум кода. - SciFi(01.09.2026 09:16)
- Ты в листинг загляни. Бывает, оно оптимизирует и всё, что можно,
копирует полными словами. А бывает - по байтам. Может от версии
библиотеки зависеть. YMMV. - Nikolay_Po(01.09.2026 09:16)
- Еще ведь от модели МК зависит: на всяких "нулевках", если
копировать невыровненными словами, будет хардфолт. Т.е. недостающие
до слова из головы и хвоста надо побайтно, остальное - по словам. Eddy_Em(546 знак., 01.09.2026 10:27)
- По умному эти функции должны инлайниться самим компилятором (его
оптимизатором), и не зависеть от библиотеки. Такие компиляторы
есть, но не все. - AlexBi(01.09.2026 09:51)
- memcpy не такая уж простая функция. я бы сказал, что инлайнятся
реализации в зависимости от условий. самое жирное в плане
реализации - копирование перекрывающихся областей - когда
(src+size) > dst. потому везде пихать одинаковое - как-то
нерационально. и вместо поиска оптимальной реализации в рантайме и
соответствующего оверхеда это дело по возможности инлайнится именно
компилятором. - Vit(01.09.2026 12:25)
- Есть плюсы и минусы у этого подхода. Обобщать "умно" или "неумно"
здесь едва ли имеет смысл. - SciFi(01.09.2026 09:54)
- Можете сказать какие есть минусы? - AlexBi(01.09.2026 09:56)
- ЕМНИП, сталкивался с тем, что компилятор решил, что указатель
выравненный, и заинлайнил соответствующее копирование, а он был
невыравненный. Можно, конечно, сказать, что сам дурак, но это ещё
одна мина на минном поле, можно было обойтись и без неё. - SciFi(01.09.2026 10:24)
- Что интересно - с отключенным у DMA FIFO получается немного
быстрее. - ЫЫyкпy(01.09.2026 07:12)
- негрузиться!!! что там? - IBAH(31.08.2026 19:21)
- Непонятная хня с Artery AT32F407. Пришли микрухи с новой партии
(год выпуска 2025, ранее 2024 были). Отдельной софтиной шьются
нормально, всё работает. А вот при записи из Keil во время
верификации появляются ошибки при записи в разных блоках. Чего
только не пробовал, нифига не помогает. Беру точно такую же старую
плату - всё норм, с новой проблемы. Уменьшение частоты
программатора не помогает. Паки все свежие, ревизии процов судя по
маркировке одинаковые - B. FDA(29 знак., 25.08.2026 20:56, ARM, полностью)
- Опять F405. Как изящно управлять размещением переменных в сегментах
памяти (CCM, SRAM1, SRAM2)? компилятор Кейл или ИАР, пока не решил. - IBAH(21.08.2026 19:20, ARM, полностью)
- Объявляешь свои переменные в именованной секции - через __attribute__((section(".ram_dma"))). Далее - в линкерном
скрипте указываешь, где располагать эту секцию. il-2(218 знак., 22.08.2026 06:18)
- Кейл ваще не знает, что такая память существует. Хотя туда бы
положить и стек IBAH(567 знак., 24.08.2026 16:26)
- странно, если в МК есть несколько видов SRAM, то Кейл об этом
знает. Если ему связно сказать - что за МК. К примеру, у меня
STM32L476, там SRAM1 и SRAM2 - Лaгyнoв(144 знак., 24.08.2026 19:54, картинка)
- RW_IRAM2 - не оно? - Nikolay_Po(24.08.2026 17:19)
- Не оно. CCM data RAM (64 KB data SRAM) 0x1000 0000 - 0x1000 FFFF IBAH(124 знак., 24.08.2026 18:26, картинка)
- О. Тут по картинке отлично видно, на какую память какую шину с DMA
периферии посадить. В принципе, если при исполнении кода, не
использовать SDRAM1 и SDRAM2, а использовать только код и данные из
FLASH и данные из CCM, то исполнение кода и работа DMA друг другу
мешать не будут. - Nikolay_Po(25.08.2026 10:11)
- Ну, жонглёж битами - это, всё-таки не память. И когда с ним
работал, я просто делал вычисляемые на этапе компиляции указатели
для всего нужного. Выделять его в отдельную секцию памяти смысла
нет - как память он не работает, а переменные компилятор всё равно
не сможет разместить автоматически - привязку к адресам бит всё
равно делаешь вручную. Nikolay_Po(44 знак., 25.08.2026 08:06)
- Ну так пропишите недостающую секцию сами. - Nikolay_Po(24.08.2026 17:16)
- Если очень хочется, чтобы определëнная переменная была в нужном Вам
сегменте - нужно это явно указать. Не знаю про Иар, а в Кейле это
возможно. - Пaлыч(21.08.2026 23:00)
- Как? Доверится компилятору ))) - POV(21.08.2026 20:09)
- Как написал бы Евгений, "сводный топик по китайским контроллерам".
Логистика выкатила список замен для STM32L431/476 RC/RE T6. Если
знаете компромат, укажите плз. VLLV(371 знак., 17.08.2026 10:47, ARM)
- Господа товарищи, не хотите поговорить об отладке stm32, через
Ethernet? Balda(131 знак., 30.07.2026 08:06, ARM, полностью)
- компилируем blackmagic debug probe в виде приложения (BMDA). для
хоста (может быть PC или одноплатный компик типа малинки) к
которому подключен отлаживаемый девайс. он открывает порт к
тоторому удаленно по IP можно подцепить GDB задача решена
бесплатно. я так делаю когда с высоковольтными вежами балусь - чтоб
не убило нах. - klen(1 знак., 30.07.2026 13:29, ссылка)
- "все уже украдено до нас". Ищите по ключевым словам ESP32
BlackMagic probe. - 3m(1 знак., 30.07.2026 10:27, ссылка)
- Я не увидел терминов "гамак" и "лыжи". - Kpoк(30.07.2026 09:40)
- Вроде вот жеж JetLink Flasher Pro -> - Argon(1 знак., 30.07.2026 09:19, ссылка)
- Так ведь openocd поднимает сетевое соединение, с любого компа в той
же подсетке можно подключиться… Eddy_Em(408 знак., 30.07.2026 08:49)
- 13 т.р. это "брови опадают"? VVB(16 знак., 30.07.2026 08:25)
- а что там (в Эзернете) принципиально лучше обычного СТ-ЛИНК?
Скорость выше? Из интересного - вот купил в Озоне за 260 руб копию
ст-линка. Вместо фирменного один к одному - Лaгyнoв(1 знак., 30.07.2026 08:24, ссылка)
- Ёё-хо-хо.. и бутылка рома! не зря просидел 48 часов в трусах
впилившись в монитор. прикрутил FreeRTOS TCP к ch32v307!! Nikolay_Po, думаю из Новороссийска немедленно в мою сторону
выдвенется ясщеГ с вкусным южным вином! libwchnet - в помойку!
немедленно нужно бахнуть... вопрос чего? рому или арарата...вот в
чем вопрос klen(964 знак., 20.07.2026 23:57 - 22.07.2026 16:23, ARM, ссылка, ссылка, полностью, +2)
- Усе готово, усе былоеее...! Связанные списки дескрипторов туда и
сюда, зеро копи тула и сюда - рабоает. Ну что тут еще можнл
захотеть? Наверносамое время втащить накопленный опыт в 1G mac
который в ch32h417. - klen(27.07.2026 22:17)
- нужно отметить что FreeRTOS TCP текущего разлива из транка, а это
4.4.1+ .... ну сильно много они доделали по сравнению с тем что
было 2 года назад. - klen(22.07.2026 15:30)
- наладил схему - создается одна серверная задача аля' Cron, в ней
открываются, биндятся и листинятся все слушающие сокеты, они
добавляются в SET и задача блокируется вызовом FreeRTOS_select -
далее если по какомуто слушающему порту прилетит клиент -
FreeRTOS_select отпускает и на "зазвеневшем" сокете вызывается
FreeRTOS_accept -> далее передача комуникационного сокета в
пул статически созданных задач отработки соединения. все экономично
по потокам и памяти. летает klen(18 знак., 22.07.2026 15:27)
- На всякий случай инфа - использую CH32F207 с стеком циклонтцп. В
общем, работают несколько приборов несколько месяцев, полет
нормальный. Cтaк(160 знак., 21.07.2026 18:57,
)
- Навскидку, не оценивали, сколько занимает Ethernet+TCP в прошивке?
Сколько выделили ОЗУ для пакетов? - Nikolay_Po(21.07.2026 19:41)
- Т.к. озу не хватает, то пришлось сломать привычки и перейти на
динамическое выделение памяти. Т.е. пришел на порт сервера запрос -
выдать жирную json. Я пытаюсь выделить средствами freertos
динамическую память под буфер, если свободного озу нет, то
отправляю отлуп. Если есть - то выделяю буфер, формирую json,
отправляю, освобождаю память. так крутится дофига сервисов и ничего
насмерть не падает. - Cтyк(22.07.2026 05:37,
)
- Несколько пожирнее будет чем lwip. Но циклон на каждый чих создает
задачу freertos что сильно жрет озу, но зато честная неблокирующая
многозадачность. Cтyк(2330 знак., 22.07.2026 05:28,
)
- Ну ты крут! Не смотрел ещё, для моего CH32V317го придётся фай
переписать. Но то, что буфера и прерывания налажены - это большое
дело! - Nikolay_Po(21.07.2026 18:50)
- Сохранилась ли у кого uc GUI старая? ASDFS(243 знак., 21.07.2026 20:32, ARM, полностью)