![]() | This forum section is linked to the series: Xiaomi Mijia Rating: 4.3 |
Это шапка темы, которую может редактировать любой пользователь с рейтингом 10 и выше
Станьте первым, кто внесет сюда важную информацию! :)
Восстановление прошивки по инструкции:
[quote="nicomunet123"]А пока я приблизительно понял, где запрос на сервер формируется в коде...[/quote]Так поделитесь, пожалуйста :)
[quote="Тарас"]Новая плата полностью рабочая НО в ПО зашито другие серийники на что идет постоянный писк[/quote]
Т.е был неактивированный контроллер? Вполне интересный результат.
Серийный номер контроллера и BMS, счетчик зарядок, пробега, даты выпуска, скорее всего находятся в отдельной области памяти. Ведь прошивки обновляются и для всех они одинаковые.
Индивидуальные данные, возможно находятся в энергонезависимой памяти EEPROM (внутри чипа). Они похоже и отсутствуют.
Процесс обновления этих данных - есть Активация. Вопрос лишь в том, затирается ли область EEPROM при снятии фьюза (защиты чипа ROP). То, что затирается прошивка во Flash-памяти, это понятно. Но это другая область. Все ИМХО
[quote="Тарас"]Новая плата полностью рабочая НО в ПО зашито другие серийники на что идет постоянный писк[/quote]
Т.е был неактивированный контроллер? Вполне интересный результат.
Серийный номер контроллера и BMS, счетчик зарядок, пробега, даты выпуска, скорее всего находятся в отдельной области памяти. Ведь прошивки обновляются и для всех они одинаковые.
Индивидуальные данные, возможно находятся в энергонезависимой памяти EEPROM (внутри чипа). Они похоже и отсутствуют.
Процесс обновления этих данных - есть Активация. Вопрос лишь в том, затирается ли область EEPROM при снятии фьюза (защиты чипа ROP). То, что затирается прошивка во Flash-памяти, это понятно. Но это другая область. Все ИМХО
Думаю, имеется в виду новый контроллер с родным STM-ом.
Если залить прошивку в голый камень, скорее всего, результат и будет нулевым.
Вариантов программной защиты может быть много, даже с корректным бинарником.
Например:
В контроллере есть написанный xiaomi загрузчик (bootloader), размер которого мы заранее не знаем, Программа может проверять адрес своего начала и, в случае, если он будет отличаться от нужного, просто не входить в рабочий режим.
Или сам загрузчик, при включении, пишет какие-то данные по каким-то адресам, и передает управление программе, а та, в свою очередь, проверяет эти данные, и, в случае их корректности, входит в рабочий режим.
Ну это как вариант. Думаю, без дизассемблера здесь не обойтись. Буду качать ida и ковыряться.
BMS основана на микроконтроллере STM8L151K6T6.
Подключился к контактам не распаянного разьема через
Питание BMS было от самой батареи, поэтому 4-й контакт SWIM (3.3V) не использовался.
С помощью программы
Прошивка хранится во Flash, серийный номер и прочее в EEPROM. В программе все данные разбиты по типам:
Program Memory, Data Memory и Оption Вyte. Это удобно для выборочной записи и чтения.
Слил дамп памяти сток-прошивок v1.0.7 и 1.1.5 (включая boot) в HEX-формате:
Дампы прошивок универсальны, а дамп EEPROM подходит только для родной БМС. Поэтому его не выкладываю.
Вероятно, используется привязка к уникальному номеру чипа. Это плохо для ремонта, если слетит область данных или нужно поменять чип. А вот серийный номер батареи, можно поменять, если слить свои данные и скорректировать их.
Откатил версию прошивки вперед и назад - все отлично. Перепрошивка не затрагивает область данных.
Поменял в прошивке число 7800 (0x1E78) на реальную емкость своей батареи. Оно там встречается 4 раза.
---
p.s Все действия на свой страх и риск. Если потерять содержимое области данных, можно потерять БМС.
BMS основана на микроконтроллере STM8L151K6T6.
Подключился к контактам не распаянного разьема через
Питание BMS было от самой батареи, поэтому 4-й контакт SWIM (3.3V) не использовался.
С помощью программы
Прошивка хранится во Flash, серийный номер и прочее в EEPROM. В программе все данные разбиты по типам:
Program Memory, Data Memory и Оption Вyte. Это удобно для выборочной записи и чтения.
Слил дамп памяти сток-прошивок v1.0.7 и 1.1.5 (включая boot) в HEX-формате:
Дампы прошивок универсальны, а дамп EEPROM подходит только для родной БМС. Поэтому его не выкладываю.
Вероятно, используется привязка к уникальному номеру чипа. Это плохо для ремонта, если слетит область данных или нужно поменять чип. А вот серийный номер батареи, можно поменять, если слить свои данные и скорректировать их.
Откатил версию прошивки вперед и назад - все отлично. Перепрошивка не затрагивает область данных.
Поменял в прошивке число 7800 (0x1E78) на реальную емкость своей батареи. Оно там встречается 4 раза.
---
p.s Все действия на свой страх и риск. Если потерять содержимое области данных, можно потерять БМС.
Очень интересная инфа, спасибо!.
По поводу прошивки контроллера, появилась мысль написать свою, в сущности, задача довольно тривиальная: Управление BLDC-мотором, примеров в сети валом, да и ST-шники выпустили апноуты. Обратная связь - датчики Холла + BackEMF.
Сопряжение с головной платой и бмс. По протоколам обмена проблем нет, положения курка газа и рычага тормоза уже прилетают в цифре.
Что потеряем: скорее всего, возможность обновления прошивки через штатное приложение.
Что приобретем: невероятно гибкую настройку, работу с любыми батареями без обманок, как минимум, сэкономится место в деке)
Language: English Scope: Форум Layout: Adaptive Except where otherwise noted, content on this site is licensed under the following license: CC Attribution-Share Alike 4.0 International © electro.club, 2015-2022 [email protected] |