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

Считывание прошивки STM32F2

Добрый день, коллеги!

Считываю прошивку с серийного изделия STM32F2 с помощью STM32CubeProgrammer и STM32F4Discovery по SWD (все обновлено до последней версии). Сливаю прошивку чтобы сохранить аккуратно и зашить свою, а потом обратно вернуть штатную. Штатной прошивки на руках нет.

Прошивка считывается, но при каждом read информация считывается разная - т.е. получаются разные файлы .bin, даже если считать два раза подряд друг за другом.

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

Вопрос: что сделано в серийной STM32F2, что я наблюдаю - защита, шифрование памяти программ, загрузчик самописный через SWD со мной общается? Смогу ли я считать и сохранить стоковую прошивку?

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


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

Похоже на собственную реализацию SWD (хотя... мне кажется, программный SWD слейв сделать довольно сложно, там интерфейс тактируется отладчиком, и устройство как-то должно за ним успевать).

Попробуйте Connect under Reset, или как оно у куба называется. В этом случае вы точно будете общаться с "оригинальным" SWD.

 

Но в любом случае, как-то фантастически это всё звучит...

 

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


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

23 минуты назад, Sash сказал:

Вопрос: что сделано в серийной STM32F2, что я наблюдаю - защита, шифрование памяти программ, загрузчик самописный через SWD со мной общается? Смогу ли я считать и сохранить стоковую прошивку?

Наиболее вероятно: "штатная" прошивка флешь МК использует для хранения каких-то данных, модифицируемых программой (конфигурационных настроек или ещё чего). Вот их изменение вы и видите. Проверить элементарно: посмотреть какие адреса меняются и по каким адресам находится сама программа.

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


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

On 8/3/2023 at 3:53 PM, jcxz said:

Наиболее вероятно: "штатная" прошивка флешь МК использует для хранения каких-то данных, модифицируемых программой (конфигурационных настроек или ещё чего). Вот их изменение вы и видите. Проверить элементарно: посмотреть какие адреса меняются и по каким адресам находится сама программа.

 

On 8/3/2023 at 3:27 PM, Sash said:

даже если считать два раза подряд друг за другом.

Слишком часто получается модифицирует. Ресурс памяти быстро выработается.

А может быть защита от считывания так работает ?

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


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

9 минут назад, dimka76 сказал:

Слишком часто получается модифицирует. Ресурс памяти быстро выработается.

Обычно пишут кольцом (по-хорошему), поэтому (исходя из даташита) - берем два последних сектора по 128 кБ:

128 * 1024 / 2 (по 16-битным словам) = 65536 16-битных записей на один сектор. Или 131072 записей в 2 сектора (для безопасного журналирования).

Если принять, что порция записи - одно 16-битное слово, а частота записей - раз в секунду, получаем (с учетом минимального ресурса стирания Flash-сектора == 10 тыс.): 131072 * 10 000 = 1310720000 секунд = ~ 41 год.

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


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

24 минуты назад, dimka76 сказал:

Слишком часто получается модифицирует. Ресурс памяти быстро выработается.

Не факт. С чего такой вывод?

Например: Устройство предназначено для длительной работы с редкими выключениями/включениями. Во флешь пишет к примеру - время своего включения (считанное из RTC число секунд от фисированной даты, в кольцевой буфер во флешь). В журнал включений. Журнал организован в виде кольцевого буфера, для чего задействовано к примеру 256КБ флеша. Одна запись = 4 байта (без доп.полей контроля/CRC). Endurance флеша у некоторых STM32 = 1e+4

Предположим - устройство включается раз в сутки. Итого - ресурса флеши хватит: (256*1024/4*1e4)/365 = ~1.8 миллиона лет. Мало?  :mosking:

PS: Это из предположения, что у этого МК нет ECC флеша. Если есть, то тогда наверное всего на каких-то ~полмиллиона лет хватит. Да уж... маловато уже как-то... :mosking:

 

Если посчитать по-другому (с учётом data retention time == 20 лет; из мануала на STM32F4) , так как хранить инфу более 20 лет флешь МК всё равно не может, то посчитаем примерную максимальную частоту записи (включений устройства), при которой ресурса флеши хватит на все 20 лет:

(256*1024/4*1e4)/(20*365*24*3600) = ~1.04 Гц

Т.е. - если ТС будет включать/выключать свой девайс с частотой 1 Гц (или реже), то ресурса должно хватить на полный срок службы флешь (по мануалу). Для записи метки времени в журнал во флешь. Это если ТС и днём и ночью в течение 20 лет это будет делать.  :smile:

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


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

56 минут назад, Sash сказал:

Прошивка считывается, но при каждом read информация считывается разная - т.е. получаются разные файлы .bin, даже если считать два раза подряд друг за другом.

В командной строке сделать fc /b для трех считанных файлов и тогда будет понятно что меняется.

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


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

Вообще вся прошивка получается разной при каждом считывании? Или только какая-то (примерно одна и та же) ее часть?

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


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

On 8/3/2023 at 4:12 PM, jcxz said:

так как хранить инфу более 20 лет флешь МК всё равно не может,

Тем не менее, у меня до сих пор работают несколько устройств с PIC12 и PIC16, которым уже более 20-ти лет.

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


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

Ну почему же? Там указан минимальный срок при определенном испытательном цикле. Но в основном, срок службы интенсивно работающей электронной техники определен не более 10 лет. К этому времени уже начинают терять яркость дисплеи, изнашиваются подвижные узлы. Не, ну конечно можно и по 20 лет юзать какой-нибудь калькулятор или термометр. У меня есть "научный" калькулятор Ситизен 2000-го года, которым я еще в ВУЗе пользовался. Но он уже лет 15 просто лежит в коробке. Хотя вот какой-нить телевизор более чем 15 летней давности - это уже безнадежный утиль, в том числе и по признаку моральной старости.

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


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

Не везде есть дисплеи и подвижные узлы".

Но какая разница, калькулятор/термомеnр или что-то более серьозное? Если флеш потеряет свое содержимое, то что то что это не будет работать.

P.S. 15-летний телевизор можно и в утиль, а вон у меня ЦД-плеер стоит, которому около 30 лет. И дисплей в порядке, и "подвижные части" отлично работают, и контроллер контролирует (правда, в нем не флеш а 68HC05 c ROM). Хотя я им уже несколько лет пользуюсь очень эпизодически, несколько часов в месяц от силы но раньше он работал не мало.

 

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


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

30 лет назад в контроллерах для бытовой техники ставили масочную память. Затем пошла однократно программируемая память. А переход на перепрограммируемую флеш в бытовой технике произошел как раз приблизительно на рубеже 15 лет (плюс-минус). Я имею ввиду память для программного кода. ЕЕПРОМ для хранения настроек использовалась и ранее. Еще был период с УФ-стираемыми микросхемами, у них было специальное окошечко, заклеенное непрозрачной полоской. Однако, для массовой бытовой техники крупным производителям было проще заказать разработку и изготовление специализированной микросхемы с масочной памятью. В то время понятие "обновление прошивки пользователем" еще не существовало.

Сейчас редко какой бытовой прибор обходится без дисплея. А дисплей, за исключением ЖК без подсветки - самая недолговечная деталька. ОЛЕДы, особенно дешевые, выгорают только так, подсветка ТФТ-экранчиков тоже тусклеет (лампа или светодиод - без разницы). Модные белые светодиоды в индикаторах теряют яркость уже через 6-7 лет непрерывной работы. Обычные красные держатся дольше, но к 20 годам непрерывной работы тоже значительно выгорают.

Так что, 20 лет интенсивной работы для электроники - это возраст глубокой старости, как физической, так и моральной.

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


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

6 hours ago, EdgeAligned said:

А переход на перепрограммируемую флеш в бытовой технике произошел как раз приблизительно на рубеже 15 лет (плюс-минус).

PIC16C84 - 1993г., а к концу 90-х почти все PIC были флеш.

Atmel AVR - вторая половина 90-х, все флеш.

51-й не помкю с когда именно, но тоже полно было с флешом.

И работают до сих пор в миллионах и промышленных и бытовых устройств.

 

6 hours ago, EdgeAligned said:

В то время понятие "обновление прошивки пользователем" еще не существовало.

Существовало, только разве что "продвинутым пользователем", чаще всего через UART.

 

 

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


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

7 hours ago, EdgeAligned said:

В то время понятие "обновление прошивки пользователем" еще не существовало.

Очень даже существовало. Работал с ADuC от AD. Прошивка грузилась через СОМ-порт компьютера. Загрузчик был встроен в МК с завода.

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


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

8 часов назад, EdgeAligned сказал:

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

Всё мимо! Где вы такой вздор вычитали??  :fool:

Уже в конце 90-хх разрабатывали на флешевых PIC (PIC16F84), а в начале 2000-х - на DSP, прошивка которых тоже хранилась во флешь. Да и другие МК с флешем были - и Atmel и Infineon и Fujitsu и другие. А 15 лет назад, когда типа "только произошёл переход на флешь" :sarcastic: ,  мы уже вовсю работали на ARM-ах (NXP); тоже кстати с флешем.

Да все телефоны начала 2000-хх, когда типа "флеши ещё не было", имели контроллеры с памятью на флешь.

8 часов назад, EdgeAligned сказал:

30 лет назад в контроллерах для бытовой техники ставили масочную память.

Если немного напрячь память, то можно вспомнить, что уже в советские времена (в середине 1980-хх) существовали чипы флешь-памяти. Которые тогда так не называли, а звали = ЭСППЗУ. Серия КР558РР...

Так что - и тут мимо.

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


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

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

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

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

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

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

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

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

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

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