Разборка прошивки электросамоката Xiaomi M365

Форум / Электротранспорт / Электросамокаты / Xiaomi Mijia Electric Scooter / Разборка прошивки электросамоката Xiaomi M365
#прошивка
+
Форум / Электротранспорт / Электросамокаты / Xiaomi Mijia Electric Scooter / Разборка прошивки электросамоката Xiaomi M365
Открыть шапку темы
M365 spain
Участник
Rating: 41
M365 spain
30 july 2018, 20:29
Posted: 30 july 2018, 20:29

Можно ли будет убрать лимит скорости? и добавить zero start? также хотелось бы снять ограничения чтоб можно было тыкать любую батарею или добавить ячейки в стоковую.

Ed01
Продвинутый форумчанин
Rating: 568
Ed01
30 july 2018, 22:17
Posted: 30 july 2018, 22:17

ST-LINК, установка программного обеспечения:

В общем-то, весь необходимый софт - это  USB драйвер (STSW-LINK009)

и бесплатная утилита  STM32 ST-LINK Utility (STSW-LINK004) от разработчика микроконтроллера.

Скачать их можно с оф.сайта или вложения.


Установка драйвера стандартная для Windows. При подключении ST-LINK к USB, в системе появится новое устройство "STMicroelectronics STLink dongle".

 2   
Ed01
Продвинутый форумчанин
Rating: 568
Ed01
30 july 2018, 22:36
Posted: 30 july 2018, 22:36
[quote="M365 spain"]Можно ли будет убрать лимит скорости? и добавить zero start?[/quote]
[quote="M365 spain"]добавить ячейки в стоковую.[/quote]

Это уже есть в кастомной прошивке. Батарея мах. 12S (50.4V) - больше родной контроллер не выдержит.

https://electro.club/forum/elektrosamokatyi_xiaomi/Xiaomi_Mijia_M365_proshivka_syaokata_na_kastomnuyu_versiyu_1000w_do_32_km_ch

[quote="M365 spain"]снять ограничения чтоб можно было тыкать любую батарею[/quote]

Вместо аппаратной "обманки"? Такого пока нет. Но в клонах сяоката как-то обошли. https://electro.club/forum/podklyuchenie_alternativnogo_kontrollera_k_syaokatu&page=2#msg43471

 2   
M365 spain
Участник
Rating: 41
M365 spain
30 july 2018, 22:42
Posted: 30 july 2018, 22:42

A что именно не выдержит? Транзисторы можно подобрать с запасом? 


St-link уже пропаял- если подать напряжение на пин 5v на плате то можно прошивать прямо от компа.

Ed01
Продвинутый форумчанин
Rating: 568
Ed01
30 july 2018, 23:08
Posted: 30 july 2018, 23:08
[quote="M365 spain"]A что именно не выдержит?[/quote]

Входной преобразователь DC-DC, который понижает напряжение батареи до 12V. Вот так они горят:

https://electro.club/forum/elektrosamokatyi_xiaomi/probit_element_na_glavnoy_plate_upravleniya

[quote="M365 spain"]St-link уже пропаял- если подать напряжение на пин 5v на плате то можно прошивать прямо от компа.[/quote]

Уже пробовали? Чип виден? Когда чип виден, но защита от чтения установлена, должно быть так:


 1   
M365 spain
Участник
Rating: 41
M365 spain
31 july 2018, 0:01
Posted: 31 july 2018, 0:01

Да, именно так и было... до того как я залил туда прошивку с интернета ( без бутлоадера) 

Ed01
Продвинутый форумчанин
Rating: 568
Ed01
31 july 2018, 0:56
Posted: 31 july 2018, 0:56
Ответ пользователю
M365 spain : 31 july 2018, 0:01
на это сообщение (развернуть)

Да, именно так и было... до того как я залил туда прошивку с интернета ( без бутлоадера) 

Ремонтная прошивка для восстановления контроллера с помощью ST-LINK


Не содержит постороннего кода и имеет начальную структуру с нулевым пробегом. Собрана из оригинального m365 boot-загрузчика и прошивки v1.34. Чип остается открытым на запись и чтение до первого обновления прошивки.

  • Устанавливаем Soft и подключаем ST-LINK
  • Через ST-LINK Utility заливаем прошивку "repair_v1.34_(unlock).bin" с адреса 0x08000000 (скриншот №1).
  • В верхнем левом углу утилиты набираем адрес 0x1FFFF7E8 и нажимаем Enter. Выделяем и копируем 3 числа (скриншот №2).
  • Аналогично переходим в адрес 0x0800F9B4 и вставляем эти 3 числа вместо пятерок (скриншот №3).
  • Переходим в адрес 0x0800F820 и включаем отображение 8 бит. Прописываем полный серийный номер самоката с моделью и разделителем (скриншот №4). Символы набираем в соответствии с таблицей (скриншот №5).
  • Выходим из программы. Отключаем ST-LINK от USB.
  • Ставим контроллер в самокат и проверяем его работу.

 

Огромное Спасибо Conejo, без него ничего бы не получилось!

---

ВНИМАНИЕ! Пробег будет сброшен в ноль. 


UPDATE:

 2     12   
Ed01
Продвинутый форумчанин
Rating: 568
Ed01
31 july 2018, 2:41
Posted: 31 july 2018, 2:41

Скриншоты некоторых страниц приложения после установки прошивки.

Обновление до 1.40 в MiHomе доступно. Страница батареи необычная, но это у меня кастом БМС.


 3   
M365 spain
Участник
Rating: 41
M365 spain
31 july 2018, 5:49
Posted: 31 july 2018, 5:49

СУПЕР! спасибо огромное ED01, Conejo! Буду тестить!

imoto
Новичок
imoto
31 july 2018, 13:30
Posted: 31 july 2018, 13:30

ED01, как с вами связаться? В личку написал на прошлой неделе, не ответили.

M365 spain
Участник
Rating: 41
M365 spain
31 july 2018, 20:41
Posted: 31 july 2018, 20:41

Прошил! Контроллер восстановлен! Огромное спасибо и респект за проделанный труд!!! Ed01 и Conejo!  

Ed01
Продвинутый форумчанин
Rating: 568
Ed01
31 july 2018, 22:04
Posted: 31 july 2018, 22:04
[quote="M365 spain"]Прошил! Контроллер восстановлен! [/quote]

Поздравляю!

 1   
FIR3MAN
Новичок
ВаршаваRating: 4
FIR3MAN
03 august 2018, 10:51
Posted: 03 august 2018, 10:51

Ребят привет,
Есть БМС из китая (типа оригинал).

Но контроллер на неё ругается, говорит Communication error.

Тут видео.
програматор ST-LINK уже заказал. 
План насильно перепрошить БМС'у програматором.
Вопрос, если в БМС запорот бутлоадер я смогу что-то с ней сделать? Или это утиль? 

Видео: https://vk.com/video8202501_456239042


Кстати бмс на зарядку тоже не реагирует.


Я подозреваю что когда я перепаивал предохранители (потому что хитрый китаец поставил перемычки) , то мог перегреть плату. Но пока просто попробую прошить. 


Интересно узнать ваши мысли по этому поводу.

Ed01
Продвинутый форумчанин
Rating: 568
Ed01
03 august 2018, 12:18
Posted: 03 august 2018, 12:18
[quote="FIR3MAN"]Есть БМС из китая (типа оригинал).[/quote]

Такая?


Ed01
Продвинутый форумчанин
Rating: 568
Ed01
03 august 2018, 12:31
Posted: 03 august 2018, 12:31
[quote="FIR3MAN"]програматор ST-LINK уже заказал. 
План насильно перепрошить БМС'у програматором.
Вопрос, если в БМС запорот бутлоадер я смогу что-то с ней сделать? Или это утиль? [/quote]

Бутлоадер доступен - чип БМС в оригинале открыт. Только, перед тем как шить, слейте с нее все содержимое (backup).

Программа для ST-LINK - ST Visual Programmer (STVP).

Контакты - это SWIM интерфейс для ST-LINK.

Если китайцы не забыли развести на плате UART, то на первом этапе БМС будет рабочая, но не активированная (ошибка BMS password error).

О прошивке БМС было немного в начале темы: https://electro.club/f/31396

Там оригинальная прошивка (включая бут), распиновка разъема и общий вид программы.


p.s Перед тем как шить, прозвоните тестером контакты UART (RХ, TX) от платы БМС до коннектора, который втыкается в разъем контроллера. Может там просто обрыв. Внимательно осмотрите место пайки предохранителя, соседние элементы и обратную сторону платы - может, что отпаялось. Промойте это место спиртом от остатков флюса.

Прозвонки и промывки, естественно надо делать при отключенной БМС. Пока синий диод мигает - не все потеряно)

 1   
Ed01
Продвинутый форумчанин
Rating: 568
Ed01
03 august 2018, 14:31
Posted: 03 august 2018, 14:31

FIR3MAN, если Вы занимались с ардуинкой, то этот опыт поможет. Подслушать шину можно через USB то UART свисток, в терминалке на компьютере. Из терминалок понравилась COM Port Toolkit 4.0. Выдает сразу в HEX.

4-й контакт SWIM - это, вероятно питание 3,3V для программирования на столе без батареи.


Спойлер


На Али пишут, что-то типа, покупайте, если знаете что с этим делать. Про БМС с Али уже спрашивали и тут (чем она отличается от оригинала). Но пока никто не пробовал.

 1   
