Sash 0 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба Добрый день, коллеги! Считываю прошивку с серийного изделия STM32F2 с помощью STM32CubeProgrammer и STM32F4Discovery по SWD (все обновлено до последней версии). Сливаю прошивку чтобы сохранить аккуратно и зашить свою, а потом обратно вернуть штатную. Штатной прошивки на руках нет. Прошивка считывается, но при каждом read информация считывается разная - т.е. получаются разные файлы .bin, даже если считать два раза подряд друг за другом. В качестве проверки я, конечно, попытался посчитывать свои устройства и ничего подобного не было, считывается одно и тоже. Вопрос: что сделано в серийной STM32F2, что я наблюдаю - защита, шифрование памяти программ, загрузчик самописный через SWD со мной общается? Смогу ли я считать и сохранить стоковую прошивку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба Похоже на собственную реализацию SWD (хотя... мне кажется, программный SWD слейв сделать довольно сложно, там интерфейс тактируется отладчиком, и устройство как-то должно за ним успевать). Попробуйте Connect under Reset, или как оно у куба называется. В этом случае вы точно будете общаться с "оригинальным" SWD. Но в любом случае, как-то фантастически это всё звучит... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 224 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба 23 минуты назад, Sash сказал: Вопрос: что сделано в серийной STM32F2, что я наблюдаю - защита, шифрование памяти программ, загрузчик самописный через SWD со мной общается? Смогу ли я считать и сохранить стоковую прошивку? Наиболее вероятно: "штатная" прошивка флешь МК использует для хранения каких-то данных, модифицируемых программой (конфигурационных настроек или ещё чего). Вот их изменение вы и видите. Проверить элементарно: посмотреть какие адреса меняются и по каким адресам находится сама программа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба On 8/3/2023 at 3:53 PM, jcxz said: Наиболее вероятно: "штатная" прошивка флешь МК использует для хранения каких-то данных, модифицируемых программой (конфигурационных настроек или ещё чего). Вот их изменение вы и видите. Проверить элементарно: посмотреть какие адреса меняются и по каким адресам находится сама программа. On 8/3/2023 at 3:27 PM, Sash said: даже если считать два раза подряд друг за другом. Слишком часто получается модифицирует. Ресурс памяти быстро выработается. А может быть защита от считывания так работает ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 165 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба 9 минут назад, dimka76 сказал: Слишком часто получается модифицирует. Ресурс памяти быстро выработается. Обычно пишут кольцом (по-хорошему), поэтому (исходя из даташита) - берем два последних сектора по 128 кБ: 128 * 1024 / 2 (по 16-битным словам) = 65536 16-битных записей на один сектор. Или 131072 записей в 2 сектора (для безопасного журналирования). Если принять, что порция записи - одно 16-битное слово, а частота записей - раз в секунду, получаем (с учетом минимального ресурса стирания Flash-сектора == 10 тыс.): 131072 * 10 000 = 1310720000 секунд = ~ 41 год. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 224 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба 24 минуты назад, dimka76 сказал: Слишком часто получается модифицирует. Ресурс памяти быстро выработается. Не факт. С чего такой вывод? Например: Устройство предназначено для длительной работы с редкими выключениями/включениями. Во флешь пишет к примеру - время своего включения (считанное из RTC число секунд от фисированной даты, в кольцевой буфер во флешь). В журнал включений. Журнал организован в виде кольцевого буфера, для чего задействовано к примеру 256КБ флеша. Одна запись = 4 байта (без доп.полей контроля/CRC). Endurance флеша у некоторых STM32 = 1e+4 Предположим - устройство включается раз в сутки. Итого - ресурса флеши хватит: (256*1024/4*1e4)/365 = ~1.8 миллиона лет. Мало? PS: Это из предположения, что у этого МК нет ECC флеша. Если есть, то тогда наверное всего на каких-то ~полмиллиона лет хватит. Да уж... маловато уже как-то... Если посчитать по-другому (с учётом data retention time == 20 лет; из мануала на STM32F4) , так как хранить инфу более 20 лет флешь МК всё равно не может, то посчитаем примерную максимальную частоту записи (включений устройства), при которой ресурса флеши хватит на все 20 лет: (256*1024/4*1e4)/(20*365*24*3600) = ~1.04 Гц Т.е. - если ТС будет включать/выключать свой девайс с частотой 1 Гц (или реже), то ресурса должно хватить на полный срок службы флешь (по мануалу). Для записи метки времени в журнал во флешь. Это если ТС и днём и ночью в течение 20 лет это будет делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 75 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба 56 минут назад, Sash сказал: Прошивка считывается, но при каждом read информация считывается разная - т.е. получаются разные файлы .bin, даже если считать два раза подряд друг за другом. В командной строке сделать fc /b для трех считанных файлов и тогда будет понятно что меняется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 3 августа, 2023 Опубликовано 3 августа, 2023 · Жалоба Вообще вся прошивка получается разной при каждом считывании? Или только какая-то (примерно одна и та же) ее часть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба On 8/3/2023 at 4:12 PM, jcxz said: так как хранить инфу более 20 лет флешь МК всё равно не может, Тем не менее, у меня до сих пор работают несколько устройств с PIC12 и PIC16, которым уже более 20-ти лет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 79 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба Ну почему же? Там указан минимальный срок при определенном испытательном цикле. Но в основном, срок службы интенсивно работающей электронной техники определен не более 10 лет. К этому времени уже начинают терять яркость дисплеи, изнашиваются подвижные узлы. Не, ну конечно можно и по 20 лет юзать какой-нибудь калькулятор или термометр. У меня есть "научный" калькулятор Ситизен 2000-го года, которым я еще в ВУЗе пользовался. Но он уже лет 15 просто лежит в коробке. Хотя вот какой-нить телевизор более чем 15 летней давности - это уже безнадежный утиль, в том числе и по признаку моральной старости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба Не везде есть дисплеи и подвижные узлы". Но какая разница, калькулятор/термомеnр или что-то более серьозное? Если флеш потеряет свое содержимое, то что то что это не будет работать. P.S. 15-летний телевизор можно и в утиль, а вон у меня ЦД-плеер стоит, которому около 30 лет. И дисплей в порядке, и "подвижные части" отлично работают, и контроллер контролирует (правда, в нем не флеш а 68HC05 c ROM). Хотя я им уже несколько лет пользуюсь очень эпизодически, несколько часов в месяц от силы но раньше он работал не мало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 79 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба 30 лет назад в контроллерах для бытовой техники ставили масочную память. Затем пошла однократно программируемая память. А переход на перепрограммируемую флеш в бытовой технике произошел как раз приблизительно на рубеже 15 лет (плюс-минус). Я имею ввиду память для программного кода. ЕЕПРОМ для хранения настроек использовалась и ранее. Еще был период с УФ-стираемыми микросхемами, у них было специальное окошечко, заклеенное непрозрачной полоской. Однако, для массовой бытовой техники крупным производителям было проще заказать разработку и изготовление специализированной микросхемы с масочной памятью. В то время понятие "обновление прошивки пользователем" еще не существовало. Сейчас редко какой бытовой прибор обходится без дисплея. А дисплей, за исключением ЖК без подсветки - самая недолговечная деталька. ОЛЕДы, особенно дешевые, выгорают только так, подсветка ТФТ-экранчиков тоже тусклеет (лампа или светодиод - без разницы). Модные белые светодиоды в индикаторах теряют яркость уже через 6-7 лет непрерывной работы. Обычные красные держатся дольше, но к 20 годам непрерывной работы тоже значительно выгорают. Так что, 20 лет интенсивной работы для электроники - это возраст глубокой старости, как физической, так и моральной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба 6 hours ago, EdgeAligned said: А переход на перепрограммируемую флеш в бытовой технике произошел как раз приблизительно на рубеже 15 лет (плюс-минус). PIC16C84 - 1993г., а к концу 90-х почти все PIC были флеш. Atmel AVR - вторая половина 90-х, все флеш. 51-й не помкю с когда именно, но тоже полно было с флешом. И работают до сих пор в миллионах и промышленных и бытовых устройств. 6 hours ago, EdgeAligned said: В то время понятие "обновление прошивки пользователем" еще не существовало. Существовало, только разве что "продвинутым пользователем", чаще всего через UART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 40 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба 7 hours ago, EdgeAligned said: В то время понятие "обновление прошивки пользователем" еще не существовало. Очень даже существовало. Работал с ADuC от AD. Прошивка грузилась через СОМ-порт компьютера. Загрузчик был встроен в МК с завода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 224 5 августа, 2023 Опубликовано 5 августа, 2023 · Жалоба 8 часов назад, EdgeAligned сказал: Однако, для массовой бытовой техники крупным производителям было проще заказать разработку и изготовление специализированной микросхемы с масочной памятью. В то время понятие "обновление прошивки пользователем" еще не существовало. Всё мимо! Где вы такой вздор вычитали?? Уже в конце 90-хх разрабатывали на флешевых PIC (PIC16F84), а в начале 2000-х - на DSP, прошивка которых тоже хранилась во флешь. Да и другие МК с флешем были - и Atmel и Infineon и Fujitsu и другие. А 15 лет назад, когда типа "только произошёл переход на флешь" , мы уже вовсю работали на ARM-ах (NXP); тоже кстати с флешем. Да все телефоны начала 2000-хх, когда типа "флеши ещё не было", имели контроллеры с памятью на флешь. 8 часов назад, EdgeAligned сказал: 30 лет назад в контроллерах для бытовой техники ставили масочную память. Если немного напрячь память, то можно вспомнить, что уже в советские времена (в середине 1980-хх) существовали чипы флешь-памяти. Которые тогда так не называли, а звали = ЭСППЗУ. Серия КР558РР... Так что - и тут мимо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться