Перейти к содержанию
    

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

21 minutes ago, Forger said:

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

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

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

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

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

 

14 minutes ago, x893 said:

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, MKdemiurg said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, x893 said:

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

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

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

4 minutes ago, x893 said:

FSL - First Stage Loader

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, Forger said:

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, MKdemiurg said:

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

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

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

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

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

 

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

ECDSA  и тд.

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

40 minutes ago, MKdemiurg said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 minutes ago, jcxz said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...