Обновить

Комментарии 12

А теперь давай то же самое, но с шифрованием приложения, с получением версии загруженного приложения и возврат из приложения в бут для обновления без танцев с бубном кнопками перевода в бут. А там ещё и отладка приложения в составе с бутом подъедет при закрытом камне с эскалированным RDP до Level 2... Эх, приятные деньки, вспоминаю с наслаждением. Ах да, обновление бута в закрытом камне тоже добавь.

А почему бы у Claude не спросить как делать загрузчики?
Агенты такие вещи сейчас мгновенно делают

Вот, например, мне за день с учетом отладки Claude вот такой загрузчик по CAN сделал https://github.com/Indemsys/Landing_controller_LNDC_bootloader/blob/main/src/CAN_Bootloader/can_bootloader.c
Причем с глубокой трассировкой и исчерпывающими коментариями.

И еще полную спецификацию написал -
https://github.com/Indemsys/Landing_controller_LNDC_bootloader/blob/main/src/CAN_Bootloader/README.md

По этой спецификации он написал потом менеджер загрузки для центрального контроллера.
Там же моментом и скрипты для загрузки с ПК написал.

Шифрация , сжатие, и подпись по ECDSA (Elliptic Curve Digital Signature Algorithm) тоже были, но убраны.

Согласен, если вы раньше писали загрузчики и понимаете принцип работы, можно использовать инструменты, которые сокращают время разработки. В моем случае, целью было понять основные механизмы, поскольку до этого подобного опыта у меня не было.
Спасибо за пример, изучу на досуге

Автор пошёл ещё дальше и написал об этом статью, за что спасибо ему!

а зачем вы тут читаете статьи и пишете комментарии если можете самому Claude написать о нём же отзыв? ну вот реально у человека первый опыт и желание разобраться, а тут - "вот используй агента он написал и всё работает". Агенты иногда пишут косячно и в большинстве случаев не так оптимально как это может написать человек. Так же при попытке разобраться потратишь больше времени разбирая готовый код, чем с самого нуля написав свой. Всётаки до использования агента лучше самостоятельно разобраться в теме, а потом уже пользовать новый инструмент. Ну и если такие комменты дальше будут, то зачем вообще нужен будет хабр и подобные инструкции от человека человеку?

Как отменить карма минус? с тлф не туда ткнул, прошу простить)

Как пример работы загрузчика через CAN, посмотрите OpenBLT https://www.feaser.com/openblt/doku.php?id=homepage

И еще, перед тем как придумывать свой протокол поверх CAN, гляньте ISO-TP, может понравится.

Из того, что сразу приходит на ум ещё, добавьте флаг перехода в загрузчик. Или просто в ram по заранее установленному адресу (при сбросе содержимое не сбрасывается) или флажок в backup-регистрах. Для перехода в бут просто ставим флаг и дергаем reset. Из загрузчика так же - снимаем флаг и дергаем reset. Это проще, чем сбрасывать всю переферию перед переходом :)

3к на практика для загрузчика stm безумно мало, если он делает что то сложнее выбора из двух прошивок по флагу то потребуется отладка не только ногодрыгом и gdb но и printf. Даже если взять xprintf для экономии флеша лучше сразу для прошивки резервировать не менее 8к

зачем загрузчику (да и вообще) может понадобиться "отладка printf"?

Cупер, спасибки за статью. Вопрос, в чем или чем вы собирали, у меня в STM32Cube нет таких скриптов линковщика

CubeIDE, в корне проекта файл .ld должен быть

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации