Arlleex 131 19 июля, 2020 Опубликовано 19 июля, 2020 · Жалоба Приветствую. Что-то почитал я документацию и опечален немного. Мне в одном девайсе надо реализовать загрузчик для обновления ПО. Девайс на 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... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 19 июля, 2020 Опубликовано 19 июля, 2020 · Жалоба F070 и 030 та же value line m0? В 70 я спокойно бутом окукливаюсь до level 2, вся прошивка расшифровывается, шьётся бутом. Для продакшена моя же утилита собирает хекс из бута и боевой прошивки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 19 июля, 2020 Опубликовано 19 июля, 2020 · Жалоба А стоит ли? https://www.aisec.fraunhofer.de/en/FirmwareProtection.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 20 июля, 2020 Опубликовано 20 июля, 2020 · Жалоба 11 часов назад, aaarrr сказал: А стоит ли? https://www.aisec.fraunhofer.de/en/FirmwareProtection.html Ууу, печаль, спасибо. Но в целом, дабы было понятно - это тупейшая защита от дяди с программатором и мыслью "а вдруг?". Если клонированием озаботятся другие ребята, немного шарящие, они найдут способ стырить прошивку. А тут даже проще будет новую написать. Я же делаю защиту от банальных прохиндеев. Сейчас у них даже проблемы с прошивкой по вылизанным методикам возникают, так что уровень там совсем низкий. Но тем не менее. 12 часов назад, toweroff сказал: F070 и 030 та же value line m0? В 70 я спокойно бутом окукливаюсь до level 2, вся прошивка расшифровывается, шьётся бутом. Для продакшена моя же утилита собирает хекс из бута и боевой прошивки Да, Value Line серия. Level 2 не хочу, мало ли чего при эксплуатации еще будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться