Комментарии 15
Здравствуйте, старые добрые оверлеи. В GNU LD есть штатная поддержка. А вот как это делать в штатном компиляторе (==Clang/LLVM)
Уфф ... до чего прогресс дошёл ))) до оверлеев. А ещё можно в асме головой накрячить )))
Интереснее была бы реализация обновления частей прошивки в ROM без перегрузки. Например, обновления версии WEB-интерфейса без прерывания работы realtime-функций так, чтобы на время перепрошивки ROM вызовы обновляемой части прошивки безопасно подменялись заглушками.
Есть ли где инструкция как на микроконтроллере запустить java virtual machine?
Ведь именно на java достигалась погрузка бинарей на кнопочных мобилках 20 лет назад
У меня тоже есть текст про
Пуск функций из ram памяти.
https://habr.com/ru/articles/935360/
ARM Cortex-M: Исполнение кода из RAM памяти / Хабр https://share.google/lGO3gjowzfDpyMyJH
В принципе патчи можно закидывать на SD карту или загружать по uart shell.
Мне нравится этот текст.
Как вариант можно на MCU реализовать интерпретатор Basic или интерпретировать команды через UART(RTT)-shell.
Почему нам нужен интерфейс командной строки?
https://habr.com/ru/articles/694408/
Медленно, зато нет проблем с бинарной совместимостью.
Зачем сразу USB Serial?
Разве у ST-link отладчиков нет CLI команд, чтобы bat скриптом по SWD/JTAG прописать на лету bin файл в RAM по фиксированному адресу?
Концепция модулей на МК интересная, однако чтобы это было эффективно на практике надо выпускать миллионы однотипных устройств, чтобы подгружать в них эти модули.
Собственно так и происходило в случае с кнопочными мобильными устройствами.
Для мелкосерийных проектов достаточно сложно придумать ситуацию, когда проще подключать модули нежели обновить всю прошивку.
На самом деле существует много устройств, которые должны работать постоянно, без перезагрузок, если не 24/7, то по крайней мере в рабочее время, когда удобно обновлять прошивку. Это и оборудование связи, и производственное оборудование, и энергическое. При этом часто можно выделить необязательные функции, которые можно обновить или расширьте без перезагрузки, путём замены модулей. Более того, нередко объём некритических модулей существенно больше, чем критических, а значит, даже если требуется их перепрошивка с остановкой работы критических функций, то она может быть выполнена существенно быстрее. В пределе перепрошивку критических модулей можно сделать малозаметной с точки зрения работы оборудования, если всё подхватится на лету.
Как вариант можно реализовать виртуальную машину и писать модули на ассемблере
Пишем собственную виртуальную машину / Хабр https://share.google/1QfwwNVPPTmMCcSVD
Предложите разработчикам Малахит DSP3 добавить модули в их SDR приемник.
Мне кажется это тот самый случай, когда функционал можно подгружать без замены прошивки.

Реализация модульной архитектуры прошивки методом ручной динамической линковки на примере STM32