Например TDA7294

Форум РадиоКот • Просмотр темы - Хитро-умный аккумулятор.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт май 20, 2025 19:11:50

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3122 ]     ... , , , 27, , , ...  
Автор Сообщение
В сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Ср окт 14, 2020 13:56:43 
Мучитель микросхем

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Ср окт 23, 2019 08:41:11
Сообщений: 414
Откуда: Саратов
Рейтинг сообщения: 0
Да, все есть и наготове.
...... То есть это из-за заблокированного контроллера и можно не ковырять больше ничего? - я только у выводов вероятного диода для его проверки подчистил. Зачем вообще они там залили компаунд? Ключи вот желтым теплопроводным, это понятно, а эти для чего? Для влагозащиты от возможного конденсата?

Тогда меняйте банки на сопротивления и читайте контроллер.
Возможно и нагревается когда пытается сжечь пред, у самих банок сил не хватает, а когда вставлен в ноут, появляется встречка иии...
Лучше запитать от ЛБП, у вас я так понял сборка 4S(4 банки последовательно) ставите напряжение до 14V ток 100mA, и когда будете выводить из спячки смотрите на ЛБП может быть рост по току с просадкой напряжения. Это как раз пытается сжечь пред.
Это все применимо если у вас пред еще целый. Вы его точно проверили?
В цепи нагревателя преда есть маленький ключ мосфет. можно его снять на время.
В общем читай контроллер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Ср окт 14, 2020 19:15:19 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
Зачем вообще они там залили компаунд? Ключи вот желтым теплопроводным, это понятно, а эти для чего? Для влагозащиты от возможного конденсата?

Ну конечно не для спасения схемы от пыли и от влаги. :) .
Официально - компаундом заливают платы и РЭ, для виброзащиты (в основном, в военном исполнении). То есть, чтобы ничего не отвалилось и не потрескалось когда с самолета скинут... Но по факту, конечно же заливают от нас с вами - от тех, кто вопреки их желанию, пытается ремонтировать "неремонтопригодное" с их точки зрения устройство.
Тоже самое - пароли и ограничение доступа к функционалу чипа.
Вот для этого и залили...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Вт окт 27, 2020 16:52:21 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 1
Удалось восстановить работоспособность контроллера:
СпойлерSMBusb Firmware Version: 1.0.1
----------
Manufacturer Name: Panasonic
Device Name: IBM-42T5264
Device Chemistry: LION
Serial Number: 3660
Manufacture Date: 2020.09.20

Manufacturer Access: 0018
Remaining Capacity Alarm: 561 mAh(/10mWh)
Remaining Time Alarm: 10 min
Battery Mode: 8000
At Rate: 0 mAh(/10mWh)
At Rate Time To Full: 65535 min
At Rate Time To Empty: 65535 min
At Rate OK: 1
Temperature: 22.65 degC
Voltage: 11196 mV
Current: 0 mA
Average Current: 0 mA
Max Error: 0 %
Relative State Of Charge 25 %
Absolute State Of Charge 25 %
Remaining Capacity: 1379 mAh(/10mWh)
Full Charge Capacity: 5616 mAh(/10mWh)
Run Time To Empty: 65535 min
Average Time To Empty: 65535 min
Average Time To Full: 65535 min
Charging Current: 3500 mA
Charging Voltage: 12600 mV
Battery Status: 00c0
Cycle Count: 0
Cell 0 voltage: 3744 mV
Cell 1 voltage: 3732 mV
Cell 2 voltage: 3720 mV
Cell 3 voltage: 0 mV

и откалибровать:
СпойлерSMBusb Firmware Version: 1.0.1
----------
Manufacturer Name: Panasonic
Device Name: IBM-42T5264
Device Chemistry: LION
Serial Number: 3660
Manufacture Date: 2020.09.20

Manufacturer Access: 0018
Remaining Capacity Alarm: 561 mAh(/10mWh)
Remaining Time Alarm: 10 min
Battery Mode: 8000
At Rate: 0 mAh(/10mWh)
At Rate Time To Full: 65535 min
At Rate Time To Empty: 65535 min
At Rate OK: 1
Temperature: 26.85 degC
Voltage: 12467 mV
Current: 0 mA
Average Current: 0 mA
Max Error: 0 %
Relative State Of Charge 100 %
Absolute State Of Charge 99 %
Remaining Capacity: 5587 mAh(/10mWh)
Full Charge Capacity: 5611 mAh(/10mWh)
Run Time To Empty: 65535 min
Average Time To Empty: 65535 min
Average Time To Full: 65535 min
Charging Current: 0 mA
Charging Voltage: 0 mV
Battery Status: 00e0
Cycle Count: 2
Cell 0 voltage: 4158 mV
Cell 1 voltage: 4170 mV
Cell 2 voltage: 4139 mV
Cell 3 voltage: 0 mV

Единственное, смущает что флаг INITIALIZED (Battery Status 0x0080) не сбросился после калибровки. Может для этого потребуется несколько циклов заряда-разряда, время покажет.

Напомню, аккумулятор для ноутбука IBM ThinkPad T61 построенный на базе контроллера M37512 FC200 и драйвера M61048FP.
Для считывания данных с контроллера и обмена данными с ним использовался инструмент smbusb от Karosium.
Для того чтобы определить назначение областей памяти DataFlash (ba, bb) пришлось дизассемблировать прошивку. Для этого использовал ida pro 6.1 (см. приложение ida_m37512.zip). Удалось определить следующее:
Спойлер
Код:
offset: size: default: note:
0x0000  2     0x3CC3   marker1
0x0002  2     0x0000   counter of erase/write cycles to data flash
0x0004  2     0x0000   must be 0xFFFF otherwise battery locks
0x0006  2     0x0000   counter of failed attempts to write
0x0010  2     0xC300   32KOSCC1,32KOSCC0 (use original values)
0x001A  1     0x00     0x00 -> charge; 0xF0 -> discharge (must be 0xF0 otherwise controller does not recognize charging current)
0x001F  3     0x000E05 always used (0x0124==0x00 -> charge value; 0x0124==0xF0 -> discharge value)
0x002E  3     0x009910 used if 0x0124==0xF0 (0x00,DCHARGEL,DCHARGEH)
0x003D  3     0x003226 used if 0x0124==0xF0 (0x00,DCHARGEL,DCHARGEH)
0x004C  3     0x005319 used if 0x0124==0x00 (0x00,CHARGEL,CHARGEH)
0x005B  3     0x00102D used if 0x0124==0x00 (0x00,CHARGEL,CHARGEH)
0x006A  3     0x005A33 used if 0x0124==0xF0 (discharge calibration value)
0x0079  3     0x005339 used if 0x0124==0x00 (charge calibration value)
0x0088  2     0x8A02   converted BAT1 voltage
0x0092  2     0x6601   converted BAT1 voltage
0x009C  2     0x8402   converted BAT2 voltage
0x00A6  2     0x6201   converted BAT2 voltage
0x00B0  2     0x8902   converted BAT3 voltage
0x00BA  2     0x6601   converted BAT3 voltage
0x00C4  2     0x0000   converted BAT4 voltage
0x00CE  2     0x6B01   converted BAT4 voltage
0x00D8  1     0xFC     crc of data in RAM 0x122...0x149; default crc is WRONG! must be 0x46
0x011E  2     0x1234   marker2
0x0120  1     0x44
0x0123  1     0xF3
0x0126  1     0x42
0x0129  1     0x43
0x012C  2     0x7712   full charge capacity ???
0x014C  1     0x6C
0x0151  2     0x0000   charge/discharge cycle counter
0x015B  2     0x0000   manufacture date
0x0161  2     0x0000   battery serial number
0x0167  16    0x0B49424D2D34325435323634FFFFFFFF  IBM-42T5264
0x0197  2     0x0000   not used ???
0x019D  16    0x0B315A445646303030303030FFFFFFFF  1ZDVF     
0x01ED  2     0xFE00   0xFE -> (0x050A,0x0509 == 0 || 0x052F != 0x5A)
                       0x5A -> OK
0x01F7  2     0x0000   always 0 ???
0x0201  2     0x0100   init_over_current
0x0221  2     0x0000
0x022B  2     0x0000   init_over_current
0x024B  2     0x6400
0x026B  2     0x0000
0x028B  2     0x0000
0x02AB  2     0x0000   something related to INT0,INT1,INT2
0x02CB  2     0x0000
0x02EB  2     0x0000
0x030B  2     0x0000
0x032B  4     0x00000000
0x036B  2     0x0000
0x0373  2     0x5678   marker3
0x0375  2     0x0000
0x0383  2     0x0000
0x0391  2     0x0000
0x039F  2     0x0000
0x03AD  2     0x0000
0x03BB  2     0x0000
0x03C9  2     0x0000
0x03D7  2     0x0000
0x03E5  2     0x0000
0x03F3  2     0x0000
0x0401  2     0x0000
0x040F  2     0x0000
0x041D  2     0x0000
0x042B  2     0x0000
0x0439  2     0x0000
0x0447  2     0x0000
0x0455  2     0x0000
0x045F  2     0x0000
0x0469  2     0x0000
0x0473  2     0x0000
0x047D  2     0x0000
0x0487  2     0x0000
0x04A7  2     0x0000
0x04C7  2     0x0000
0x04E7  2     0x0000
0x0507  2     0x0000
0x0527  2     0x0000
0x0547  2     0x0000
0x054D  2     0x0000
0x0553  2     0x0000
0x0559  2     0x0000
0x055F  2     0x0000
0x0565  2     0x0000
0x056B  2     0x0000
0x0571  2     0x0000
0x0577  2     0x0000
0x057D  2     0x0000
0x0583  2     0x0000
0x058D  2     0x0000
0x0597  2     0x0000
0x05A1  2     0x0000
0x05AB  2     0x0000
0x05B5  2     0x0000
0x05BF  2     0x0000
0x05C9  2     0x0000
0x05D3  2     0x0000
0x05D9  2     0x0000
0x05DF  2     0x0000
0x05E5  2     0x0000
0x05EB  2     0x0000
0x05F1  2     0x0000
0x05F7  2     0x0000
0x05FD  2     0x0000
0x0603  2     0x0000
0x0609  2     0x0000
0x060F  2     0x0000
0x0615  2     0x0000
0x061B  2     0x0000
0x0621  2     0x0000
0x0627  2     0x0000
0x062D  2     0x0000
0x0633  2     0x0000
0x0639  2     0x0000
0x063F  2     0x0000
0x06FD  2     0x5AA5   marker4
0x07FE  2     0x6996   marker5

Для восстановления dataflash за основу были взяты значения, которыми она инициализируется после стирания.
Переменная 0x0002 должна быть равна 0xFFFF, иначе контроллер блокируется.
Для переменных 0x0010, 0x002E, 0x003D, 0x004C, 0x005B, 0x006A, 0x0079 нужно использовать оригинальные значения, иначе не будет работать измерение тока.
Значения переменных 0x0088, 0x0092, 0x009C, 0x00A6, 0x00B0, 0x00BA, 0x00C4, 0x00CE не критичны, но не должны быть равны 0x0000 или 0xFFFF.
Переменная 0x001A должна быть равна 0xF0 (разряд) иначе не определяется ток заряда (всегда 0).
Значения переменных 0x0010...0x00CE защищены контрольной суммой (0x00D8). Для её вычисления написал скрипт на питоне (см. приложение m37512_fc200.zip; также имеется скрипт для преобразования даты, она не должна быть нулевой).
Переменная 0x01ED должна быть равна 0x5a, иначе контроллер блокируется.
Остальные значения оставил как есть (кроме, разумеется, количества циклов, даты, серийного номера).

Для сброса нужно:
- подтянуть 9 и 12 выводы контроллера к плюсу питания (43 вывод) с помощью резисторов ~100 Ом;
- подпаять аккумуляторы (если разблокировать с резисторами, вместо аккумуляторов, то контроллер блокируется позже при подпайке аккумуляторов, даже в сброшенном состоянии, когда вывод /RESET (15) подключён к минусу);
- сбросить контроллер (кратковременно соединить /RESET с минусом);
- записать ba_reset.bin в область ba;
- записать bb.bin (заполненную 0xFF) в область bb;
- отпаять всё от выводов 9, 12, 43;
- сбросить контроллер (кратковременно соединить /RESET с минусом);
- через 1-2 секунды контроллер подаёт напряжение на выход.


Вложения:
ida_m37512.zip [373.22 KiB]
Скачиваний: 705
m37512_fc200.zip [33.06 KiB]
Скачиваний: 660


Последний раз редактировалось k0stya Вт окт 27, 2020 20:23:39, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Вт окт 27, 2020 19:39:33 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
k0stya, Масштабная работа! А на каком ядре в IDA дизассемблили бинарник? Где брали? и на чем описание ядра, на Питоне?
Может я не доглядел чего то в архивах. И у меня в IDA 6.50 что то не открывается idb, куча ошибок, база данных корруптед. ))
Хотя IDA рабочая. я в ней Каросиумовский bq8030 открывал. Да это ладно, можно и бинарник загрузить, лишь бы ядро процессорное было.

Добавлено after 2 minutes 30 seconds:
Единственное, смущает что флаг INITIALIZED (Battery Status 0x0080) не сбросился после калибровки. Может для этого потребуется несколько циклов заряда-разряда, время покажет.

Так вроде и не должен он сбросится. :shock:
Он же наоборот, когда установлен, показывает что все с флеш памятью ОК, и cheksum сходится.


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Вт окт 27, 2020 20:21:32 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 1
Alex_PP писал(а):
А на каком ядре в IDA дизассемблили бинарник? Где брали? и на чем описание ядра, на Питоне?

Контроллер M37512 основан на процессоре Mitsubishi 740, а он поддерживается из коробки. Только нужно выбрать ассемблер IAR 740 вместо Alfred Arnold's Macro.

Alex_PP писал(а):
Может я не доглядел чего то в архивах. И у меня в IDA 6.50 что то не открывается idb, куча ошибок, база данных корруптед. ))
Хотя IDA рабочая. я в ней Каросиумовский bq8030 открывал. Да это ладно, можно и бинарник загрузить, лишь бы ядро процессорное было.

Может версии несовместимы. У меня "IDA Pro Advanced 6.1" с рутрекера.

Alex_PP писал(а):
Так вроде и не должен он сбросится. :shock:
Он же наоборот, когда установлен, показывает что все с флеш памятью ОК, и cheksum сходится.

Да, вы правы. Перечитал описание в документации, изначально неверно понял.


Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Вт окт 27, 2020 21:12:41 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
Контроллер M37512 основан на процессоре Mitsubishi 740, а он поддерживается из коробки. Только нужно выбрать ассемблер IAR 740 вместо Alfred Arnold's Macro.

О! Вот этой инфы не доставало в описании.
Может версии несовместимы.

Да все может быть. Но у меня тоже Ida pro Advanced только 6.5, x32.
Я на ней конвертировал с версии 5.6 базу, все получилось. А с вашей никак. Ладно, будет время, попробую бинарник загрузить. Просто придется с нуля дизассемблить, а я в этом не очень. )) А так, было бы удобней, и сравнить с чем.

Добавлено after 38 minutes 13 seconds:
Кстати. может сразу и найдете в прошивке команду (или серию команд) ввода контроллера в Бут, без "подтягивания" пинов? ))
Полагаю, это интересный вопрос для многих. И еще, наверняка есть у них тоже свои команды калибровки PCB, сброса программного, а не апператного, установки значений регистров, счетчиков, и пр... Все это должно "всплыть" из прошивки. Кому, как не вам "добить" ее? :)


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Вт окт 27, 2020 21:41:34 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 0
Alex_PP писал(а):
Кстати. может сразу и найдете в прошивке команду (или серию команд) ввода контроллера в Бут, без "подтягивания" пинов? ))

Я пытался. Дело в том, что в этом контроллере сильно развиты команды адресации и код сильно ветвится, имеется огромное множество битовых флагов, назначение которых сложно определить. Особенно сложен код отвечающий за обмен данными по I2C.
Сам загрузчик я нашел. Также найден код копирующий загрузчик в оперативную память и запускающий его оттуда. Но на определение нужной последовательности команд у меня не хватило упорства. Вся эта затея и так отняла слишком много времени.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Чт ноя 05, 2020 16:14:34 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 1
Как оказалось, если реальная ёмкость батареи сильно отличается от указанной в dataflash, контроллер не может её корректно определить даже после нескольких полных циклов заряда/разряда (ёмкость меняется, но понемногу). Более того, при большой нагрузке (при большом потреблении) контроллер и вовсе может заблокироваться.
Чтобы батарея работала стабильно нужно в dataflash записать реальную ёмкость аккумуляторов. Это значение находится по смещению 0x012C и равно 7712 -> 0x1277 (значения в память имеют обратный порядок байт). Оно хранится в каких-то промежуточных единицах измерения, для преобразования в миллиамперчасы нужно умножить его на 1.1:
Цитата:
0x1277 * 1.1 = 4727 * 1.1 = 5200 мАч

Чтобы получить милливаттчасы нужно ещё домножить на номинальное напряжение (смещение 0x014C в dataflash):
Цитата:
4727 * 1.1 * 10.8 = 56157 мВтч

Для экспериментов собрал батарею из б/у аккумуляторов с ёмкостью ~1100-1200 мАч. Т.е. полная ёмкость батареи где-то 2200 мАч, вместо номинальных 5200 мАч.
После прошивки dataflash с указанной реальной ёмкостью:
Цитата:
2200 / 1.1 = 2000 = 0x07d0 -> d007 в памяти

контроллер стал работать стабильно, не блокируется. Автономность, конечно, невысокая ~30 минут работы, но после калибровки контроллер даже показал немного большую ёмкость (~2311мАч).

В процессе разбирательства также решил закрыть вопрос с загрузчиком. Обнаружил скрытые команды, которые позволяют читать из памяти, записывать в оперативную память, сбрасывать контроллер (перезагружать), но самое главное - переводить в режим загрузчика. Работать непосредственно с командами неудобно, поэтому написал несколько скриптов:
rd_mem.py - позволяет считать байт из памяти; формат запуска следующий:
Код:
./rd_mem.py 14a

где 14a - адрес памяти в шестнадцатеричном формате

wr_mem.py - позволяет записать байт в оперативную память:
Код:
./wr_mem.py 14a 5a

где 14a - адрес (0-63f), 5а - байт для записи в шестнадцатеричном формате

dump_flash.py - позволяет считать указанные области памяти; если запустить без параметров будут скопированы области ba и bb; пример вызова:
Код:
./dump_flash.py b0 b1 b2 b3

Процесс копирования довольно долгий, так как считывание производится побайтово.

write_flash.py - позволяет записать файл в выбранную область памяти; скрипт интерактивный, сначала запрашивается область памяти, затем выбирается файл прошивки (должен лежать в одном каталоге со скриптом), далее переводит контроллер в режим загрузчика, стирает выбранную область памяти, записывает в неё содержимое файла и выводит контроллер из режима загрузчика. Запускается без параметров:
Код:
./write_flash.py


reset.py - переводит контроллер в режим загрузчика, стирает области bb и ba, записывает в область ba содержимое файла ba_reset.bin, выводит контроллер из режима загрузчика и отображает состояние батареи. Запускается без аргументов.

Удалось разобраться не со всеми командами. Всё это работает только на прошивке от Panasonic, на батареи от LGC (IBM-42T4653) они не работают. Но зато на батареи от LGC нет никаких паролей, просто подтягиваешь 9-й и 12-й вывод к 43-му стираешь области ba, bb - готово.


Вложения:
m37512_fc200.zip [36.03 KiB]
Скачиваний: 443
ida_m37512.zip [392.04 KiB]
Скачиваний: 432
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Чт ноя 05, 2020 19:19:22 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
Добрый вечер .k0stya.
Вы серьезно поработали с чипом m37512. И даже скрипты к Каросиумовской утилите написали. Весьма впечатляет, по крайней мере меня. :)
Только вы не все четко резюмировали, относительно методики сброса и входа в бутром режим.
Эта команда - все что требуется ему для входа в бут? Если я правильно понял.
smbusb_comm -a 16 -c ff -w cdab
То есть, просто передать по адресу ff число cdab?
А вот с ресетом я что то подрастерялся, не нашел у вас там.
Если не сложно, прокомментируйте методики одного и второго.
Спасибо!

P.S. То что работает только на прошивке Panasonic - вполне понятно, у каждого свои методы входа в бут и разлочивания.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 01:02:17 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 1
Команда "ff" с паролем "cdab" открывает доступ к скрытым командам. Команда для перевода контроллера в режим загрузчика - "dd" с тем же паролем "cdab". Т.е. для перехода в режим загрузчика нужно выполнить:
Код:
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c dd -w cdab

Тут нужно пояснить важный момент. У микроконтроллера есть два режима работы: нормальный и режим загрузчика (назовём его загрузчик1). Для каждого режима есть две независимые области памяти. Одна для пользовательской программы, вторая для программы чтения/записи прошивки (загрузчик1). Если после сброса на 12-ом выводе низкий логический уровень - выполняется пользовательская программа. Если же после сброса на 12-ом и 9-ом выводах высокий уровень, то выполняется программа загрузчика1. Память загрузчика1 может быть записана только с помощью параллельного программатора и не доступна из программы пользователя. Пользовательская же область памяти может быть перезаписана как загрузчиком1, так и самой пользовательской программой. В пользовательской памяти (в начале блока b3) имеется код загрузчика2 который может копироваться в оперативную память и оттуда выполняться.
Так вот, выше указанными командами активируется загрузчик2. Его функционал меньше чем у загрузчика1, он может только стирать и записывать, но не может считывать память. Тем не менее стирание и запись выполняются с проверками. После стирания какой либо области памяти устанавливается флаг, который не позволит выйти из загрузчика. Насколько я понимаю это сделано для защиты, так как выполняясь из оперативной памяти загрузчик2 может стереть себя из флэш-памяти (но всегда остаётся загрузчик1). Чтобы сбросить этот флаг нужно без ошибок выполнить хотя бы одну команду записи (запись выполняется блоками по 16 байт). После чего можно покинуть режим загрузки (будет выполнен переход к началу пользовательской программы, что эквивалентно сбросу).
В режиме загрузчика2 доступны следующие команды:
Спойлер
Код:
Bootloader commands:
CMD     DIR     DATA    Description
----------
0xA0    w       word    erase block (ba: 1800; bb: 1000; ...)
0xA1    w       word    clear status register (password cdab)
0xA2    w       word    reset (password cdab)
0xA3    w       block   write 16 bytes starting from ADDR
0xA4    w       word    set ADDR
0xA5    r       word    read status register
0xDD    w       word    ???
0xFF    w       word    unlock cmd (password cdab)

Перед выполнением команд A0..A5 также нужно отправлять команду ff с паролем cdab.
Память стирается по-блочно. Чтобы стереть определённый блок нужно записать адрес начала блока в команду A0. После этого регистр состояния примет значение 0x81.
СпойлерФлаги регистра состояния:
бит7 (старший бит): 1 == "готов", 0 == "занят";
бит6: не задействован;
бит5: 1 == стирание прервано с ошибкой, 0 == норма;
бит4: 1 == запись прервана с ошибкой, 0 == норма;
бит3: не задействован;
бит2: не задействован;
бит1: 1 == не удалось выполнить запись, 0 == норма;
бит0: 1 == стёрто, нужна запись, 0 == норма.
Нормальное значение регистра состояния - 0x80.

Пример стирания области памяти ba:
Код:
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a0 -w 1800

Перед командой записи нужно сбрасывать регистр состояния (команда A1). Этой командой сбрасываются только биты 7,5,4, а биты 1 и 0 можно сбросить только успешной записью памяти.
Адрес начала записи устанавливается командой A4. После каждой записи адрес автоматически увеличивается на 16.
Пример записи 32 байт в начало блока памяти bb с последующим выходом из загрузчика:
Спойлер
Код:
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a1 -w cdab
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a4 -w 1000
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a3 -w 3cc30000ffff0000ffffffffffffffff
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a1 -w cdab
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a3 -w 1a01fffffffffffffffff0ffffffff00
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c a2 -w cdab


Считать содержимое любой ячейки памяти (SFR, RAM, ROM, DataFlash) можно с помощью скрытой команды FD в обычном режиме работы. Сначала в команду записывается адрес, а затем с неё считывается значение памяти:
Код:
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c fd -w 014a
smbusb_comm -a 16 -c ff -w cdab
smbusb_comm -a 16 -c fd -r 2
005a

Таким образом можно снять дамп с любой области памяти.

Это то что касается загрузчика.
Для сброса нужно подготовить дамп для прошивки dataflash. Как это сделать описано в одном из предыдущих сообщений. Единственное дополнение касательно ёмкости батареи было сказано в прошлом сообщении.
В моём случае дамп для сброса называется ba_reset.bin (см. архив m37512_fc200.zip). Думаю, его можно брать за основу, только заменить значения переменных по смещению 0x0010, 0x002E, 0x003D, 0x004C, 0x005B, 0x006A, 0x0079 на значения из своего контроллера. Далее подсчитать контрольную суму с помощью скрипта crc.py (он интерактивный, нужно просто выбрать файл) и записать её по смещению 0x00D8.
Чтобы сбросить контроллер нужно стереть dataflash (блоки ba и bb) и записать в область ba (или bb, на самом деле нет разницы) подготовленный дамп памяти. Всё это делает скрипт reset.py.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 13:20:29 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
Пожалуй, больше по этому контроллеру не может возникнуть никаких вопросов. ))
В ваших выкладках много описаний (обозначения областей памяти, описание бмт регистра состояния, и пр...) перекликается с официальным мануалом по этому контроллеру. Вы брали за основу этот документ?
https://drive.google.com/file/d/1TyTBws ... sp=sharing

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 13:53:38 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 0
Alex_PP, да, всё верно. В приложенном мною ранее архиве m37512_fc200.zip в каталоге datasheets содержатся документы, которые были использованы для анализа прошивки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 15:42:12 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
k0stya, получается в бутром входить и вовсе не обязательно, если нет желания считать или записать прошивку?
Для данных EEPROM есть команды, доступные из под запущеной прошивки (нормального режима)?
Если так, это очень хорошо.
А вот что касается 2го загрузчика, получается, в режиме прошивки можно загрузить лишь его, из области b3? А он, по вашим словам (может это есть в мануале, не переводил), не может читать, а только лишь для записи данных? Верно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 16:46:04 
Родился

Зарегистрирован: Пн фев 11, 2013 19:16:24
Сообщений: 10
Откуда: Кривой Рог, Украина
Рейтинг сообщения: 0
Alex_PP писал(а):
получается в бутром входить и вовсе не обязательно, если нет желания считать или записать прошивку?
Необходимость загрузки в бутром может возникнуть если прошивка в пользовательской памяти повреждена и нет возможности вызвать загрузчик2.
Загрузчик2 является частью пользовательской прошивки и может переписать как dataflash, так и обычную flash память.
Alex_PP писал(а):
А вот что касается 2го загрузчика, получается, в режиме прошивки можно загрузить лишь его, из области b3? А он, по вашим словам (может это есть в мануале, не переводил), не может читать, а только лишь для записи данных? Верно?
Верно.
Alex_PP писал(а):
Для данных EEPROM есть команды, доступные из под запущеной прошивки (нормального режима)?
Читать данные можно в обычном режиме работы контроллера. Чтобы стереть/записать EEPROM (в документации - dataflash) нужно вызывать загрузчик2.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 18:07:09 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Чт авг 20, 2020 19:21:47
Сообщений: 261
Откуда: Курск
Рейтинг сообщения: 0
k0stya писал(а):
Необходимость загрузки в бутром может возникнуть если прошивка в пользовательской памяти повреждена и нет возможности вызвать загрузчик2.

Ну этот случай редко встречается в повседневном ремонте.

k0stya писал(а):
Читать данные можно в обычном режиме работы контроллера. Чтобы стереть/записать EEPROM (в документации - dataflash) нужно вызывать загрузчик2.

А вот это неудобно, потому что перед тем как загрузить память данных eeprom (dataflash), всегда приходится сначала ее выгрузить из контроллера, и исправить.
Получается, bootloader2 отпадает. А вызвать основной можно лишь аппаратно, пином контроллера. Это не любой может сделать, хотя кнш если уж человек полез в АКБ, надо быть готовым и к такому. ))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 06, 2020 20:57:37 
Родился

Зарегистрирован: Пт окт 16, 2020 21:59:28
Сообщений: 1
Рейтинг сообщения: 0
Доброго времени суток.
Нужна помощь. Разобрал батарею старого T61 внутри контролер собран на A2169 верхняя строка
A24063000F средняя строка.
Изображение
Goole не нашел совпадений может кто встречал что это за контролер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Чт ноя 12, 2020 09:58:29 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Ср апр 08, 2020 15:01:45
Сообщений: 20
Рейтинг сообщения: 0
нашел вот такую инфу по bq8050
Изображение
СпойлерW3 Texas anny
INSTRUMENTS

18 SHA-1 Authentication

18.1 Description

For authenticating the battery pack the bq8050 uses a SHA-1 cryptographic hash function with a 128 bit
split key (64 bits per key). More complete explanations of the SHA-1 algorithm are available on the

WWW, see www.fags.ora/rfcs/ric3174.htm]

A modified form of the SHA-1/HMAC provides the authentication function of the bq8050. Both the host
and the bq8050 share two 64-bit keys used in the authentication calculation. To authenticate a battery
pack, the host writes a random 20-byte message to the bq8050. The bq8050 calculates the HMAC digest
in less than 50ms, replacing the random message sent by the host with the HMAC result. To complete
the authentication process, the host computes the HMAC function with the same 20-byte random

message originally written to the bq8050. The result is compared to the HMAC result computed by the
bq8050. If the values match, the pack is authenticated.

. 18.2 Key programming

The bq8050 allows each of the 2 keys to be programmed individually enabling each one to be able to be

programmed at different stages of the battery pack production. EG: k; at Texas Instruments and k, at the
pack maker.

Each key consists of 64 bits providing a total key length of 128 bits which is programmed through 2
separate programming events with two separate internally generated locking bytes.

The default keys are written using the Write_Default_Keys ROM command. This command is only
available if NO lock byte has been set AND the device has been reset.

KEY1 must be programmed first and during this programming the internal lock byte is set. Until a POR
occurs the Write_Default_Keys command can be used to reset the keys to correct any programming
errors. Once the device is reset and the newly programmed key is locked and cannot be re-programmed.

The 1" default key is cb a4 cb a4 cb a4 cb ad (in hex) and the 2™ default key is c3 17 c3 17 c3 17 ¢3 17
(in hex). However, the lock bytes will NOT have been set so the key can be modified.

Each key programming requires a known 160 bit message to be written to the bq8050 which pads this up
to 512-bits. The bq8050 will run this message through a SHA-1/HASH cipher, take the lower 64 bits of the
result and encrypt it prior to being written to the secure data flash.

Production Data Sheet 14412010 Copyright © 2010, Texas Instruments Incorporated

Page 90 of 94


я в этом мало разбираюсь, но возможно первый ключ с 72 ответ, а второй с 73 адреса, но что делать дальше пока не знаю....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Пт ноя 13, 2020 12:51:36 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Ср апр 08, 2020 15:01:45
Сообщений: 20
Рейтинг сообщения: 0
может кто удалено сбросить bq8055 sanyo?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Вс ноя 15, 2020 19:49:43 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Ср апр 08, 2020 15:01:45
Сообщений: 20
Рейтинг сообщения: 0
может кто удалено сбросить bq8055 sanyo?

не актуально, рискнул и перебрал свою родную батарейку на bq20z45.... в результате 6 часов автономной работы! с саньо было 5 часов, но она со ста до 6 процентов падала за 20 минут и весела еще около 5 часов на 6%, но за три цикла так ни чего и не пересчитала...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитро-умный аккумулятор.
СообщениеДобавлено: Сб ноя 28, 2020 19:40:19 
Родился

Зарегистрирован: Сб ноя 28, 2020 19:33:06
Сообщений: 1
Рейтинг сообщения: 0
Всем доброго, СР2112 be2works пиленая, bq30Z551 читается только статус, прошивка увы нет, есть варианты?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3122 ]     ... , , , 27, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Vovan_sar и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y