Jump to content
    

Как правильно перепрошить загрузчик

21 minutes ago, Forger said:

Ну, так обычно и делают после обновления прошивки - soft reset ))

Ну идея в этом и состояла.

Просто как я понимаю, если я расположу копирующую функцию  в RamFunc существующей секции , то стартап код для нее уже есть.

Достаточно прописать атрибут для функции и не "выпрыгивать" из этой функции до полного копирования?

или это не будет работать?

 

14 minutes ago, x893 said:

Скопировать не проблема, А вот что делать если у Вас половина запишется и произойдёт сброс ?
Получите кирпич. От этой ситации и пляшите.

Когда придумаете - всё остальное будет мелочью.

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

да сверху уже расписали. резервирование на А и Б загрузчик во флеше.

Но тогда нужна ещё и область которая будет валидировать и выбирать нужный.

Скорее так и сделаю.

Share this post


Link to post
Share on other sites

13 minutes ago, MKdemiurg said:

Но тогда нужна ещё и область которая будет валидировать и выбирать нужный.

Правильно. И которая никогда не изменяется.

FSL - First Stage Loader
SSL - Secondary Stage Loader
APP - Application

Share this post


Link to post
Share on other sites

Just now, x893 said:

Правильно. И которая никогда не изменяется

Таким должен быть изначально бут, не убиваемый и надежный, который не надо обновлять. Иначе потребуется бут, который будет перешивать бут, который будет перешивать еще один бут.

Так и до клиники недолго ))

4 minutes ago, x893 said:

FSL - First Stage Loader

У STM такое есть, DFU, жестко зашит во всех МК, его невозможно перешить.

Share this post


Link to post
Share on other sites

5 minutes ago, Forger said:

Таким должен быть изначально бут, не убиваемый и надежный, который не надо обновлять. Иначе потребуется бут, который будет перешивать бут, который будет перешивать еще один бут.

Так и до клиники недолго ))

У STM такое есть, DFU, жестко зашит во всех МК, его невозможно перешить.

У меня китаец.

Там бут только на порту UART.

+ нужна крипта

Share this post


Link to post
Share on other sites

Just now, MKdemiurg said:

+ нужна крипта

это прекрасно реализуется в вашем буте, ключ шифрования можно сделать доступным для смены через отдельную недокументированную команду, или зашить в бут жестко

так же можно сделать что каждая прошивка зашифрована уникально для каждого девайса в зависимости ее его серийника

а еще один бут сверху - масло масляное, имхо

отладить один раз бут, с поддержкой восстановления кирпича, проэмулировав все нештатные ситуации и не придется перешивать бут

 

Share this post


Link to post
Share on other sites

1 час назад, MKdemiurg сказал:

Достаточно прописать атрибут для функции и не "выпрыгивать" из этой функции до полного копирования?

или это не будет работать?

Не достаточно. Где гарантия, что у вашей рамфункции не будет общих частей с кодом во флешь? Или с другими рамфункциями? Ведь компилятор/комповщик, когда собирает вашу программу, не знает, что часть кода может отсутствовать при выполнении какой-то функции. Или вы смогли как-то это ему объяснить? :wink:

Вот взял он и объединил какие-то данные или функции, которые есть в вашей прошивающей функции и в остальном коде. Оптимизатор это часто делает.

Вроде IAR для ramfunc-ий не должен объединять данные/код между ramfunc-циями и флешевыми. Но кто его знает. Я бы не рассчитывал. Да и другие ramfunc в программе могут быть - объединит с ними, а вы займёте их место в ОЗУ какими-нить данными.

Потому я и говорил, что прошивающий код нужно компилить как отдельную программу. Полностью независимую. Обсуждали это уже ранее на форуме.

Share this post


Link to post
Share on other sites

On 3/17/2023 at 5:38 PM, jcxz said:

Не достаточно. Где гарантия, что у вашей рамфункции не будет общих частей с кодом во флешь? Или с другими рамфункциями? Ведь компилятор/комповщик, когда собирает вашу программу, не знает, что часть кода может отсутствовать при выполнении какой-то функции. Или вы смогли как-то это ему объяснить? :wink:

ну собственно в этом и проблема.

И тут гарантия только в том, чтобы не использовать не RAM функции внутри функции.

 

On 3/17/2023 at 4:53 PM, Forger said:

это прекрасно реализуется в вашем буте, ключ шифрования можно сделать доступным для смены через отдельную недокументированную команду, или зашить в бут жестко

так же можно сделать что каждая прошивка зашифрована уникально для каждого девайса в зависимости ее его серийника

а еще один бут сверху - масло масляное, имхо

отладить один раз бут, с поддержкой восстановления кирпича, проэмулировав все нештатные ситуации и не придется перешивать бут

 

Ну это я как раз всё сделал.

ECDSA  и тд.

Перепрошивка Бута - одно из требований.

 

 

Share this post


Link to post
Share on other sites

40 minutes ago, MKdemiurg said:

Перепрошивка Бута - одно из требований.

Тогда как ранее описал - специальная прошивка, которая внутри содержит новый бут и при заливке сама его обновляет.

Сам бут не имеет права перешивать себя .

Share this post


Link to post
Share on other sites

3 часа назад, MKdemiurg сказал:

И тут гарантия только в том, чтобы не использовать не RAM функции внутри функции.

Это не даёт никакой гарантии. Так как оптимизатор может объединить одинаковые участки программ. И положить этот общий код куда-то не туда.

Share this post


Link to post
Share on other sites

Я у себя в проектах загрузчиков, где RAM мало, чтобы туда всю программу не копировать, разделил исходники на "only-ROM execution" и "only-RAM execution" с соответственной линковкой по файлам.

Соответственно, вся инициализация исполняется из ROM, остальное из RAM.

Share this post


Link to post
Share on other sites

On 3/17/2023 at 2:06 AM, MKdemiurg said:

Как правильно перепрошить загрузчик

Правильно - не перепрошивать загрузчик.

Share this post


Link to post
Share on other sites

Можно и перепрошивать. Если его >=2 копии есть.

Share this post


Link to post
Share on other sites

Правильно - реализовать то, что написано в ТЗ и получить бабосики. Не более, не менее.

Share this post


Link to post
Share on other sites

Чтобы его реализовать, его надо сперва написать. А в наших реалиях пишет его как правило тот же, кто и реализует потом. Надеюсь - Вы согласны?

Или у Вас по-другому дела обстоят?  :wink:

Share this post


Link to post
Share on other sites

35 minutes ago, jcxz said:

Чтобы его реализовать, его надо сперва написать. А в наших реалиях пишет его как правило тот же, кто и реализует потом. Надеюсь - Вы согласны?

Или у Вас по-другому дела обстоят?  :wink:

https://www.feaser.com/openblt/doku.php

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...