FIR3MAN
Новичок
ВаршаваRating: 4
FIR3MAN
03 august 2018, 20:14
Posted: 03 august 2018, 20:14
Ответ пользователю
Ed01 : 03 august 2018, 12:18
на это сообщение (развернуть)
[quote="FIR3MAN"]Есть БМС из китая (типа оригинал).[/quote]

Такая?

Да, именно.
Спасибо большое за помощь.
Буду ждать програматор. Пока что прозвонил провода идущие к контроллеру там все хорошо. Завтра будет немного больше времени и и попробую послушать что там БМС высылает. Отмыть плату от флюса это хорошая идея сейчас попробую :)

 1   
Conejo
Форумчанин
МадридRating: 309
Conejo
03 august 2018, 23:08
Posted: 03 august 2018, 23:08

Ed01, светодиод (а так же балансировка) - на совести STM8, так что раз мигает - какая-то прошивка в нём есть (STM8 Led Blink Example ? :D), интересно теперь дождаться прихода программатора FIR3MANу и узнать что внутри.


На всякий случай, алгоритм активации BMS вручную с использованием только ST-LINK (эта процедура поможет и от ошибки 22 BMS Password Invalid):


- отсоединяем BMS от всего полностю

- подсоединяем к ST-LINK (4 незапаянных отверстия, считая с квадратного: RESET, GND, SWIM, 3V3)

- подаём на 3V3 внешнее 3.3В питание (у меня самодельный ST-LINK, беру прямо с его стабилизатора)

  BMS с родной прошивкой с таким питанием начинает ну очень быстро мигать красным светодиодом

- подключаем ST-LINK к компьютеру

- запускаем STVP (установка описана Ed01 ранее в этой же теме)

- через меню Configure->Configure ST Visual Programmer выставляем настройки: 

  Hardware: ST-LINK, Port: USB, Programming mode: SWIM, Device: STM8L15xK6, OK

- переключаемся на вкладку DATA MEMORY

- делаем Read->Current tab, видим считанные данные EEPROM

- на всякий случай сохраняем их (правая кнопка на данных, Save as)

- меняем самые первые два байта на AA AA

- делаем Program->Current tab

- закрываем STVP, отсоединяем ST-LINK от компьютера, снимаем питание 3.3В (если отдельное)


- подсоединяем BMS к батарее, нажимаем кнопку, убеждаемся что какой-то запуск да произошел (диод(ы) поморгал(и)) - в этот момент внутри BMS произойдут интересные вещи: увидев AA AA, она сама пропишет в EEPROM правильный UID (однако при этом сбросит серийный номер и некоторые параметры вроде ёмкости)

- отсоединяем  BMS от батареи

- повторяем все шаги от "подаём на 3V3..." по "делаем Read..."

- если "магия" произошла, увидим следующие изменения:

  AA AA поменялись на 5A 5A

  по 1020 серийный номер сменился на 3GA0016A1A0001

  под ним поменялись цифры емкостей

  по 10E0 прописался UID (12 в основном ненулевых байт)

- меняем серийный номер на свой (ну или любой, но важен второй символ - J, он определяет фабричную ёмкость)

- по 1030 меняем 4 байта на 78 1E 78 1E - это ёмкость

- по 1060 меняем 2 байта на 01 00 - это статус, 01 00 означает "данные EEPROM верны, ошибок нет"

- делаем Program->Current tab

- готово, закрываем, отсоединяем, подключаем к батарее


 2     7   
Ed01
Продвинутый форумчанин
Rating: 568
Ed01
04 august 2018, 12:24
Posted: 04 august 2018, 12:24

Conejo, вот это классно, что бы мы без Вас делали?!

Остается только продумать, как этот алгоритм сократить до минимума шагов, для создания ремонтной прошивки BMS.

(хотя он и так хорош). Первое, что приходит в голову - это сразу прописать AA AA и некоторые значения в файле изначальной прошивки EEPROM.

---

p.s Хотел еще собрать макет, для эмуляции электроники сяоката на столе. Чтобы не разбирать самокат для тестов прошивок, которые выходят за рамки стандартного конструктора. По типу:

  1. Обманка или макетка с чипом STM8 - вместо батареи и БМС
  2. Макетка или программатор с чипом STM32 - вместо контроллера
  3. Оригинальная головная плата (ее и жду)
Conejo
Форумчанин
МадридRating: 309
Conejo
04 august 2018, 13:37
Posted: 04 august 2018, 13:37

Ed01, посмотрел - в ремонтной прошивке в EEPROM имеет смысл только АА АА, остальное - забить нулями. Всё остальное так или иначе будет либо сброшено на значения по умолчанию как результат работы АА АА, либо является динамическим параметром.


Пытался проделать всё то же самое через UART (протокол позволяет) - BMS без батареи (у моей большинство ячеек умерло вследствие пробоя U4/U5, жду материалы) в состоянии ошибки общаться не хочет, так что с ST-LINK - надёжнее :)

 1