Pull to refresh

Comments 39

Нелогично, вы выкинули RTOS, но добавили самодельный планировщик и несколько других пунктов, которые по своей сути представляются отдельными потоками.
Если не ориентировать эту базу на что-то типа 8/16/32 атмег, то, наверное, можно спокойно везде использовать FreeRTOS как основу.

С RTOS тянется слишком большой overhead.

Да и потом. Чтобы запустить RTOS вам как ни крути нужны CLK, PLL, TIMER, SYSTICK, NVIC и т п.

Зато, в свою очередь, задачи типа Heartbeat LED и другие не realtime задачи не требуют отдельных таймеров и прерываний, а работают как потоки RTOS просто в цикле засыпая на нужное время или ожидая сообщения в очереди.

Лишние сложности с реентабельность кода, deadLock-ами, гонками, клинчами.
Загрузчику RTOS с доплатой не нужна.

В generic приложении - пожалуйста.

Зато загрузчик с лишним CLI и запуском тестов очень необходим. Где-то вы перегибаете.

Какие сложности в реентерабельности?

Загрузчику тесты не нужны. А CLI нужна для загрузки прошивки.

Нелогично, вы выкинули RTOS, но добавили самодельный планировщик и несколько других пунктов, которые по своей сути представляются отдельными потоками.

Я имел в виду кооперативный планировщик. Не вытесняющий.

Я это не пробовал, и воообще мой опыт сугубо хоббийный, но для FreeRTOS заявлена работа на x86 в real mode, то есть можно запускать в виртуалке. И ещё написано что порт под линукс есть.

Ось в современном embedded абсолютно необходима.
Ее осутствие говорит о том что система недоработана в плане масштабируемости, унифицированности и универсальности.
Поэтому некая "каноническая форма" никак не может быть без RTOS.
Без RTOS ни стек TСP/IP, ни Bluetooth, ни файловую систему ни что-то другое серьезное невозможно нормально интегрировать.
Все они так или иначе будут уворовывать ресурсы времени, которые без RTOS у них отобрать и поделить не получится.
Остальные пункты - вкусовщина.
Claude Opus за минуты может сделать инфраструктуру для компиляции хоть GNU хоть LLVM
И сорсы переделает под них.
Но реально на сегодня лучшие инструменты отладки имеют коммерческие тулсы типа IAR или Keil. Поэтому многие SDK от производителей чипов имеют варианты для IAR. И даже Zephyr уже имеет порт для IAR.
Сейчас писк моды - делать отладку через WEB интерфейс.
Поэтому "каноническая форма" должна обязательно иметь WEB сервер и хранилище WEB страниц. Потому что Claude Opus идеально генерит WEB интерфейс. С графиками, таблицами, формами, редакторами - всем чем хочешь.

Поэтому некая "каноническая форма" никак не может быть без RTOS. Без RTOS ни стек TСP/IP, ни Bluetooth, ни файловую систему ни что-то другое серьезное невозможно нормально интегрировать.

Вы сейчас действительно про Embedded приложения говорите ? Тогда понятно откуда у холодильников и СВЧ печей потребность в облачных сервисах. ;-)

Да знаете ли, паровоз не ждёт пассажиров.
Не успели сделать IoT в своих девайсиках — сделают без вас.
И облака теперь тоже горячая тема.

Особенно убедительно, когда приплетают холодильники и всякое такое в духе представлений прошлого века. Надеюсь, облака для пылесосов и счётчиков уже не шокируют?

А так вообще-то речь шла об отладке.

Все это начинает шокировать когда интернет "по белым спискам" включают.

Особенно убедительно, когда приплетают холодильники и всякое такое 

У меня холодильник без интернета. Даже даром такой не стал бы брать.

Без RTOS , ни файловую систему невозможно нормально интегрировать.

Как же я тогда LittleFs без RTOS на китайском МК запустил?
https://habr.com/ru/articles/925372/

Ох сейчас Вас запинают за такое... но я Вас поддержу. Makefile и vi - наше всё! :)

