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

STM32F030: bootloader + flash read protection

Приветствую.

Что-то почитал я документацию и опечален немного.

Мне в одном девайсе надо реализовать загрузчик для обновления ПО. Девайс на STM32F030.

Этот МК построен на ядре Cortex-M0, в котором отсутствует регистр VTOR, вследствие чего приходится изобретать.

Короче, из-за отсутствия VTOR и механизма сдвига таблицы прерываний в принципе, я копирую ее в начало ОЗУ.

Ну а затем, собственно, через SYSCFG-регистры делаю memory-remap на ОЗУ. Коряво, но другого выбора нет. Фиг с ним, работает.

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

Загрузчик после первого старта должен сам себя защитить, установив биты защиты от записи на свои сектора Flash. И еще кое-чего по мелочи сделать.

Кроме того, после прошивки клиентского кода, загрузчик должен, по-хорошему, установить защиту от чтения. Но фигушки, похоже.

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

Второй минус - читаю RM на МК, вижу (стр. 55)

Цитата

Level 1: read protection

This is the default protection level when RDP option byte is erased. It is defined as well when RDP value is at any value different from 0xAA and 0xCC, or even if the complement is not correct.

  • User mode: Code executing in user mode can access main Flash memory and option byte with all operations.
  • Debug, boot RAM and boot loader modes: In debug mode (with SWD) or when code is running from boot RAM or boot loader, the main Flash memory is totally inaccessible. In these modes, even a simple read access generates a bus error and a Hard Fault interrupt...

Ранее я писал, что в SYSCFG надо будет выставить руками биты memory remap - то есть контроллер будет думать, что загрузка идет с ОЗУ.

 

Получается, на этом МК написать надежный загрузчик с возможностью защиты пользовательской прошивки от чтения не возможно?

До реального железа доберусь на неделе, пока что доку просматриваю.

 

P.S. На первый вопрос отвечаю сам себе - в RM есть табличка (стр. 56), из которой ясно, что под Level 1 я могу читать, стирать и писать любые сектора Flash.

Но из этой же таблички видно, что при загрузке из ОЗУ (и также под Level 1) контроллер должен вывалиться в Hard Fault...:negative:

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


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

F070 и 030 та же value line m0?

В 70 я спокойно бутом окукливаюсь до level 2, вся прошивка расшифровывается, шьётся бутом.

Для продакшена моя же утилита собирает хекс из бута и боевой прошивки

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


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

11 часов назад, aaarrr сказал:

Ууу, печаль, спасибо.

Но в целом, дабы было понятно - это тупейшая защита от дяди с программатором и мыслью "а вдруг?".

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

А тут даже проще будет новую написать. Я же делаю защиту от банальных прохиндеев.

Сейчас у них даже проблемы с прошивкой по вылизанным методикам возникают, так что уровень там совсем низкий. Но тем не менее.

 

12 часов назад, toweroff сказал:

F070 и 030 та же value line m0?

В 70 я спокойно бутом окукливаюсь до level 2, вся прошивка расшифровывается, шьётся бутом.

Для продакшена моя же утилита собирает хекс из бута и боевой прошивки

Да, Value Line серия.

Level 2 не хочу, мало ли чего при эксплуатации еще будет.

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


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

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

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

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

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

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

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

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

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

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