- #1
Автор Темы:
Radiotrance
Написанное здесь применимо к большинству чипсетов Qualcomm и убережет от бесполезного реболлинга, когда аппарат не входит в EDL.
В MTK/HiSilicon/Spreadtrum используется тот же принцип с небольшими отличиями.
Для диагностики понадобятся (по схеме Xiaomi Mi 9):
1. Чтобы отследить все этапы запуска, подаем напряжение на VPH_PWR с внешнего источника. В этот момент контроллер питания PM8150 подтянет четыре линии к запустившимся внутренним регуляторам: PHONE_ON_N к +1.8в, а PM_RESIN_N, SYSOK и FAULT_N к +1в. Затем будет выдано VREG_IO_1P8 и КП начнет опрашивать своего партнера, вспомогательный контроллер PM8150L (или -A в аппаратах с дисплеями AMOLED) по SPMI. Если ответ почему-то не пришел, VREG_IO_1P8 и обмен по шине будут удерживаться активными пока PM8150 будет шатать FAULT_N (дергать ее на ноль), пытаясь "разбудить" напарника. Когда все исправно, ответ приходит за ~10мс, после чего регулятор VREG_IO_1P8 выключается и система уходит в дежурный режим. Регуляторы подтяжки остальных линий продолжают работать.
Линия PM_RESIN_N заведена на КП и подтянута к напруге потому что кнопка "громкость вниз" вместе с кнопкой включения выполняет функцию аппаратного сброса. Если удерживать обе, КП принудительно выключится.
2. Формируем событие включения - жмем на вкл. или подключаем зарядку. Линии PHONE_ON_N или SYSOK соответственно просаживаются с 1в до нуля; КП, куда они обе приходят, начинает выполнять POS. Но первое напряжение в таблице - VREG_BOB, а его формирует вспомогательный КП, поэтому PM8150 включает VREG_IO_1P8, активирует SPMI и по шине командует партнеру запуск. Получив от него VREG_BOB, PM8150 пытается поднять следующее по списку VREG_S5A_2P0. Если получилось - VREG_S6A_0P9, и так далее. Напряжения, за которые отвечает L-ка, PM8150 лишь проверяет на номиналы или забивает вообще. Но если какое-то напряжение не поднято вовремя, либо превышен ток/температура, соответствующий чип дергает FAULT_N в ноль, останавливая POS и перезапуская все микросхемы, отслеживающие этот сигнал. И имеем пресловутые "скачки вторичек".
3. Если последнее напряжение в таблице поднято успешно, PM8150 финализирует процесс - отправляет на процессор MSM_RESIN_N в виде +1.8в. К этому времени на процессоре уже присутствует тактовая частота LN_BB_CLK, т.к. ее выдача предусмотрена в середине POS. По получению в ответ PS_HOLD процедура считается завершенной - питания стоят, EDL есть. Микросхема интерфейса PM8150B и контроллер заряда BQ25970 в ней не участвуют, и EDL можно получить даже без обоих чипов на плате. Более того, интерфейсные (отвечающие за мониторинг батареи) микросхемы могут препятствовать появлению EDL.
4. При попытке включиться от АКБ в уравнении появляется третий компонент - PM8150B. Именно он формирует здесь VPH_PWR и "зануляет" SYSOK при подключении зарядки. Он подключен к PHONE_ON_N, к FAULT_N, к шине SPMI, и у него есть задача - заблокировать работу при разряженной/перегретой/отсутствующей батарее. Это значит, что по появлению нуля на PHONE_ON_N одновременно с POS на PM8150 начнется диагностика АКБ на PM8150B. И если B-шке что-то не понравится - она обрушит FAULT_N в ноль или скомандует "ша!" по SPMI, после чего запуск будет заблокирован. А вот при включении от зарядки она в POS не вмешивается, что нам и нужно.
Для EDL в данном чипсете сделано исключение: линия FORCED_USB_BOOT, кроме процессора, идет и на PM8150B. Цель - разрешить работу в EDL даже при проблемах с батареей, отключив ее диагностику.
На практике, естественно, запитывать VPH_PWR от блока не требуется. Достаточно откинуть батарею, воткнуть зарядку, проверить VPH_PWR и состояние MSM_RESIN_N (на предпоследнем скриншоте).
P.P.S.: Наличие PS_HOLD гарантирует EDL, но не гарантирует запуска - часть питаний процессора/памяти могут быть реализованы внешними преобразователями, работоспособность которых не отслеживается (напр. Hi6422 в Huawei или питание оперативки в Mi Play). А главное - для запуска требуется исправное состояние батареи.
В MTK/HiSilicon/Spreadtrum используется тот же принцип с небольшими отличиями.
Для диагностики понадобятся (по схеме Xiaomi Mi 9):
- VPH_PWR - главная (корневая) шина питания всех аппаратов.
- Power On Sequence (POS)- процесс последовательной выдачи контроллером питания вторичных (им же сформированных) напряжений при включении устройства.
- PHONE_ON_N, он же KPD_PWR_N - линия кнопки включения.
- PM_RESIN_N - линия кнопки "громкость вниз".
- SYSOK, он же CBL_PWR_N, он же AUTO_ON_N - сигнал запуска контроллера питания от зарядки.
- FAULT_N - линия прерывания, активируемая при сбое в процессе выполнения Power On Sequence.
- SPMI_CLOCK и SPMI_DATA - двухпроводная шина для общения контроллеров питания с процессором и между собой.
- VREG_IO_1P8 - обеспечивающее работу SPMI напряжение, выдаваемое контроллером питания до Power On Sequence.
- MSM_RESIN_N - выдаваемое контроллером питания процессору разрешение начать работу, последнее действие КП в Power On Sequence.
- PS_HOLD - ответ от процессора на предыдущий сигнал, указание контроллеру питания удерживать все выданные в Power On Sequence напряжения.
- LN_BB_CLK - Тактовая частота для процессора, выдается контроллером питания от подключенного к нему кварца.
- FORCED_USB_BOOT - тестпоинт для входа в EDL.
1. Чтобы отследить все этапы запуска, подаем напряжение на VPH_PWR с внешнего источника. В этот момент контроллер питания PM8150 подтянет четыре линии к запустившимся внутренним регуляторам: PHONE_ON_N к +1.8в, а PM_RESIN_N, SYSOK и FAULT_N к +1в. Затем будет выдано VREG_IO_1P8 и КП начнет опрашивать своего партнера, вспомогательный контроллер PM8150L (или -A в аппаратах с дисплеями AMOLED) по SPMI. Если ответ почему-то не пришел, VREG_IO_1P8 и обмен по шине будут удерживаться активными пока PM8150 будет шатать FAULT_N (дергать ее на ноль), пытаясь "разбудить" напарника. Когда все исправно, ответ приходит за ~10мс, после чего регулятор VREG_IO_1P8 выключается и система уходит в дежурный режим. Регуляторы подтяжки остальных линий продолжают работать.
Линия PM_RESIN_N заведена на КП и подтянута к напруге потому что кнопка "громкость вниз" вместе с кнопкой включения выполняет функцию аппаратного сброса. Если удерживать обе, КП принудительно выключится.
2. Формируем событие включения - жмем на вкл. или подключаем зарядку. Линии PHONE_ON_N или SYSOK соответственно просаживаются с 1в до нуля; КП, куда они обе приходят, начинает выполнять POS. Но первое напряжение в таблице - VREG_BOB, а его формирует вспомогательный КП, поэтому PM8150 включает VREG_IO_1P8, активирует SPMI и по шине командует партнеру запуск. Получив от него VREG_BOB, PM8150 пытается поднять следующее по списку VREG_S5A_2P0. Если получилось - VREG_S6A_0P9, и так далее. Напряжения, за которые отвечает L-ка, PM8150 лишь проверяет на номиналы или забивает вообще. Но если какое-то напряжение не поднято вовремя, либо превышен ток/температура, соответствующий чип дергает FAULT_N в ноль, останавливая POS и перезапуская все микросхемы, отслеживающие этот сигнал. И имеем пресловутые "скачки вторичек".
3. Если последнее напряжение в таблице поднято успешно, PM8150 финализирует процесс - отправляет на процессор MSM_RESIN_N в виде +1.8в. К этому времени на процессоре уже присутствует тактовая частота LN_BB_CLK, т.к. ее выдача предусмотрена в середине POS. По получению в ответ PS_HOLD процедура считается завершенной - питания стоят, EDL есть. Микросхема интерфейса PM8150B и контроллер заряда BQ25970 в ней не участвуют, и EDL можно получить даже без обоих чипов на плате. Более того, интерфейсные (отвечающие за мониторинг батареи) микросхемы могут препятствовать появлению EDL.
4. При попытке включиться от АКБ в уравнении появляется третий компонент - PM8150B. Именно он формирует здесь VPH_PWR и "зануляет" SYSOK при подключении зарядки. Он подключен к PHONE_ON_N, к FAULT_N, к шине SPMI, и у него есть задача - заблокировать работу при разряженной/перегретой/отсутствующей батарее. Это значит, что по появлению нуля на PHONE_ON_N одновременно с POS на PM8150 начнется диагностика АКБ на PM8150B. И если B-шке что-то не понравится - она обрушит FAULT_N в ноль или скомандует "ша!" по SPMI, после чего запуск будет заблокирован. А вот при включении от зарядки она в POS не вмешивается, что нам и нужно.
Для EDL в данном чипсете сделано исключение: линия FORCED_USB_BOOT, кроме процессора, идет и на PM8150B. Цель - разрешить работу в EDL даже при проблемах с батареей, отключив ее диагностику.
На практике, естественно, запитывать VPH_PWR от блока не требуется. Достаточно откинуть батарею, воткнуть зарядку, проверить VPH_PWR и состояние MSM_RESIN_N (на предпоследнем скриншоте).
- Есть и стоит на месте - должен быть EDL, смотреть линии USB.
- Есть, но постоянно снимается/подается - нет PS_HOLD, смотреть наличие LN_BB_CLK, катать/менять процессор.
- Полностью отсутствует - КП не завершили процедуру запуска. Проверять VPH_PWR, сигнал включения и выполнение POS.
P.P.S.: Наличие PS_HOLD гарантирует EDL, но не гарантирует запуска - часть питаний процессора/памяти могут быть реализованы внешними преобразователями, работоспособность которых не отслеживается (напр. Hi6422 в Huawei или питание оперативки в Mi Play). А главное - для запуска требуется исправное состояние батареи.
Вложения
-
100,9 КБ Просмотры: 272
-
97,6 КБ Просмотры: 269
-
84 КБ Просмотры: 259
-
71,8 КБ Просмотры: 254
-
108,2 КБ Просмотры: 296
-
70,3 КБ Просмотры: 300
-
124 КБ Просмотры: 280
-
91,2 КБ Просмотры: 239
-
295,1 КБ Просмотры: 242
-
31,6 КБ Просмотры: 293
Последнее редактирование: