- WCH обновили Mounriver Studio. Теперь пакет для Linux -
MounRiverStudio_Linux_X64_V2.5.0.deb. Саму среду не ставил, но
проверил OpenOCD. Nikolay_Po(685 знак., Вчера, 14:36, ARM, картинка)
- riscv и регистр глобального указателя $gp: не будем пренебрегать
ручной оптимизацией. klen(12656 знак., 28.06.2026 16:56, ARM, картинка, картинка, полностью, +2)
- Тут мне не понятно зачем понадобилось создавать свой сегмент данных
для своих переменных, почему не положить их принудительно в уже
имеющиеся через __attribute__((section(".sdata"))) или .sbss Тогда
не потребуется править скрипт линкера, подойдет стандартный. - AlexBi(Вчера, 09:57)
- Что-то я не понял, а почему этим линкер занимается, а не
компилятор? Самая тема использовать его, как на старых интелях, как
регистр сегмента данных (и тасовать в хвост и гриву, переставляя то
туда, то сюда). Нет? - Cкpипaч(29.06.2026 15:52)
- У меня в проекте, когда-то созданном на базе шаблона из MRS2,
релаксация с глобальным указателем включена. Поигрался - оказалось,
для текущего состояния проекта, лучшее значение -
-msmall-data-limit=256. Nikolay_Po(1 знак., 29.06.2026 15:16, картинка)
- А есть какая-то опция (или pragma) ассемблера чтобы команда LA
генерировала абсолютные адреса ? - Zikon(29.06.2026 09:30)
- MRS2 - стандартные шаблоны уже поддерживают данный момент
использования $gp (-Wl,--relax по умолчанию). И .sbss=.bss доступна
по $gp. Ключ -msmall-data-limit влияет только на .sdata. В
настройках проекта есть этот ключ в MRS2 и по умолчанию =0. Иногда
в готовых проектах -msmall-data-limit=8 ( только до 64 бит
переменные помещать в .sdata ) в памяти размещение сегментов .data
.sdata .sbss .bss и $gp инициализируется как sdata_start + 0x0800 - Zikon(29.06.2026 07:23)
- В самых благоприятных сценариах эта оптимизация может уплотнить код
на 1..5%. В типичных сценариях речь скорее идёт о десятых долях
процента. - SciFi(1 знак., 28.06.2026 23:56, ссылка)
- Снимаю шляпу перед компетенциями! И всегда тебя почитываю, чтобы в
тыковке что-то отложилось. Но, будучи полным профаном, скормил
ветку болвану, у него есть сомнения. Болван блажит или не всё так
просто? - POV(1 знак., 28.06.2026 22:56, ссылка)
- Тащ Клен! Ты вовремя. Как раз хотел спросить насчёт GP, есть ли
нюансы. Нет ли директивы для GCC, чтобы при входе в блок кода,
указать ему: А тут gp у нас другой! Исполняй! Nikolay_Po(500 знак., 28.06.2026 19:07)
- Товарищи, может присоветуете, что можно глянуть? Пытаюсь LwIP
запустить на плате STM32F107. Исходники LwIP я взял 1.4.1,
прикрутил к проекту. Хочу пинга добиться. По шагам прошелся, вроде
инициализируется. Линк подымается - на компьютере сеть появляется.
Но если слать пинг, то в вирешарке не вижу ICMP запросов от
компьютера. Не знаю чтобы это значило. Если в плату залить прошивку
рабочую, на основе uIP - все работает. Значит железо, кабель,
настройки IP на компьютере не vesago(278 знак., 21.06.2026 18:02, ARM, полностью)
- В общем пробовал я крутить с DMA - не прокатило. В итоге
использовал гигодивайсовский пример с библиотекой 2.2.1. За полчаса
поправил - с полтыка завелся. - vesago(25.06.2026 22:05)
- А чего такой старый стек? Сейчас актуальный 2.2.1 - FDA(25.06.2026 09:45)
- Под отладчиком глянул. Прилетают пакеты, разбираются, определяются
как ARP и далее вызывается low_level_output. Там оно в DMA
отправляется. Почему не приходит назад в компьютер - не понятно.
Видно криво DMA работает. Проект у меня под STM32F107 в IAR
скомпилирован. А гружу в GD32F107. Может тут косяк - в мифической
совместимости st и gd. Я уже один раз об USB споткнулся. Пришлось
переписать на гигадивайсовских либах. Придется китайский пример
заюзать. В проекте для ST vesago(69 знак., 25.06.2026 08:10)
- Иишечка накидывает версии: SciFi(2 знак., 25.06.2026 10:31, ссылка)
- Спасибо, большое. Я уже курсором прокатывал и с дипсиком обсуждаю.
Но у вас более глубоко. Попробую скорректировать соответственно.
Тут видите - неприятно, что проект на uIP работает без проблем.
Потом на этой же плате проект на lwip 1.3 с использованием dhcp
тоже работает. Коллега утверждает, что в кубе собрал мелкий пример
- тоже работает. А я решил с нуля собрать из известного примера STM
и обломился. Хотя с виду просто как валенки. И мне любопытно, в чем
суть проблемы. vesago(211 знак., 25.06.2026 11:01)
- Я в своё время (18 лет назад, да, тогда ещё stm32f107 не было)
просто выкачивал lwip из первоисточника. Драйвер для MAC делал сам,
там 300 строк всего, в отличие от монстра в примере STM. И делал
голый проект, добавлял к нему необходимое по кусочкам. Наверное,
есть плюсы и минусы у такого подхода, но в результате хотя бы точно
понятно, что, куда и зачем, и вообще как это всё работает. - SciFi(25.06.2026 11:19)
- Вот что у меня записано: alag57(58 знак., 21.06.2026 18:44)
- Перед ICMP должен быть ARP. Компьютер не получил ответ на запрос
ARP, до ICMP дело не дошло. - SciFi(21.06.2026 18:05)
- ну прям вообще.... 20 руб - микроконтроллер. CH32V003F4U6 - в
Промэлектронике.... Куда катится мир? - Лaгyнoв(10.05.2026 18:41, ARM, полностью)
- Да вроде сейчас даже на озоне от 17 руб есть. Если прям оттуда то
дешевле . Катушкой мне предлагали по 14 за 30 дней . - Driver_gv(02.06.2026 16:02)
- вот еще замена авэр'ок stm8 и прочей шушеры, STM32H503, есть
мелконогий корпус LQFP48 , 198руб klen(2 знак., 20.05.2026 14:13, ссылка, ссылка)
- Вопрос к тем бедуинам, кто всяких этих мелких таракашек (x003
всякого пошиба) активно щупал и юзал. Есть ли среди них такие, в
которых нормально и надежно работает I2C слейв? Возникла потребность запилить переходничок из "странного" в I2C,
но памятуя о том что чуть менее чем везде и мастер-то нормально не
работает, как-то стремновато... - LightElf(18.05.2026 17:17)
- Очень многие содержат подобный модуль I2C как у STM32 со всеми его
нюансами, но много китайских производителей имеют собственные
модули I2C (HC32,CW32,LKS32,CMS32 и пр.) CW32 например скопировало
много периферии от HC32 , причём от новых моделей. И например новое
поколение HC32L021 и HC32L12x так вообще содержит модуль HSI2C
(название не очень) - I2C HighSpeed (3.4M). А где ещё встречается
I2C HS ? - Zikon(20.05.2026 13:00)
- Ддя PY32F0 есть пример с разными выкрутасами - похоже, и это полная
копия разработок для STM32 (одинаковые проблемы) Zikon(7 знак., 19.05.2026 14:25, ссылка)
- Именно. Решил вопрос с CH32V006, ведомым, посадив в главный цикл
"надзирателя" - который по системному таймеру проверяет по таймеру,
ОК обмен или нет. И если не ОК, то сначала вырубает слейва совсем,
берёт GPIO под своё управление. И, сначала, убеждается, что уровни
высокие на обоих линиях шины, и лишь затем включает модуль. Nikolay_Po(517 знак., 18.05.2026 18:48)
- Во люди прозрели.. Второй год в серии стоит. Сотни, или тысячи
продано и работает. По процам - отказов ни одного за два года.
Только я выпустид около десятка разных устройств на них. Ну
серийность разная конечно. Есчть нюансы, но не существено. Заменили
все PIC16 и ниже, и почти все PIC18 малоногие на них. - Driver_gv(13.05.2026 21:17)
- 003 устарешие. Рекомендую тем кто не успел подсесть на них -
рассмотреть использование любых 00х, нк взирая на цену. 003 сами
китайцы как мне ккааца считают пробой пера в классе супер легких
мк. 00x - исправление выявленных несуразностей. - klen(13.05.2026 01:53)
- В отличие от 003, в новых 005 и 006 пропали корпуса SOIC-8 и
SOIC-16. Для некоторых производств и некоторых простых проектов (но
производимыми тиражами от тысячи в месяц) - это гораздо важнее, чем
добавление каких-то там инструкций для аппаратного умножения в
ядре. :)) - vpv.vpv(14.05.2026 09:35)
- Несуразностей ещё много осталось и даже добавились - Flash стала
медленнее (~16MHz) TempSens - так и нет; LP_run - по сути нет;
Ремапинг расширили, но он так и остался "групповой" как в STM32F103
; потребление не уменьшили; питание тоже чуть расширили 2.4-5.5В -
так что очень маленький шажок. -- получше чуть смотрится CH32L103,
но он 1.8-3.6В - Zikon(13.05.2026 06:22)
- В 00x в отличие от 003, имеет процессор v2c в котором доблен модуль
умножения/деления. Это может быть принципиальным при выборе под
проект. В то что кто то когда то сделает хорошую переферию я не
верю до тех пор, пока потребители мк не получат инструменты их
самостоятельного изготовления. За 16 битные таймеры с 8 битным
repetition counter и spi master, у которого нет аппаратного сs и
настроки длинны транзакции... давно за эту ересь пора сжигать на
костре. Но паства klen(26 знак., 13.05.2026 11:05)
- Где в V00x деление нашли ? Zmmul - расширение добавляет только
умножение! - Zikon(13.05.2026 12:30)
- Cypress делал PSOC - микроконторллеры с программируемой логикой.
Это дело сейчас под крышей Infineon, вроде бы до сих пор делают: - SciFi(1 знак., 13.05.2026 12:29, ссылка)
- И как-же STM32G0, STM32C0 - всё же уже давно сделали, а китайцы
даже идут дальше ( с тем-же TIM1 ( ATIM ) в CW32L01x - чипы очень
интересные ( хоть там и смесь разной периферии STM32 и HC32 )) -
или надо обязательно совместимое с STM32 ( как CH32, PY32, N32,
APM32, GD32 ). А оригинальные китайские ( HC32, LKS32, CMS32 )
можно и не учитывать ? - Zikon(13.05.2026 12:21)
- Мы их уже пару лет как используем. Он по ногам и по сути как
STM8S003, только без ЕЕПРОМ. - Звepoящep(11.05.2026 07:53)
- CH32V003J4M6 - 15 руб в ЧипДипе. - argus98(1 знак., 10.05.2026 20:35, ссылка)
- PY32F002AL15S6 (so8) в Платане от 10,8 р и периферии больше и
питание 1,7-5,5В и пр. ( только многие "плюшки" неофициально ) Zikon(14 знак., 10.05.2026 20:56, ссылка, ссылка)
- Нет ли данных какое у этих РУ32 потребление в состоянии сброса?
Т.е. настраиваем BOD (разные пороги на вкл и выкл это удобно),
ставим конденсатор по по питанию, запитываем током, например,
0.2мА. Это позволит чипу периодически запускаться? - AlexBi(11.05.2026 16:50)
- В режиме LP run (32КГц) можно и не переодически запускаться, а
работать - потребление 160-170 мкА даже с периферией, а если
Flash-sleep сделать - то 90-110 мкА - Zikon(11.05.2026 17:29)
- BOR ещё не пробовал, но получается порог на включение задаём в
Options Bytes, а порог на выключение уже в программе поправляем
FLASH.OPTR - Zikon(11.05.2026 17:19)
- Есть - тестировал - при задании в стартапе сразу на старте (3
команды asm) миниальное значение HSI ~ 2МГц получим ~290 мкА без
включенной периферии. Стартует чип по умолчанию при 1.7В некоторые
примеры можно посмотреть а гите по ссылке и в других репозиториях Zikon(7 знак., 11.05.2026 17:05, ссылка)
- На сколько я понял по другим чипам, проблема в том, что пока
процессор находится в сбросе у него запускается дефолтный генератор
и все ядро начинает потреблять, хотя ни чего еще не делает. Если и
эти РУ32 ведут себя так же, тогда они в сбросе будут потреблять
около 0.5мА (странные у них указаны данные о потреблении в
даташите, не показана зависимость от напряжения питания), а от
0.2мА они просто не запустятся. - AlexBi(11.05.2026 20:59)
- А вот как раз PY32 может и справится, по сравнению с другими
чипами, если правильно расчитать конденсатор, питание, BOR (вкл. и
выкл.) и программу правильно написать. Один из самых эффективных
чипов по потреблению сейчас. А потребление что при 3.3В что при 5В
получалось одинаковое в холостых режимах. - Zikon(11.05.2026 22:07)
- Сможете посмотреть как оно на самом деле у РУ32? Т.е. сколько он
потребляет, если включить BOD и подать питание ниже порога?
Учитывая то, что ядро, память, периферия, все питается от 1.2В,
одинаковое потребление может получаться. Там только АЦП и порты
должны давать зависимость от питания. - AlexBi(12.05.2026 08:59)
- Вот есть интересное исследование, и скорее всего до порога BOR вкл.
будет также как до 1.7 POR Zikon(7 знак., 12.05.2026 13:38, ссылка)
- Появилась возможность проверить данные на практике, и что-то у меня
не получается ни чего хорошего. Купил на али пару платок с
PY32F003F18P6. Питание 3.3В, измерил потребление в состоянии когда
на сбросе ноль, получил 0.42мА, от 0.08мА это очень далеко, не знаю
почему так получилось. AlexBi(1546 знак., 02.06.2026 15:56)
- Ещё не проверял такое, надо будет проверить без лишних компонентов
и с отключенным программатором. А программирование - проблемы были
только при низких и высоких скоростях чипа, но решались. Zikon(119 знак., 02.06.2026 18:45)
- Получил китайскую платку с PY32F002B, измерил потребление чипа при
сбросе, получил 0.55мА, примерно как у F003. Обнаружил что чип
довольно легко "окирпичивается". В своей программе, в самом начале,
не подумавши, переназначил вывод SWD в обычный GPIO, теперь
подключиться программатором не могу. Судя по сведениям из и-нета
эта проблема не у меня одного, решения нет, только замена чипа.
Производитель предлагает ставить паузу 100мс перед переназначением
вывода, что бы AlexBi(74 знак., 25.06.2026 16:38)
- С программированием разобрался, если переходить в "стоп", тогда
надо подключаться с нажатым сбросом. JLink сделанный из bluepill-а
у меня в Keil c Puya не заработал, со своими родными программами у
jlink тоже получилось только память смотреть, стирание чипа не
получилось, хотя jlink писал что все успешно прошло, фактически чип
не стирался. Потребление 0.08мА у меня получилось только в стопе,
при включенном LSI и работающем LPTIM. C LPTIM вообще обнаружилась
засада, AlexBi(263 знак., 03.06.2026 18:47)
- Спасибо, интересное исследование. Согласен, что скорее всего так и
будет, около 80мкА в состоянии сброса, при нормальной температуре. - AlexBi(12.05.2026 15:31)
- бл... Кто меньше?? :-)) - Лaгyнoв(11.05.2026 07:55)
- Кстати, в чём их программируют и отлаживают? - Звepoящep(11.05.2026 07:54)
- Куда-то катится - и в Электронщике N32G401K8Q7-2 qfn32(4x4) за
< 20 руб Cortex-M4F / 72MHz / 64K / 16K - Zikon(10.05.2026 20:26)
- Аналогичный PY32 по 16 руб видел. Правда - год назад. - il-2(10.05.2026 19:17)
- Интересно, где скидки на продвижение, а где коммерчески оправданная
цена. - SciFi(10.05.2026 19:36)
- Жэлезный болван рассказал, что у CH32V003 техпроцэсс, 90мкм и
площадь кристалла 2мм2. Для вафли 200мм и процэнта годных 0,9, на гора, будет, порядка
14тыс кристаллов. По таким старым нормам, вафля легко можэт стоить
меньше килобакса. Если вафля 300мм, то там ужэ будет 30к+. Ташта,
вполне рабочая ситуация. - mse homjak(14.05.2026 00:32)
- Болван берёт информацию отсюда: - SciFi(1 знак., 14.05.2026 08:04, ссылка)
- Какая разница, откуда? Мелкий чип, отлажэнный(и дешовый)
техпроцэсс. Вот и 10руб в магазине. - mse homjak(14.05.2026 11:36)
- Там чувак упоминает, что некоторые тестируют так, что стоимость
теста превышает 10 руб. Интересная мысль. - SciFi(14.05.2026 11:53)
- Когда меня учили делать микросхемы, то 70% себестоимости, были
операццыи контроля-тестирования. Но тогда ещо никто не догадался
делать ЖТАГовое сканирование кишок и пинов. - mse homjak(14.05.2026 13:00)
- Не знаю как в данном случае, но давно есть технология
технологических соединений на вафле. Теоретически все чипы можно
соединить по житагу и как минимум дефекты логики и памяти
протестировать. После чего дохлые помечаются и идут в отвал без
корпусирования. А это охеренная экономия. - =AlexD=(14.05.2026 13:55)
- дык, если в цэпочке кто-то сдох, то тест не пройдёт у всех. Думаю,
там каждый чип, отдельно. - mse homjak(14.05.2026 21:44)
- Когда чип 2мм2 , что наверное сравнимо с шириной реза, заманаешься отдельно
тестировать. Не удивлюсь если там тестируют кластерами, и бракуют
сразу весь кластер если что. Да и не просто дорожки меж чипов, там
и цельная логика помещается по линии реза. Много чо можно
придумать. - =AlexD=(15.05.2026 09:46)
- Там нет реза. Идёт ролик/скрайбер, типа стеклореза, а, потом, на
резиновом сегменте шара, пластину тупо ломают на чипы.
Предварительно наклеив за низ на скотч. По крайней мере, раньше
было так, но не думаю, что смысл радикально поменялся. Канэшно,
сантиметровые чипы ломают по другому, но то такэ... - mse homjak(15.05.2026 11:14)
- Между тем, в даташыте оч. много цифр, и почти все они не имеют
отношения к логике и памяти. Наверное, тестирование всего этого
хозяйства - интересная наука. - SciFi(14.05.2026 14:00)
- Да, подозрительно. Бapбoc(1 знак., 10.05.2026 19:51, картинка)
- У меня на работе МК CH592F (Bluetooth LE5.4, 448К Flash, 26K RAM)
закупают по 35руб. Вроде как коммерческая цена. Наверное :-) - il-2(10.05.2026 19:47)
- RISC-V, прерывания, стек прерываний и mscratch применительно к ОСРВ
Задал вопрос в телеграм-канале RISC-V MCU. Задам и тут: Nikolay_Po(1626 знак., 10.06.2026 22:55, ARM, полностью)
- 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)
- А кто как ставит на Stm32 защиту от чтения? Имеется в виду
программно поставить зашиту Флеша.. Balda(440 знак., 20.06.2026 18:15, ARM, полностью)
- После того как проведена калибровка устанавливается уровень 1
автоматически. Запуск калибровки при установленном бите защиты
невозможен. - A.L.(21.06.2026 19:52)
- Конфигурации debug + release, по-моему - самое то. И зачем помнить,
если оно далее "все само"? - Argon(20.06.2026 18:29)
- А как это работает дебуг плюс релиз? - Balda(20.06.2026 18:32)
- Конкретно для Option Bytes - вот так: il-2(76 знак., 22.06.2026 08:11, картинка)
- Ну, например, в IDE создается, а далее выбирается конфигурация
Debug/Release. А в софте проверяется макрос, например, #ifdef
RELEASE и делаются нужные вещи. Например, инициализируется WDT или
еще что там нужно бывает. Argon(1 знак., 20.06.2026 18:41, картинка)
- BSRR не всегда полезен :( STM32F405, с одного порта сигналы идут на
логику и потом на триггер. Я ж "умный" переделал с двух
последовательных reset/set на единый bsrr. Все отлично работало на
столе только вот на объекте рандомно глючило. Грешил на все:
подключенный отладчик, статику, Панцирь прямо напротив окна типа
наводит радаром. Фигвам, оказывается сам дурак. Похоже BSRR не на
100% синхронно меняет состояние и проскакивают иголки. На объекте
разбирать установку чтобы 3m(169 знак., 16.06.2026 20:26, ARM, полностью)
- хм... я ведь тоже как-то наткнулся. Глючело. Не стал разбираться. И
сделал именно так - отдельно - Лaгyнoв(17.06.2026 14:01)
- небось без барьера потом тот же GPIO цеплялся - Vit(17.06.2026 08:02)
- "Похоже BSRR не на 100% синхронно меняет состояние" этого не может
быть, потому что не может быть! скорее всего дело в "триггере", как
он себя ведёт когда все RS меняется синхронно, или разные втекающие
вытекающие токи ЖПИО - IBAH(16.06.2026 21:11)
- У вас развитое воображение. А что делать, если нет желания тыкаться
осциллографом? Если что, я быстрее поверю в панцирь, чем в эти
иголки. - SciFi(16.06.2026 20:30)
- Панцирь я не убрал а глюки - да. Осциллографом потыкаюсь завтра в
макете. - 3m(16.06.2026 20:47)
- Это называется - выяснил количество прыжков и ударов в бубен,
необходимые для решения проблемы. А в чем было дело - осталось за
кадром. Так что замена бубна на осциллограф просто необходима :-) - il-2(17.06.2026 07:08)
- Поскольку ссылаться на божественное провидение в инженерной среде
не принято, ссылаются на "синхронность BSRR и иголки". Суть та же,
но уже не моветон :-) - SciFi(17.06.2026 09:13)
- Именно они, родимые. Ткнулся осциллографом и увидел иголочку. На
74ACT08 c 5V питанием идут сигналы с GPIO процессора. При
использовании BSRR в изменении сигналов есть перехлест по времени
примерно 1.8ns (когда падающий сигнал еще не спал ниже 2.4 а
нарастающий уже выше 2.4V). AC сука быстрая и формирует пичок
который иногда схватывает 74HC74 тоже с 5V питанием. Проблема
уходит если нет одновременного изменения состояния 1-0 и 0-1. Если
бы вместо ACT стояла HCT думаю никогда 3m(254 знак., 17.06.2026 12:20)
- В смысле вы формируете перепад 0->1 и у вас получается
0->1->0->1? И перепад 1->0 просто очень быстрый
и это и есть иголка? - Звepoящep(18.06.2026 07:13)
- насколько теперь понятно там ещё логика 74ACT08 после порта MCU
стоит и вот после неё пички вылезают при несинхронном изменении
порта, - '0' раньше чем '1' приходит на разных пинах вот и
получается проблема и ещё с учетом быстрой логики. - Zikon(18.06.2026 07:33)
- Только наоборот. 74ACT08 это элемент "И". Чтобы на выходе появился
"пичок" лог.1 на обоих входах так же должны быть лог.1. Точнее
будет так: лог.1 на одном входе достигает уровня VIH раньше, чем
лог.0 на другом входе достигает уровня VIL. - reZident(18.06.2026 07:40)
- А. Ну понятно. Интересно конечно, почему получается такая
несинхронность. Получается, что в единицу или ноль, кто-то быстрее
становится. - Звepoящep(18.06.2026 09:17)
- Это потому, что м/с (МК и 74ACT08) питаются от разных напряжений, а
пороги входных уровней ACT не симметричны относительно половины
питания (VIL<=0,8В, VIH>=2,0В). Даже при одной и той же
скорости изменения уровня сигналов переход 1->0 это
|3,3В-0,8В|=2,5В, а переход 0->1 это |0,1В-2,0В|=1,9В. В отличие, кстати, от серии AC, у которой CMOS-уровни (типично
VIL<=0.3*VCC и VIH>=0,7*VCC). Но проблема в том, что reZident(80 знак., 18.06.2026 12:46)
- Неидеальные и возможно чуть разные фронты+ несимметричные пороги.
Классические гонки и проц тут ни при чем. - Andreas(18.06.2026 10:49)
- Так на выходах проца не пичок, а чуть разная скорость
нарастания/спада просто? - Andreas(17.06.2026 13:42)
- Огромный пик - это, в смысле, при атомарном обновлении состояния
порта регистром BSRR, при настройке меньшей скорости - большей
длительности "иголка"? - Nikolay_Po(17.06.2026 12:30)
- Race condition >>> SciFi(2 знак., 17.06.2026 12:24, ссылка)
- Извини, но ты говоришь глупости. Разбираться с траблами нужно на
базе, запершись в кабинете. На объекте заказчика желательно
находиться как можно меньше, и чем меньше заказчик видит "грязного
белья" тем лучше. - Cкpипaч(17.06.2026 08:03)
- Очень интересно! Посмотрите пожалуйста! - Nikolay_Po(16.06.2026 20:54)
- удалось портануть lua 5.5.x из транка в ch32v307. Родя
Иерусалимский был бы гением если стал бы писать свою нетленку
НЕ-на-С.... но не гений. klen(4494 знак., 11.06.2026 01:36, ARM, картинка, картинка, полностью, +1)
- для меня таки настала новая эра - мульти ядерных микроконтроллеров.
с алика приехала muse lab nanoCH32H417. посчупал за вымя.. две
сиськи, а не одна как обычно, на осчупь приятно....карашооо klen(14259 знак., 08.06.2026 02:35 - 15:53, ARM, ссылка, картинка, полностью, +16)
- Подайте наводку на схему, [стандартные?] исходники отладчика и [стандартное] ПО отладки STM? Что-то вроде - "ST-link
из blue pill". Или надо искать какие-то сторонние исходники
реализации SWD? - !Neofit(01.06.2026 22:21, ARM, полностью)
- Коллеги, ну неужели некому подсказать простому пользователю,
который с Atmel никогда не имел дела, как восстановить J-Link 8 на
базе AT91SAM7S64-AU? reZident(877 знак., 02.06.2026 20:06, ARM, ссылка, полностью)
- Сегодня занялся перепрошивкой клона JLink версии 8 (синяя плата на
AT91SAM7-S64), чтобы заставить ее работать с Кейлом. Но что то
пошло не так и после стирания и восстановления бута Винда не нашла
драйвера для МК чтобы его перепрошить из-под SAM-BA в "чистый"
бинарник без серийника. ЧЯДНТ? - my504(22.03.2022 15:54, ARM, полностью)
- потихоньку подымаю stm32h7r3 - опыты с RCC показали что сердцевина
( все что висит на axi и ahb/2 ) вполне себе работает на 720МГц,
далее фапч тошнит, но... удалось под отладчиком подергать коэф
фапча на горячуу когда он уже работал, удалось заставить работать
сердцевину на ~1,2ГГц. вопрос не праздный для меня - мои эрофантаии
двигаются в сторону накачать по скорости внешний XSPI и SRAM/SDRAM.
пожже померю ток потребления - тоже интересно как он растет от
частоты. klen(48 знак., 19.05.2026 13:51 - 20.05.2026 03:16, ARM, ссылка, ссылка, полностью)
- Как правильно создавать константы, вычисляемые на этапе линковки?
Можно ли это сделать без использования внешних инструментов, только
силами компилятора и линкера из Keil-а для ARM? AlexBi(438 знак., 15.05.2026 14:32, ARM, полностью)
- Странное желание. Узнать адрес переменной, которую линкер хз куда
запихнет. Или это экзамен для Кейла? - IBAH(15.05.2026 20:00)
- А что, constexpr разве в этом случае не поможет (да-да, я именно
про С). - Eddy_Em(15.05.2026 15:40)
- робот дает ответы... POV(5 знак., 15.05.2026 15:06, картинка, картинка)
- А что не так? Andrew_Q(1 знак., 15.05.2026 14:49, картинка)
- Вероятно тут компилер догадался что /2 а потом *2 даст исходное
число. В отдельном файле это дает пустое место, т.е. ноль. Хотя, не
исключаю, что могут быть более продвинутые линкеры чем у clang - AlexBi(15.05.2026 15:42)
- В этом примере вычисления производятся во время выполнения
программы. - SciFi(15.05.2026 15:51)
- Да, плюсовый компилятор по тихой заменяет константу на вычисляемую
константу. В моем случае такое не годится. AlexBi(1 знак., 15.05.2026 16:06, картинка)
- Не совсем понятно, зачем брать адрес переменной, которую неизвестно
где разместит компоновщик и потом вычислять половину этого адреса?
Куда целитесь? Не угадаете ведь! Вы ведь не знаете смещения, по
которому разместилась v1, поэтому и не угадаете, где будет
половина. - Nikolay_Po(15.05.2026 16:24)
- Что именно делаем, если не секрет? Раз уж в лоб не получается,
может, придумаем следующее по убыванию элегантности решение? - SciFi(15.05.2026 16:20)
- К файлу с прошивкой надо добавить информационную часть, содержащую
название, дату и т.п., и размер, но не в байтах, а в блоках, т.е. в
килобайтах, и что бы длинной это было не 4 байта, а 2 байта. Раньше
это отдельной самодельной утилитой делалось, а тут подумал, что
можно автоматизировать. - AlexBi(15.05.2026 16:38)
- Помнится, когда я пытался изобразить программиста, то использовал
структуры, размещаемые в специально выделенном для этого сегменте
Flash-памяти. Вроде тогда никаких особых проблем с такими
константами не было. - reZident(15.05.2026 14:48)
- С адресами на этапе компиляции вообще сложно. Про адреса компилятор
не в курсе. Про адреса знает только линковщик. А он вычислений не
делает. - =AlexD=(15.05.2026 14:41, +1)
- Привет всем, подскажите, есть ли шанс найти Ansys hfss из последних
версий (купить не вариант) SergeyStr(9 знак., 17.05.2026 00:39, ARM, полностью)