Китайский оригинал V1.1.0; ядра 4.4 / 4.19. Сохранена область технического предисловия: понятия, функции, конфигурация и диагностика модулей. Английского PDF во входных материалах нет; четыре языка полностью основаны на китайском оригинале и используют его технические рисунки, если они есть. Только платформенный справочник ArmSoM: сверяйте PMIC, SoC, SDK/BSP, ядро, питание и батарею конкретной платы. Аппаратных испытаний не было; поддержка всех плат не заявляется.
Код, параметры и журналы — примеры производителя, не измерения ArmSoM. Изменение питания, зарядного тока, напряжения или тепловой защиты может вызвать отключение, повреждение или опасность батареи. Не копируйте настройки вслепую; не отключайте тепловую защиту при обычной работе. Противоречия сохранены без угадывания констант; см. запись сверки. Журналы — примеры; значения разных этапов не доказывают единый тест или реальное состояние батареи.
Техническое предисловие: RK818/RK816 сходно реализуют измерение заряда и управление зарядкой. По RK818 объясняются важные журналы этапов; RK816 использует те же пояснения.
1. Обнаружение зарядного устройства/OTG
1.1 Файлы драйвера
drivers/power/rk818_charger.c
Драйвер обнаруживает подключение/отключение зарядного устройства и OTG и настраивает ток зарядки. Префикс сообщений — “rk818-charger: “. “ac”, “usb”, “dc”, “otg” обозначают устройства: 1 — подключено, 0 — отключено. Сам PMIC не обнаруживает события подключения зарядного устройства/OTG; определение типа зарядки зависит от сообщений цепочки уведомлений USB.
1.2 probe этап
Регистрация зарядного устройства DC:
rk818-charger: support dc
rk818-charger: not support dc
Регистрация цепочки уведомлений зарядного устройства Type-C:
rk818-charger: register typec extcon evt notifier
Регистрация цепочки уведомлений обычного USB-зарядного устройства:
rk818-charger: register bc evt notifier
Подключения устройств к завершению probe:
rk818-charger: ac=1, usb=0, dc=0, otg=0
Версия драйвера:
rk818-charger: driver version: 2.0
1.3 running этап
События подключения/отключения зарядного устройства и OTG от цепочки USB:
rk818-charger: receive bc notifier event: DISCNT // 充电器拔出
rk818-charger: receive bc notifier event: USB // 电脑充电插⼊
rk818-charger: receive bc notifier event: AC // 标准充电器插⼊
rk818-charger: receive bc notifier event: CDP1.5A // CDP类型充电器插⼊
rk818-charger: receive bc notifier event: UNKNOWN // 不识别的充电器插⼊
rk818-charger: receive bc notifier event: OTG ON // OTG插⼊
rk818-charger: receive bc notifier event: OTG OFF // OTG拔出
rk818-charger: detect dc charger in // DC插⼊
rk818-charger: detect dc charger out // DC拔出
PMIC не определяет тип зарядного устройства, но обнаруживает наличие подключённого зарядного оборудования:
rk818-charger: pmic: plug out
rk818-charger: pmic: plug in
Изменения питания 5V при подключении/отключении OTG:
rk818-charger: disable otg5v
rk818-charger: enable otg5v
После каждого подключения/отключения зарядного устройства или OTG обновляются сведения об устройствах и токе:
rk818-charger: ac=1 usb=0 dc=0 otg=0 v=4200 chrg=1000 input=1800 virt=0
1.4 suspend этап
Изменение питания OTG 5V при suspend:
rk818-charger: suspend: otg 5v on
rk818-charger: suspend: otg 5v off
1.5 shutdown этап
Текущие подключения устройств при shutdown:
rk818-charger: shutdown: ac=1 usb=0 dc=0 otg=0
2. Измерение заряда батареи
2.1 Файлы драйвера
drivers/power/rk818_battery.c
drivers/power/rk818_battery.h
Драйвер реализует измеритель заряда и учёт заряда батареи. Для распознавания сообщения имеют префикс “rk818-bat: “.
2.2 probe этап
При первом включении после подключения батареи выводится “first on”:
rk818-bat: first on: dsoc=24, rsoc=24 cap=960, fcc=4000, ov=3840
Если аварийное выключение, например продолжающийся расход после зависания, нарушает состояние счётчика кулонов, при следующем запуске выполняется принудительная коррекция:
rk818-bat: system halt last time... cap: pre=2400, now=120
Если U-Boot уже инициализировал измеритель заряда, драйвер ядра может пропустить часть инициализации, чтобы не повторять её:
rk818-bat: initialized yet..
Начальное состояние счётчика кулонов при probe:
rk818-bat: dsoc=32 cap=1000 v=3780 ov=3900 rv=3890 min=25 psoc=32 pcap=1000
Версия измерителя заряда:
rk818-bat: driver version 7.1
2.3 running этап
При каждом изменении заряда и передаче его драйвером в framework выводятся следующие сообщения. Первое содержит текущие параметры, второе — параметры при начальной инициализации загрузки, в основном для отладки.
rk818-bat: changed: dsoc=22, rsoc=24, v=3820, ov=3770 c=1018, cap=960, f=4000,
st=cc cv, hotdie=0
rk818-bat: dl=10, rl=12, v=3670, halt=0, halt_n=0, max=0, init=0, sw=0, calib=0,
below0=0, force=0
2.4 suspend этап
После перехода в глубокий сон длительное ожидание может снизить напряжение батареи ниже порога выключения. Тогда PMIC выдаёт прерывание пробуждения, после которого система выключается:
rk818-bat: lower power yet, power off system! v=3350, c=-125, dsoc=0
2.5 shutdown этап
Важная информация при shutdown:
rk818-bat: shutdown: dl=0 rl=2 c=-1220 v=3460 cap=88 f=4000 ch=1 n=0 mode=1
rest=128
Значения по порядку: <отображаемый SOC> <реальный SOC> <ток> <напряжение> <остаточная ёмкость> <ёмкость полного заряда> <есть зарядное устройство?> <остальное игнорировать…>.
3. Об измерителе RK816
Реализация измерителя заряда RK816 в основном сходна с RK818. Обнаружение зарядного устройства и изменения измерителя объединены в:
drivers/power/rk816_battery.c
Содержание сообщений очень похоже на RK818, но для распознавания используется префикс “rk816-bat:”. Для RK816 используйте приведённые выше пояснения RK818.
