MKdemiurg 0 March 17 Posted March 17 · Report post 21 minutes ago, Forger said: Ну, так обычно и делают после обновления прошивки - soft reset )) Ну идея в этом и состояла. Просто как я понимаю, если я расположу копирующую функцию в RamFunc существующей секции , то стартап код для нее уже есть. Достаточно прописать атрибут для функции и не "выпрыгивать" из этой функции до полного копирования? или это не будет работать? 14 minutes ago, x893 said: Скопировать не проблема, А вот что делать если у Вас половина запишется и произойдёт сброс ? Получите кирпич. От этой ситации и пляшите. Когда придумаете - всё остальное будет мелочью. Расписывать лень, но сейчас набегут гуру программирования и накидают советов на вентилятор. да сверху уже расписали. резервирование на А и Б загрузчик во флеше. Но тогда нужна ещё и область которая будет валидировать и выбирать нужный. Скорее так и сделаю. Quote Share this post Link to post Share on other sites More sharing options...
x893 7 March 17 Posted March 17 · Report post 13 minutes ago, MKdemiurg said: Но тогда нужна ещё и область которая будет валидировать и выбирать нужный. Правильно. И которая никогда не изменяется. FSL - First Stage Loader SSL - Secondary Stage Loader APP - Application Quote Share this post Link to post Share on other sites More sharing options...
Forger 15 March 17 Posted March 17 · Report post Just now, x893 said: Правильно. И которая никогда не изменяется Таким должен быть изначально бут, не убиваемый и надежный, который не надо обновлять. Иначе потребуется бут, который будет перешивать бут, который будет перешивать еще один бут. Так и до клиники недолго )) 4 minutes ago, x893 said: FSL - First Stage Loader У STM такое есть, DFU, жестко зашит во всех МК, его невозможно перешить. Quote Share this post Link to post Share on other sites More sharing options...
MKdemiurg 0 March 17 Posted March 17 · Report post 5 minutes ago, Forger said: Таким должен быть изначально бут, не убиваемый и надежный, который не надо обновлять. Иначе потребуется бут, который будет перешивать бут, который будет перешивать еще один бут. Так и до клиники недолго )) У STM такое есть, DFU, жестко зашит во всех МК, его невозможно перешить. У меня китаец. Там бут только на порту UART. + нужна крипта Quote Share this post Link to post Share on other sites More sharing options...
Forger 15 March 17 Posted March 17 · Report post Just now, MKdemiurg said: + нужна крипта это прекрасно реализуется в вашем буте, ключ шифрования можно сделать доступным для смены через отдельную недокументированную команду, или зашить в бут жестко так же можно сделать что каждая прошивка зашифрована уникально для каждого девайса в зависимости ее его серийника а еще один бут сверху - масло масляное, имхо отладить один раз бут, с поддержкой восстановления кирпича, проэмулировав все нештатные ситуации и не придется перешивать бут Quote Share this post Link to post Share on other sites More sharing options...
jcxz 84 March 17 Posted March 17 · Report post 1 час назад, MKdemiurg сказал: Достаточно прописать атрибут для функции и не "выпрыгивать" из этой функции до полного копирования? или это не будет работать? Не достаточно. Где гарантия, что у вашей рамфункции не будет общих частей с кодом во флешь? Или с другими рамфункциями? Ведь компилятор/комповщик, когда собирает вашу программу, не знает, что часть кода может отсутствовать при выполнении какой-то функции. Или вы смогли как-то это ему объяснить? Вот взял он и объединил какие-то данные или функции, которые есть в вашей прошивающей функции и в остальном коде. Оптимизатор это часто делает. Вроде IAR для ramfunc-ий не должен объединять данные/код между ramfunc-циями и флешевыми. Но кто его знает. Я бы не рассчитывал. Да и другие ramfunc в программе могут быть - объединит с ними, а вы займёте их место в ОЗУ какими-нить данными. Потому я и говорил, что прошивающий код нужно компилить как отдельную программу. Полностью независимую. Обсуждали это уже ранее на форуме. Quote Share this post Link to post Share on other sites More sharing options...
MKdemiurg 0 March 20 Posted March 20 · Report post On 3/17/2023 at 5:38 PM, jcxz said: Не достаточно. Где гарантия, что у вашей рамфункции не будет общих частей с кодом во флешь? Или с другими рамфункциями? Ведь компилятор/комповщик, когда собирает вашу программу, не знает, что часть кода может отсутствовать при выполнении какой-то функции. Или вы смогли как-то это ему объяснить? ну собственно в этом и проблема. И тут гарантия только в том, чтобы не использовать не RAM функции внутри функции. On 3/17/2023 at 4:53 PM, Forger said: это прекрасно реализуется в вашем буте, ключ шифрования можно сделать доступным для смены через отдельную недокументированную команду, или зашить в бут жестко так же можно сделать что каждая прошивка зашифрована уникально для каждого девайса в зависимости ее его серийника а еще один бут сверху - масло масляное, имхо отладить один раз бут, с поддержкой восстановления кирпича, проэмулировав все нештатные ситуации и не придется перешивать бут Ну это я как раз всё сделал. ECDSA и тд. Перепрошивка Бута - одно из требований. Quote Share this post Link to post Share on other sites More sharing options...
Forger 15 March 20 Posted March 20 · Report post 40 minutes ago, MKdemiurg said: Перепрошивка Бута - одно из требований. Тогда как ранее описал - специальная прошивка, которая внутри содержит новый бут и при заливке сама его обновляет. Сам бут не имеет права перешивать себя . Quote Share this post Link to post Share on other sites More sharing options...
jcxz 84 March 20 Posted March 20 · Report post 3 часа назад, MKdemiurg сказал: И тут гарантия только в том, чтобы не использовать не RAM функции внутри функции. Это не даёт никакой гарантии. Так как оптимизатор может объединить одинаковые участки программ. И положить этот общий код куда-то не туда. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 56 March 20 Posted March 20 · Report post Я у себя в проектах загрузчиков, где RAM мало, чтобы туда всю программу не копировать, разделил исходники на "only-ROM execution" и "only-RAM execution" с соответственной линковкой по файлам. Соответственно, вся инициализация исполняется из ROM, остальное из RAM. Quote Share this post Link to post Share on other sites More sharing options...
skripach 1 March 20 Posted March 20 · Report post On 3/17/2023 at 2:06 AM, MKdemiurg said: Как правильно перепрошить загрузчик Правильно - не перепрошивать загрузчик. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 84 March 20 Posted March 20 · Report post Можно и перепрошивать. Если его >=2 копии есть. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 56 March 20 Posted March 20 · Report post Правильно - реализовать то, что написано в ТЗ и получить бабосики. Не более, не менее. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 84 March 20 Posted March 20 · Report post Чтобы его реализовать, его надо сперва написать. А в наших реалиях пишет его как правило тот же, кто и реализует потом. Надеюсь - Вы согласны? Или у Вас по-другому дела обстоят? Quote Share this post Link to post Share on other sites More sharing options...
x893 7 March 20 Posted March 20 · Report post 35 minutes ago, jcxz said: Чтобы его реализовать, его надо сперва написать. А в наших реалиях пишет его как правило тот же, кто и реализует потом. Надеюсь - Вы согласны? Или у Вас по-другому дела обстоят? https://www.feaser.com/openblt/doku.php Quote Share this post Link to post Share on other sites More sharing options...