Извините, но сразу видно, что для Вас это исключительно хобби и Вы никогда не писали чего-то серьезного, где необходимо обеспечивать функциональную безопасность (ISO 26262, IEC 61508, IEC 62304, DO-178C и др.) и сертифицироваться. Ладно, статический анализатор на MISRA/CERT/CWE можно прикрутить внешний. Но Вы ярко отгребете на этапе доказательства пригодности инструмента (Tool Qualification) с gcc, а потом еще что делать с LTS не будете знать. Называть сертифицированные промышленные инструменты "IDE для школоты" это, извините, показывает Ваш уровень далеко не в лучшем ключе.

Проблема IDE-IAR-в том, что все конфиги хранятся в xml подобном ewb файле.

В результате при создании отдельной похожей сборки происходит 100% дублирование конфигов (макросы препроцессора, пути к заголовочным файлам и индексация исходников). Всё копируется.

Это существенно препятствует масштабированию кодовой базы.

Для прототипирования единичных поделок IAR-идеальное решение.
Для DevOps IAR - беда и проблема.

IAR не позволяет наследовать конфиги. Понимаете?

У меня был случай, когда была одна Legacy IAR-IDE сборка 55-ю конфигурациями для разных клиентов.

Надо было для всех конфигураций написать ещё пару *.c файлов. Дак вот...

Код я написал за 3-4 часа. Однако у меня ушло две недели тупо на то, чтобы просто в каждую конфигурацию мышкой в IDE-IAR добавить папку, прописать пути к этой папке и добавить макросы в GUI IDE.

Вот так, господа…
В GNU Make это же делается одной строкой.

Вот и делайте выводы..

Вывод простой - чувствительность вашей мыши недостаточна, раз это заняло две недели

Очень остроумно. Браво!

Как раз для работы в пресловутой ide iar чувствительность как раз надо ставить на минимум, чтобы прицеливаться в крохотные иконки.

Иначе курсор будет проскакивать мимо

Сейчас писк моды - делать отладку через WEB интерфейс

Вот именно, что моды.
Мода приходит и уходит. Классика - остается.

Но реально на сегодня лучшие инструменты отладки имеют коммерческие тулсы типа IAR или Keil. Поэтому многие SDK от производителей чипов имеют варианты для IAR.

Любовь к IDE IAR/Keil - это типичный признак молодых начинающих программистов микроконтроллеров.

Те кто в теме собирают прошивки самостоятельно написанными CMake скриптами.

CMake на ура теперь конвертируются в IAR XML с помощью Claude.
Вообще никакой проблемы. И линкерные файлы с тем же успехом конвертирует.
Сейчас про скрипты писать - высасывать тему из пальца.
Я за час превел весь хостовый стек с CMake Espresiff на IAR.
И еще кучу хлама от туда выкинул.
Дебажу теперь его c C-Spy в хвост и в гриву. Юзаю всю мощ таймлайнов, ITM ивентов, live view , RTT monitor, tracing. Потому что Espresiff со своим GNU создал неимоверный шлак.
CLI - просто жалкий лепет зеленого джуниора, которого только что от ардуины оторвали.

CMake на ура теперь конвертируются в IAR XML с помощью Claude.

Обожаю, когда меня называют джуном. Чувствую себя снова молодым.

Почему бы Вам не написать на Habr заметку про это?

Название может быть таким:

"Сборка компилятором IAR через скрипты CMake".

Возраст здесь ни при чём.
Я видел пенсионеров, которые ради фана подсаживаются на архаичные практики — и это нормально.
Но не надо выдавать это за ноу-хау, чтобы получить признание.

Я вам так скажу.
Если вы работаете с 8–16-ногими микроконтроллерами, используйте чипы с no-code-фреймворком вроде MSP Zero Code Studio и оставьте свои скрипты в прошлом.
Если чипы более мощные, то RTT, SWD, USB — обязательно. И чтобы ОЗУ хватало для развёртывания веб-сервера. Тогда вы получите и скорость, и мощность отладки.

Чем быстрее отладочный вывод получает Claude, тем больше итераций в час он успевает сделать.

Боюсь, что Ваша ортодоксальная каноническая прошивка в наш православный MIK32 не влезет. Приходится ограничиваться минимумом: WTD, SysTick, UART и Heart Beat. :-)

PS: Вы забыли про режимы "сна".

Боюсь, что Ваша ортодоксальная каноническая прошивка в наш православный MIK32 не влезет.

Очень даже влезет.
Вот сборка
https://github.com/aabzel/trunk/tree/main/source/projects/start_mik32_v1_generic_gcc_m

NVRAM на EEPROMе сделал.

https://habr.com/ru/articles/815639/

Просто код исполнять надо из SPI-FI.

Просто код исполнять надо из SPI-FI.

Ну это совсем не спортивно. :)

Кстати, как Вы сообщаете компилятору чтобы он перенес строки текста в SPIFI ? Ничего лучше чем attribute ((used, section (".spifi.text"))) перед обьвлением переменной я пока не придумал.

Там надо сделать только одно изменение в ld файле для компоновщика.

И прошивка специально соберется для SPIFI.
Не нужны аттрибуты.

Поясню. В наших проектах используется оба вида памяти - EEPROM и SPIFI. По умлолчанию компилятор запихивает все строки в сегмент .rodata, который размещается в EEPROM (нам важно чтобы .rodata был именно в EEPROM). Как сказать компилятору, чтобы все строки уходили в сегмент .spifi.text или в .spifi.rodata которые размещаются в SPIFI ?

В скриптах линкера поменяйте и всё

Что именно поменять? Есть пример ? В скриптах можно отправить весь .rodata в SPIFI, но этого как раз мне не надо. Мне требуется отправить в SPIFI только строки.

Боюсь, что Ваша ортодоксальная каноническая прошивка в наш православный MIK32 не влезет.

Вот пожалуйста,

Исчерпывающая инструкция про то, как запустить ОКФП на нашем MIK32

https://habr.com/ru/articles/854050/
Настройка ToolChain-а Cборки Прошивок для MIK32 (K1948BK018 + C + GCC + GNU Make + OpenOCD)

++Сорцы
https://github.com/aabzel/trunk/tree/main/source/projects/start_mik32_v1_generic_gcc_m

Более-менее согласен с содержанием, но по форме (т.е., архитектуре) есть вопросы :).

2--Сборка без RTOS.

Согласен для прошивок < 100KB. Для сложных приложений на > 1MB сложно поддерживать приложение на самописном планировщике, в том числе переносимость на экзотичные MCU.

3--В сборке присутствуют драйверы для следующих базовых фундаментальных аппаратных подсистем: Clock, MCO, PLL, NVIC, SysTick, GPIO, PINMUX, FLASH, TIMER, DMA, UART.

Здесь я бы разделил драйвера или точнее добавил бы пункт в "джентельменский набор": 3.1 стартап (инициализация PLL, Clock, MPU, RAM/Flash, переменные bss/data и т.д.) и 3.2 драйвера для приложения. Также, налиние Flash драйвера в приложении приведет к вопросам от аудиторов проекта.

4--В сборке присутствует HeartBeat LED.

Это можно сделать и через переодический опрос устройства по интерфейсу связи, тот же UART. То что LED мигает не означает что устройство полностью функционально.

11--Также следует сразу подготовить отдельную сборку загрузчика через UART-CLI.

У вас загрузчик и приложение в одной прошивке? (в моей интерпретации, прошивка это софт собранный как отдельный/самостоятельный исполняемый файл)

У вас загрузчик и приложение в одной прошивке?

Нет. Это две отдельные сборки.
Как бинари они прописаны в flash памяти. Загрузчик в начале Flash, приложение в конце Flash памяти. Между ними NVRAM (FlashFS).



Sign up to leave a comment.

Articles