Как найти мультиконтроллер на материнской плате

Содержание

  1. Как прошить мультиконтроллер ноутбука
  2. Мультиконтроллер
  3. Замена мультиконтроллера
  4. Диагностика мультиконтроллера
  5. Как прошить мультиконтроллер ноутбука
  6. Как прошить мультиконтроллер ноутбука
  7. Встроенный контроллер одного ноутбука и его наследство
  8. Краткая история встроенных контроллеров на платформах x86
  9. Схема материнской платы моего ноутбука
  10. Прошивка EC
  11. POST-карты в современных ноутбуках
  12. Клавиатурные механизмы
  13. Таинственный фрагмент кода
  14. Где хранится код?
  15. Запуск моего собственного кода в EC
  16. Итоги

Как прошить мультиконтроллер ноутбука

Мультиконтроллер

Мультиконтроллер (ранее «KBC») отвечает за управление включением, работу с периферийными устройствами такими как клавиатура и тачпад, мониторинг температур и напряжений. С кнопки включения сигнал поступает на мультиконтроллер, а он в свою очередь управляет включением ШИМ контроллеров, которые управляя ключами вырабатывают необходимые напряжения разных узлов, зарядки аккумулятора. Поэтому если ваш ноутбук не включается — стоит убедиться в исправности мультиконтроллера. К мультиконтроллеру чаще всего по интерфейсу (SPI) подключена микросхема Flash памяти , в которой хранится BIOS. У современных ноутбуков встречается два вида микросхем — 25Q64 (w25q64) и 25Q32 (w25q32).

Мультиконтроллер выходит из строя при залитии ноутбука, замыкании цепей кнопки питания или разъема LVDS матрицы.
Очень часто при замене матрицы ноутбука не выключают аккумулятор, что приводит к «выгоранию» микросхемы, так как напряжение с нее поступает на разъем матрицы даже в выключенном состоянии.

Замена мультиконтроллера

По сложности данная процедура легче чем замена северного, южного моста либо видеочипа ноутбука. Однако не все мультиконтроллеры так просты. Для инициализации требуется микропрограмма, которая хранится либо в Flash памяти, либо в отдельной EEPROM микросхеме памяти, либо прошивается внутрь самого микроконтроллера. Как раз в последнем случае (что часто встречается в современных ноутбуках) требуется прошивка, специальный программатор.
Прошиваемые мультиконтроллеры — NPCE288N/388N, KB9010/9012/9016/9022, IT8585/8586/8587/8985/8987.

Диагностика мультиконтроллера

Самое главное с чего стоит начать после визуального осмотра — это присутствие напряжений питания и ток потребления. Изначально все включения должны производится с лабораторным блоком питания, у которого есть возможность регулировки ограничения тока.

Как прошить мультиконтроллер ноутбука

  • В теме действуют все Правила форума | Правила раздела «Технотрепалка»;
  • Полезные темы на заметку: FAQ по форуму | Экскурсовод «Технотрепалки» | Как убирать изображения под спойлер;
  • Основное правило раздела: 1.3 Технотрепалка — не место для флуда. У нас, всё-таки, технический уклон. Для этого есть раздел «Трепалка»;
  • Вместо слов «Спасибо!» используйте . Если у Вас меньше 15 постов — нажмите на кнопку под тем сообщением, где Вам помогли, и напишите благодарность;

RT-BGA63-01 V2.0 https://ru.aliexpress.…-9X11/32846669026.html

BGA24 к DIP8 https://ru.aliexpress.…4MM-5/32702719168.html

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, или к ТС в QMS. Как это сделать правильно, что бы вас поняли с первого раза, написано здесь .

Сообщение отредактировал Demonis — 09.02.22, 08:17

Прошивка MIO (мультиконтроллеров) ITE через шлейф клавиатурного разьема, online, т.е. не снимая с платы.

В данном примере опишу как подключится к ITE8587E на примере материнской платы Clevo W650SJ.
Для начала нужно соединить шлейфом плату ITE_Adapter v1.5 и клавиатурный разъем. Шлейф с шагом 0.8 идущий в комплекте с программатором на 32пин, а разъем клавиатуры 24 пин, решается вопрос простой подрезкой скальпелем. Если используете шлейф менее 32 пин (24,26пин), то устанавливаете ближе к первому контакту на адаптере. Совмещать первый пин адаптера с первым пином на клавиатурном разьеме не обязательно, в дальнейшем в ПО можно отзеркалить расположение контактов. Так же обязательно соединяем массу адаптера и материнской платы.

Не давно купил этот программатор . Он не читает spansion tsop56 S29GL128P10TFI010. Выдает ошибку проверка ид чипа . Как добавить в поддержку самому этого чипа . Даташит имеются

Далее стандартно выбираем в ПО нужную МС подаем питание на мульт (плату) и читаем/пишем. Автоопределение МС у меня не заработало, но я пробовал на kb9022q d, он вообще работает странно.

Сообщение отредактировал Demonis — 27.02.19, 09:23

Сообщение отредактировал vlad4110 — 24.04.19, 22:42

Ребята, этот программатор поддерживает мк SM89516 — контроллер моника?? В сети везде указана поддержка, а в самом ПО этой микросхемы не наблюдается.

Прогрммматоры TL866A, и TL866ii SM89516 не берут. В списке поддерживаемых имеется только SM89516A, но с вышеуказанной они вроде бы идентичны. На них чтение проходит успешно. Стирание — полоса одну треть проходит, потом подозрительно быстро проскаивает и также отображает что все успешно. Однако данные остаются на месте. И не проходит запись.

Def1985,
Тут идет речь о конкретном механизме доступа к памяти SPI флеш области, конкретного мультиконтроллера ENE. Например у Nuvoton, ITE, SMSC нет SPI линий. Посмотрел картинку вроде проброс линий к флешке BIOS есть, но никогда не сталкивался с возможностью прошивки BIOS через разьем клавиатуры на ENE MIO.

Как прошить мультиконтроллер ноутбука

Доброго времени суток всем.

Интересует сабж. Прошивкой мультиков никогда не занимался раньше. Сейчас потихоньку начинаю въезжать и собираю информацию воедино.
Поправьте и подскажите если не прав по пунктам:

1) Мультиконтроллеры можно шить практически любым программатором — главное знать к каким ногам паять выводы программатора
2) В зависимости от программатора — питание на материнскую плату можно подавать, а можно и не подавать
3) Можно не париться и шить мультики ENE через клавиатурный разъем имея соответствующий заточеный девайс (ссылки видел на соседнем форуме)
4) Прошивку мультиконтроллера можно достать распаковав BIOS материнской платы соответствующей платформы. Либо найти/скачать
5) Если можно достать из биоса то кто и как это делает? подскажите
6) Что означает выражение «поднять лапу мультиконтроллера»? 🙂 Еще иногда пишут «лапу вверх».

Вопрос по конкретному программатору triton и его владельцам(т.к. именно он есть в наличии)
7) Имея соответствующий переходник — можно шить ENE KB9012, подпаявшись к правильным выводам, означает ли это что имея этот же переходник можно шить и KB930QF A1?

Возможно, где то ересь написал, может забыл что то?
Можете пинать 🙂
Спасибо!

Да, действительно. Нашел флэш, выпаял, перепрошил.
Спасибо за советы

Источник

Встроенный контроллер одного ноутбука и его наследство

В этом материале я хочу немного рассказать о том, что происходит во встроенном контроллере (Embedded Controller, EC) моего ноутбука. Речь идёт о мультиконтроллере IT8586E, основанном на Intel 8051. Он встроен в ноутбук Lenovo Ideapad 310-15IKB. Но, прежде чем переходить к деталям, полагаю, нелишним будет поговорить о том, что это вообще такое — встроенные контроллеры.

Краткая история встроенных контроллеров на платформах x86

Сначала был создан компьютер IBM PC. Многих это возмутило, данный шаг компании IBM был широко признан неразумным.

В материнскую плату этого компьютера было встроено множество периферийных устройств, вроде Intel 8259 (программируемый контроллер прерываний) или Intel 8253 (программируемый таймер). Обращаться к этим контроллерам можно было, пользуясь инструкциями in/out ядра x86 (и, на самом деле, к контроллерам 8259 и 8253 всё ещё можно обращаться на современных x86-процессоров, но теперь они входят в состав кристалла CPU). Один из контроллеров IBM PC, Intel 8255 (программируемый контроллер интерфейса периферийных устройств), отвечал за взаимодействие с клавиатурой.

В компьютере IBM PC AT, который был выпущен в 1984 году, контроллер i8255 заменили на Intel 8042, который отвечал за взаимодействие с клавиатурой и назывался контроллером клавиатуры. В адресном пространстве ввода/вывода x86 у него было два адреса — 0x60 и 0x64 . Ядро, пользуясь этими портами, могло отправлять этому контроллеру команды и получать от него данные. У контроллера клавиатуры были неиспользуемые выводы, поэтому специалисты компании IBM решили, что блестящей мыслью будет использовать эти выводы для решения задач, не связанных с клавиатурой, вроде перезагрузки компьютера.

Где-то в конце 1980-х периферийные устройства всё чаще и чаще объединяли, включая в состав одной микросхемы несколько таких устройств. Например — это чипы северного моста и южного моста. Один из таких чипов, Super I/O-контроллер, отвечал за взаимодействие с низкоскоростными устройствами, вроде последовательных портов, параллельных портов и контроллеров дисководов гибких дисков. В состав этого чипа часто входил и контроллер клавиатуры.

Ноутбукам, кроме прочего, требовалась особая система управления питанием. Производители портативных компьютеров взглянули на контроллер клавиатуры, на то, что он способен перезагружать компьютер, и сказали: «На самом деле — это замечательно. Давайте сделаем то, что нам нужно, по похожей схеме». В результате к контроллеру клавиатуры были добавлены два порта с похожим интерфейсом, позволяющим отправлять на устройства команды и получать от них данные. И, фактически, во многих платформах эта возможность реализована в том же самом контроллере, который входит в состав Super I/O-чипа.

В середине 1990-х заметным явлением стал стандарт ACPI (Advanced Configuration and Power Interface, усовершенствованный интерфейс управления конфигурацией и питанием). Он определял стандартизированный интерфейс для EC. А именно, через его командный интерфейс можно было обращаться к 8-битному адресному пространству переменных, определяемых производителями оборудования. Эти переменные можно было описывать с помощью языка AML (ACPI Machine Language), средствами AML можно было описывать и код, позволяющий воздействовать на эти переменные.

В конце 2000-х годов микросхемы южного и северного мостов были объединены с CPU. Правда, надо отметить, что интеграция южного моста (PCH, Platform Controller Hub) в CPU, по всей видимости, имеет место лишь на мобильных платформах. Но в ноутбуках EC всё ещё представлен отдельным чипом, который, кроме того, реализует функционал Super I/O-контроллера и контроллера клавиатуры. Он, например, решает следующие задачи:

  • Управление вентиляторами.
  • Взаимодействие с подсистемой интеллектуальных аккумуляторов (Smart Battery).
  • Чтение данных, поступающих с клавиатуры, и чтение состояния кнопок управления питанием.
  • Взаимодействие с регуляторами напряжения.

Схема материнской платы моего ноутбука

Так как EC интенсивно взаимодействует с разными устройствами — неплохо было бы знать о том, что это за устройства. Мне в решении этой задачи повезло — кто-то выложил в интернет так называемые boardview-файлы к интересующей меня плате. В таких файлах содержатся схемы печатных плат, в частности, сведения о компонентах, расположенных на плате, и о том, как они связаны. Между компонентами материнских плат имеется так много соединений, что анализ схемы их связей может оказаться весьма сложной задачей. Я попытался представить связи между компонентами платы в упрощённой форме, результат моих трудов показан на следующей схеме (тут нет большинства линий, имеющих отношение к питанию).

Схема связей компонентов платы (оригинал)

CPU соединён с EC с использованием шины LPC (Low Pin Count), которая, по сути, представляет собой замену шины ISA, применявшейся в более старых компьютерах, в физической реализации которой используется меньше линий связи. Процессор и контроллер взаимодействуют, в основном, по LPC. Но между EC и CPU имеется множество соединений (показанных синими линиями без стрелок), используемых в особых целях. Например — это линия SCI, предназначенная для вызова прерывания от EC в CPU.

Тут, кроме того, имеется соединение, названное BEEP# , предназначенное для включения на ноутбуке звукового сигнала.

Прошивка EC

Раздобыть прошивку контроллера несложно. Я уже извлекал образ BIOS раньше, для других нужд. После его обработки с помощью утилиты cpu_rec в моём распоряжении оказалось примерно 160 Кб 8051-кода из самого начала образа, расположенного до кода, имеющего отношения к UEFI. Контроллер 8051 имеет 16-битное адресное пространство, а значит 160 Кб кода ему не соответствуют. Получается, что речь идёт о так называемой banked-прошивке. То есть — одни части («блоки» или «банки») прошивки в адресном пространстве подвергаются динамической замене на другие части путём воздействия на некие регистры.

Размеры блоков прошивки обычно, в большинстве контроллеров 8051, составляют либо 32, либо 64 Кб. Выяснить их размер при работе с конкретным контроллером можно, поискав повторяющиеся фрагменты кода. Дело в том, что в разных блоках прошивки обычно имеются одинаковые фрагменты, представляющие код общего назначения (быстро найти такие фрагменты можно попробовать, прибегнув к автокорреляции). Оказалось, что в моём случае речь идёт о блоках кода размером 32 Кб.

Обработка 32-килобайтных блоков с помощью утилиты at51_base позволила узнать о том, что первый блок загружается по адресу 0x0 , а второй, третий и четвёртый — по адресу 0x8000 . Получается, что первые 32 Кб адресного пространства не меняются, а его верхняя область ( 0x8000 ) динамически переключается между тремя имеющимися банками. Пятый банк кода не содержит. В нём имеются только некие данные.

После того, как я всё это выяснил, меня посетила блестящая идея, которая заключалась в том, чтобы посмотреть даташит исследуемого компонента. Даташит на мой контроллер найти не удалось, но мне попались документы на IT8502E, описывающие устройство достаточно близкое к тому, которое было у меня. В нём, что было очень кстати, подробно описывалось большинство I/O-механизмов и, похоже, описание функционирования прошивки, в основном, соответствовало той прошивке, что была у меня.

При просмотре даташита я наткнулся на упоминание отладочного интерфейса I2C, но он, правда, не был документирован. После некоторых изысканий я нашёл проект ECSpy, который представляет собой Rust-реализацию отладчика для EC, созданную силами компании System76, которая работает над собственной прошивкой для EC.

Отладчик даёт доступ на чтение и запись к оперативной памяти и регистрам ввода/вывода EC. Доступ к регистрам отличается дополнительным ограничением, которое заключается в том, что операция записи чётко определена лишь для триггерных регистров (в результате, например, операция, вызывающая изменение состояния конечного автомата, не сработает).

Ещё в даташите сказано, что возможность отладки нужно включать с помощью регистра, но она и так включена. Доступ к ней осуществляется посредством I/O-портов x86 через Super I/O-чип, поэтому ей можно пользоваться из пользовательского пространства, без необходимости писать драйвер.

Для реверс-инжиниринга тех частей прошивки, которые отвечают за взаимодействие с различными устройствами, могут пригодиться спецификации этих устройств. Я, работая над этим проектом, прочитал часть спецификаций ACPI, SMBus и Smart Battery. В процессе исследования кода прошивки используются следующие ресурсы и инструменты: boardview-файлы, даташиты, спецификации компонентов, отладчик Ghidra, обычный браузер, применяемый для поиска дополнительных сведений вроде скан-кодов, исходный код Linux-драйвера для EC, дизассемблированный машинный ACPI-код, отладчик для EC и его исходный код. В таких делах весьма кстати могут оказаться несколько мониторов, использование которых позволяет ускорить сопоставление информации, полученной из разных источников.

В прошивке имеется единственная главная функция, в которой и решается большая часть задач. Обычно прерывания устанавливают какие-то биты, связанные с событиями, а потом эти события обрабатываются за пределами контекста прерываний в главном цикле. В векторе прерываний контроллера имеются описания некоторого количества различных прерываний, но большинство прерываний идут по линии так называемого INTC-прерывания, по адресу 0x13 , после чего осуществляется просмотр большой таблицы переходов, содержащей адреса конкретных обработчиков прерываний.

Большой объём работы выполняется в коде главного цикла, ответственном за обработку событий таймера. Таймер в EC запрограммирован так, что он выдаёт прерывание раз в одну миллисекунду. Потом, на основе прерываний таймера, формируются события, которые происходят, например, каждые 10, 50, 100 мс. Обновление ACPI-переменных выполняется, в основном, в этом контексте.

POST-карты в современных ноутбуках

BIOS, когда производится загрузка x86-системы, регулярно пишет данные в порт ввода/вывода 0x80 . Эти данные сообщают о том, на каком этапе находится загрузка, а так же о происходящих в ходе этого процесса ошибках. Раньше соответствующие сведения отправлялись на шину ISA, куда можно было подключить POST-плату, выводящую текущее значение в шестнадцатеричном формате. Это позволяло диагностировать проблемы, происходящие в ходе загрузки систем. В современных ноутбуках шина LPC представляет собой замену шины ISA, а данные о процессе загрузки до сих пор обычно отправляют на шину LPC.

В прошивке EC, на самом деле, имеется код, ответственный за запись данных в порт 0x80 . В этом коде можно обнаружить команды, с помощью которых данные разделяют на полубайты, используемые потом в роли смещений в следующей таблице:

Затем, вместе с тактовыми импульсами, осуществляется последовательный вывод результирующего значения на GPIO-пины.

Вышеприведённая поисковая таблица может показаться вам знакомой. Дело в том, что она позволяет преобразовывать полубайты в шестнадцатеричные числа для их вывода на 7-сегментном дисплее. Если взглянуть на схему материнской платы, там можно увидеть две линии — EC_TX и EC_RX (эти названия, вероятно, не очень удачны, так как одна из них — это линия данных, а другая — тактовая линия, обе они используются лишь для отправки данных). Они ведут к Wi-Fi-чипу, который подключён к плате через разъём M.2. Но эти линии, на самом деле, ни к чему на Wi-Fi-карте не присоединены.

Это наводит на мысль о том, что существуют некие POST-платы, которые можно подключать к разъёму M.2 для решения проблем, возникающих в ходе загрузки ноутбуков. Так как я знаком с протоколом обмена данными, используемым в M.2-картах, я попытался сделать собственный вариант такой платы (она, в целом, представляет собой два последовательно соединённых сдвиговых регистра, подключённых к 7-сегментным дисплеям). Посмотрите — какая симпатичная у меня получилась штука.

Самодельная POST-плата для разъёма M.2

Но я, к сожалению, видимо что-то напутал, так как эта плата, в итоге, так и не заработала, а мне не очень-то хотелось тратить время на поиск и исправление ошибок, допущенных при её создании.

Клавиатурные механизмы

Ноутбук получает сведения о нажатых клавишах клавиатуры через i8042-порты EC ( 0x60 и 0x64 ). У контроллера имеется прямой доступ к матрице контактов клавиатуры, а значит, ему нужно преобразовывать необработанные данные, поступающие с клавиатуры, в скан-коды PS/2. Ему ещё нужно наблюдать за состоянием клавиши Fn , которая позволяет определять альтернативный функционал для некоторых клавиш, и сведения о нажатии которой не отправляются процессору.

Можно подумать, что вышеописанная задача решается очень легко, что заключается она в просмотре некоей поисковой таблицы и в отправке хосту результатов. Но, увы, скан-коды PS/2 — это настоящий бардак.

Существует три различных набора скан-кодов, между которыми нет ничего общего. EC использует набор №2. Одиночное нажатие и отпускание клавиши не всегда приводит к генерированию одного байта скан-кода.

  • Нажатие на клавишу x приводит к выдаче скан-кода 22 , а её отпускание генерирует скан-код F0 22 .
  • Нажатие клавиши Delete генерирует скан-код E0 71 , а её отпускание — код E0 F0 71 .

Поведение большинства клавиш, как правило, соответствует вышеприведённой схеме, когда при отпускании клавиши генерируется тот же код, что при её нажатии, но с префиксом F0 . А E0 — это префикс для расширенного набора скан-кодов (обратите внимание на то, что при отпускании клавиши Delete код F0 идёт после кода E0 ). Но тут есть некоторые исключения. Например:

  • Нажатие кнопки Pause (на моём ноутбуке это — сочетание клавиш Fn + b ) приводит к выдаче последовательности кодов E1 14 77 E1 F0 14 F0 77 . А при её отпускании не генерируется вообще ничего.
  • Но комбинация клавиш Ctrl + Pause выдаёт совершенно другую последовательность кодов, в частности — E0 7E E0 F0 7E . При отпускании этих клавиш снова ничего не выдаётся.
  • Существуют клавиши, направленные на управление мультимедийными возможностями, вроде Mute Microphone . Своих PS/2-скан-кодов у них нет. Их нажатие приводит к тому, что EC генерирует SCI-прерывание. Затем соответствующий AML-код, связанный с таблицами ACPI, отправляет уведомление операционной системе. После этого ОС считывает значение переменных ACPI EC и генерирует соответствующее событие.

Позиции клавиш на клавиатуре представлены 7-битным целым числом, которое используется в поисковой таблице в роли индекса при преобразовании этого числа в промежуточное байтовое значение. Эта первая поисковая таблица может быть изменена с помощью команд i8042 для переключения на другую раскладку клавиатуры.

Если промежуточное значение меньше 0x80, это значит, что оно просто соответствует обычному однобайтовому PS/2 скан-коду. А если говорить о других значениях, то они, по уже рассмотренной нами схеме, используются в роли индексов в поисковой таблице. Результирующее значение определяет функцию, которая используется для обработки скан-кода. Полученные скан-коды затем помещают в 16-байтовый кольцевой буфер, байты, содержащиеся в котором, если это возможно, потом отправляют хосту.

Тут решаются и другие задачи, вроде борьбы с фантомными нажатиями клавиш (anti-ghosting), устранения ложных повторных нажатий клавиш (debouncing) и поддержки клавиши Fn , о которой я уже вкратце рассказал.

Интересно то, что контроллер иногда помещает в буфер некоторые скан-коды, делая это в коде, не имеющем отношение к клавиатурным механизмам. Например, речь идёт о сочетании клавиш Win + Q , или о прерывании обработки нажатия на клавишу. Я, правда, более глубоко в этом не разбирался.

Таинственный фрагмент кода

В ходе общего обзора файла с прошивкой можно заметить, что 4-й блок ( 0x18000-0x20000 ) содержит не особенно много кода. Странно то, что этот код расположен где-то посередине 0xffs с переходом на область 0x1e000-0x1e596 . Сначала я подумал, что это — код, имеющий какое-то отношение к программам начальной загрузки или прошивки устройства, но после того, как я посмотрел на код, оказалось, что эта мысль неверна.

А именно, при более близком рассмотрении этого кода можно заметить в нём константы, вроде 0x67452301 , 0xEFCDAB89 или 0xCA62C1D6 . Они используются в алгоритме SHA-1.

Зачем встроенному контроллеру SHA-1? Если посмотреть на то, что именно вызывает SHA1-код, то окажется, что он используется при взаимодействии с батареей по SMBus:

  • EC случайным образом генерирует последовательность из 20 байтов для одноразового использования (nonce) и отправляет её в регистр батареи 0x27 .
  • EC вычисляет значение sha1($secret . sha1($secret . nonce)) , где $secret — это 16-байтовый секретный ключ, который хранится в прошивке.
  • EC читает 20 байтов из регистра батареи 0x28 и проверяет, чтобы они совпадали с тем значением, которое было вычислено на предыдущем шаге.

В результате возникает такое ощущение, что батареи, перед их использованием, проходят аутентификацию для предотвращения применения подделок или для каких-то подобных нужд.

Где хранится код?

Прошивка, в соответствии с даташитом, способна обращаться к содержимому флеш-памяти, применяя линейную адресацию, пользуясь 28-битным регистром адреса и 8-битным регистром данных. В коде прошивки можно обнаружить множество операций записи и чтения, направленных на адреса 0x0fff_fe00 и 0x0fff_fd00 . Но размер флеш-памяти далёк от 256 Мб, в результате такие операции, очевидно, не работают с подобными адресами флеш-памяти.

При более близком рассмотрении кода выяснилось, что там, в основном, осуществляется запись 0xff в 0x0fff_fe00 , а после этого выполняются операции чтения/записи множества байтов — вроде 0x05 , 0x02 или 0xd7 . Оказывается, что это SPI-команды для работы с флеш-памятью, а то, что мы видели — это механизм, с помощью которого код прошивки осуществляет запись и стирание данных. Но если взглянуть на образ, хранящийся в BIOS, оказывается, что он ничем не отличается от оригинала. Может, изменения хранятся лишь в кеш-памяти (которая есть у EC)? А, может быть, соответствующие участки кода попросту никогда не выполняются?

Во многих прошивках для 8051 обычно имеется код, реализующий возможности отладки, и мой — не исключение. Перед функциями, имеющими отношение к контроллеру клавиатуры и к EC, имеется множество функций, которые явно реализуют отладочные возможности. Одна из них — это команда контроллера клавиатуры, предназначенная для чтения из EC данных с адресов флеш-памяти с применением регистра.

Если сделать оттуда дамп прошивки, то получится образ, который отличается от оригинала. Изначально я предполагал, что EC использует образ из флеш-памяти BIOS, так как он хранится в этой памяти, и EC к этой памяти подключён. Но оказалось, что это, на самом деле, не так. К этой памяти напрямую подключены и CPU, и EC. В результате, в том случае, если и тот и другой одновременно попытаются прочесть из неё данные, на шине неизбежно возникнет конфликт. Прошивка, на самом деле, хранится в самом EC. В IT8502 этой возможности не было (это запутало меня ещё сильнее, так как я пользовался даташитом именно для такого контроллера).

Запуск моего собственного кода в EC

Вероятно, стоит сказать о том, что у 8051 имеется некоторое количество различных адресных пространств:

  • IRAM: 256 байтов внутренней оперативной памяти (быстрой).
  • SFR: 128 байтов адресного пространства ввода/вывода в верхней половине IRAM (при непрямой адресации памяти производится возврат к IRAM).
  • XDATA: 16-битная адресуемая внешняя RAM (она медленная, и на данном EC, кроме того, содержит адреса подсистемы ввода/вывода).
  • CODE: 16-битное адресуемое пространство кода.

Тут обращает на себя внимание факт отсутствия инструкций для записи в адресное пространство CODE. Но, если опираться на то, о чём мы говорили в предыдущем разделе, внести изменение в это адресное пространство можно, воспользовавшись возможностью записи данных во флеш-память.

Я этого делать не собирался, так как подобные действия несут в себе риск «окирпичивания» устройства. EC можно перепрограммировать, используя входы/выходы клавиатурной матрицы в роли параллельного порта, но я не собирался заниматься и этим.

Ещё одна проблема, связанная с записью данных во флеш-память, заключается в том, что её содержимое проверяется с использованием контрольной суммы. В прошивке имеется сигнатура, которая указывает на то, где начинается контрольная сумма, и в ней имеются два байта, которые различаются в разных редакциях прошивки. Подобное характерно для контрольных сумм. Если дело обстоит именно так — то неясно, где именно начинается и заканчивается контрольная сумма, и то, как именно она вычисляется.

Применив delsum part (инструмент, который я создал ранее, рассчитанный именно на решение подобных задач), можно найти множество кандидатов на роль контрольной суммы: это — CRC с полиномом 0x8005 , а контрольная сумма заканчивается по адресу 0x1ffff . Но начало контрольной суммы с уверенностью определить нельзя, так как во всех редакциях прошивки, которые я смог найти, соответствующие данные выглядели, до адреса 0x4000 , одинаково. Это значит, что для каждого начального смещения, соответствующего адресу до 0x4000 , имеется набор параметров, применение которого приводит к получению правильных контрольных сумм. При этом можно изменять байты в области памяти, для которой вычисляется контрольная сумма, поступая так при условии, что есть полная уверенность в том, что это делается в правильном месте, так как для вычисления контрольной суммы важна лишь конечная часть этой области памяти.

Правда, для выполнения собственного кода нет нужды выполнять запись данных во флеш-память. В EC для этого имеется другой механизм. А именно — адреса 0x0000-0x1000 в адресном пространстве XDATA — это обычная оперативная память, которую можно отобразить на произвольную область адресного пространства CODE, изменив содержимое кое-каких регистров.

Схема из даташита, на которой показано 5 областей, пронумерованных от 0 до 4, которые могут быть отображены на адресное пространство кода. А именно, речь идёт об областях 0x0000-0x0800, 0x0800-0x0c00, 0x0c00-0x0e00, 0x0e00-0x0f00 и 0x0f00-0x1000

В результате для выполнения собственного кода достаточно лишь выполнить отображение одного из этих фрагментов на память с кодом. Оперативная память в диапазоне 0x0000-0x0e00 используется самой прошивкой, в результате остаются блоки 3 и 4, размер каждого из которых составляет 256 байт.

Правда, чтобы осуществить отображение этой памяти на память с кодом, нужно выполнить запись в регистры и в оперативную память из пространства XDATA. Есть одна отладочная функция, позволяющая писать данные в XDATA, но она содержит ошибки и может писать данные только по адресам, где байт из верхней части адреса является таким же, как и байт из его нижней части. Тут имеется ещё и интерфейс I2C, который достаточно хорошо подходит для решения задачи записи данных в SRAM.

Я сомневался по поводу записи данных в порты ввода/вывода, так как было сказано, что это подходит лишь для триггерных регистров. Но в регистрах, используемых для отображения памяти, имеется ещё и бит для запуска DMA-транзакции (так как этот чип, конечно, поддерживает DMA). В любом случае, не было способа проверить то, что отображение памяти осуществляется именно так, как мне нужно, так как нет отладочной функции, позволяющей читать данные из адресного пространства CODE.

К счастью, был и другой путь: функционал отображения памяти используется для перезаписи флеш-памяти (так как никто не заинтересован в том, чтобы работа программы завершилась бы с ошибкой, когда будет достигнута область с кодом, выполняющим запись данных). Используя I2C можно отредактировать содержимое SRAM в адресном пространстве XDATA, поместив туда отладочный код, и подстроить механизм записи данных во флеш-память так, чтобы он обращался бы к этому отладочному коду.

При таком подходе я смог ещё и проверить, работает ли механизм отображения памяти так, как нужно. Как оказалось, работал он неправильно. Получилось, что, например, отображение адресов 0x0e00-0x0f00 из пространства XDATA на область, начинающуюся с адреса 0x7722 , приводит к отображению адреса 0x7722 на 0x0e22 (а не на 0x0e00 ), адреса 0x7723 на 0x023 , адреса 0x7800 на 0x0e00 , и адреса 0x7821 на 0x0e21 . Это, возможно, результат ошибки в самом чипе.

В любом случае, эту проблему легко обойти, так как между адресами, всё равно, имеется взаимно однозначное соответствие, а значит — код можно просто записать в те места пространства XDATA, которые будут соответствовать нужным местам памяти. Оказалось, что I2C-запись в регистры, отвечающие за отображение памяти, тоже работает. В результате для выполнения отладочного кода с его последующей записью мне не нужно было бы прибегать к режиму перезаписи флеш-памяти.

Итоги

Я приступил к разработке программы, которая берёт ihex-файл и настраивает страницы 0xe00 и 0xf00 , в результате чего я могу просто указать местоположение патча, пользуясь ассемблерной инструкцией ORG , а программа сама заполнит непропатченные области кодом прошивки из образа и правильно запишет код в SRAM. Это упрощает жизнь программиста и, пожалуй, ускоряет процесс разработки кода для EC.

На сегодня это всё, а в следующий раз я расскажу об исследовании прошивки ноутбучного Wi-Fi-модуля (RTL8821AE) и о разработке небольшого кейлоггера, основанного исключительно на возможностях Intel 8051.

Занимались ли вы разработкой прошивок для контроллеров, основанных на Intel 8051?

Источник

В этой статье пойдет речь о микросхеме, которая управляет работой всего ноутбука, в том числе, его включением. Её неисправности приводят к значительным последствиям для пользователя и чаще всего требуют ремонта материнской платы в сервисе.

Задачи мультиконтроллера

Мультиконтроллером, или, по-английски Super I/O (SIO) или Multi I/O (MIO), на сленге «мультик» (еще в документации встречается EC-контроллер), называется микросхема, обеспечивающая мониторинг напряжений и температур, работу с периферийными устройствами. Такими устройствами могут быть клавиатура, мышь, кнопка включения, датчик закрытия крышки и тп. Основным его предназначением является управление клавиатурой (даже в схемах он обозначается как KBC-контроллер), однако со временем производители начали нагружать его множеством дополнительных функций, таких, например, как индикация работы жесткого диска (светодиод на передней панели ноутбука) или управление частотой работы кулера. Именно на эту микросхему «приходят» все контактные дорожки шлейфа клавиатуры ноутбука. На самом деле на ножки мультиконтроллера приходят сигналы практически со всех устройств и микросхем ноутбука. Уровень сигнала может быть постоянный 3.3V (высокий логический уровень), либо изменяющийся в случае обмена данными (измеряется осциллографом).

В запуске ноутбука он вообще играет первостепенную роль, так как именно на него приходит сигнал с кнопки включения, и именно он запускает все источники напряжений и затем отдает сигнал южному мосту для начала инициализации.  

Мультиконтроллер управляет включением ШИМ-контроллеров, вырабатывающих необходимые для работы узлов ноутбука напряжения, ключами, коммутирующими эти напряжения. Через мультиконтроллер по протоколу Firmware HUB или SPI подключена микросхема Flash c программным обеспечением (которую иногда приходятся прошивать). В состав мультиконтроллера могут входить контроллеры часов реального времени, жестких дисков, USB, интегрированный аудиоинтерфейс, интерфейс LPC.

Разновидности мультиконтроллеров

Мультиконтроллеры выпускают следующие фирмы: ENE; Winbond; Nuvoton; SMCS; ITE; Ricoh.

Сильно отличаются только последние, хотя бы методом пайки, они BGA.

На современных мультиконтроллерах имеется по 128 ножек, но их назначение сильно отличатся в зависимости от модели мультиконтроллера и даже от его ревизии. К примеру, KB926QF-D2 и KB926QF-C0. — два совершенно разных мультиконтроллера.

Неисправности мультиконтроллеров и их симптомы

Мультиконтроллер часто выходит из строя при залитии ноутбука жидкостью или вследствие выгорания ключей, формирующих 3.3В. Второе случается при скачках питания в сети.

К основным симптомам неисправности мультиконтроллера можно отнести некорректную работу клавиатуры и тачпада и отсутствие запуска как такого. Также, следствием неправильной работы «мультика» являются и глюки периферии — неправильная работа датчиков, кулера. Также по вине SIO может не определяться жесткий диск и другие накопители (работа USB при этом завязана на южный мост).

В диагностике и ремонте ноутбуков мультиконтроллер имеет ключевое значение, поскольку отсутствие на мультиконтроллере важных сигналов, приходящих с микросхем ноутбука, позволяет выявить неисправные микросхемы и произвести их замену. На мультиконтроллер приходит LPC шина, по который идет обмен с южным мостом, и с которой можно считать всем известные POST-коды. Для этого, кстати, в ремонте часто подпаиваются на прямую к ножкам мультиконтроллера тоненькими проводками и выводят коды на индикаторы. 

Также иногда во время самостоятельной замены матрицы ноутбука забывают отключить аккумулятор. Это тоже может привести к выгоранию мультиконтроллера. Но, к счастью, микросхемы эти не очень дорогие и ремонт такой неисправности обходится дешевле, чем, например, замена южного моста или видео. Многие микросхемы взаимозаменяемы, а перепайка их — 15 минут (если не потребуется прошивать флэш память).

Диагностика запуска (или отсутствия старта) ноутбука

Для правильной диагностики старта ноутбука необходимо понимать его последовательность и участие в нем мультиконтроллера.

Последовательность включения ноутбука

При включении ноутбука дежурное напряжение через кнопку подается на мультиконтроллер, который запускает все ШИМ-контроллеры, вырабатывающие все напряжения (их много), и, при нормальном исходе, вырабатывают сигнал PowerGood. По этому сигналу снимается сигнал RESET с процессора и он начинает выполнять программный код, записанный в BIOS с адресом FFFF 0000.

Затем BIOS запускает POST (Power-On Self Test), который выполняет обнаружение и самотестирование системы. Во время самотестирования обнаруживается и инициализируется видеочип, включается подсветка, определяется тип процессора. Из данных BIOS определяется его тактовая частота, множитель, настройки. Затем определяется тип памяти, ее объем, проводится ее тестирование. После этого происходит обнаружение, инициализация и проверка подключенных накопителей – привода, жесткого диска, карт-ридера, флоппи дисковода и др., а после проверка и тестирование дополнительных устройств.

После завершения POST управление передается загрузчику операционной системы на жестком диске, который и загружает ее ядро.

Из описания выше видно, что мультиконтроллер вступает в работу на самой ранней стадии, и без его нормального запуска не сформируются управляющие напряжения. Вот условия, необходимые для того, чтобы мультиконтроллер дал команду на старт:

  1.  Основной BIOS и EC-BIOS должны быть рабочие.
  2. Мультиконтроллер запитан, работает его кварц и мульт вычитывает содержимое BIOS
  3. ACIN = 3.3 V
  4. LID_SW# = 3.3V (крышка ноутбука открыта)
  5. EC_RST# = 3.3V (мульт снимает RESET с южного моста)
  6. Южный мост снимает сигналы PM_SLP_S3# и SLP_S5#, то есть, на них устанавливается 3.3V
  7. При нажатии кнопки включения сигнал ON/OFFBTN# падает до нуля и этот же сигнал транслируется в PBTN_OUT#

Для инициализации мультиконтроллера необходима микропрограмма, которая хранится либо в той же микросхеме флеш-памяти, что и прошивка BIOS (UEFI), либо в отдельной микросхеме меньшего объема, либо внутри самого мультиконтроллера. В первых двух случаях восстановить прошивку не представляется сложным. А вот прошить непосредственно мультиконтроллер пока могут не любые программаторы. Да и подключиться к нужным его выводам не всегда просто. Прошиваемые мультиконтроллеры — NPCE288N/388N, KB9010/9012/9016/9022, IT8585/8586/8587/8985/8987.

Лучше всего найти документацию и описание сигналов по мультикам IT, которые используются во многих бюджетных ноутбуках, в том числе ASUS и Dell. Благодаря схемам можно понять и отследить, где находятся выше указанные сигналы. Например, в случае IT8752 и аналогичных (используется, например, в семействе ASUS K40 и K50) для диагностики вас должны интересовать, помимо выше указанных, следующие сигналы на мультике:

  • ALL_SYSTEM_PWRGD (68 мульт)
  • SUS_PWRGD (67 мульт)
  • VRM_PWRGD (1 ISL6262)
    Входящие сигналы указывают на выработку сигнала PowerGood и наличие питания Suspend режима и питания на VRM регуляторе ISL6262. Это значит, мост и процессор запитаны.
  • Сигналы  H_CPURST#_XDP и H_PWRGD_XDP разрешают работу процессора.
  • PWR_SW# — сигнал с кнопки включения
  • CPU_VRON — включения питания на CPU
  • PM_RSMRST# — снимает RESET с моста
  • PM_SUSB# — хаб PCH должен выдать сигналы PM_SUSC# и PM_SUSB# идущие на мульт, а мульт в ответ выдать сигналы SUSC_EC# и SUSB_EC#
  • PM_PWROK — сигнал на хаб, что питание в норме
  • PM_CLKRUN# — сигнал на запуск тактирования
  • PM_PWRBTN# — сигнал на включение южного моста
  • VSUS_ON — сигнал включения дежурного питания на силовых ключах
  • EC_CLK_EN (CLK_EN#) — разрешение тактирования на южный мост

Питание на IT85xx мульты поступает следующее: +3VA_EC, +3VPLL, +3VACC, без них микросхема не запустится.

Последовательность диагностики мультиконтроллера

Рассмотрим схему последовательности включения ноутбука:

Процедура включения материнской платы

Процедура включения материнской платы

Для диагностики в целом, вам нужно рассмотреть две ситуации:

1. Питание не появляется, светодиод питания не горит.

ite-microcontrollerИщем неисправность в схеме управления питанием. Проверяем 19 V со входа , приходящие на микросхему зарядки (charger), например, MAX. Проверяем наличие дежурных напряжений +3VSUS и т.п. Через форфмирователи +3 V питание поступает на мультик — проверяем это питание на входе. Проверяем выходные сигналы мультика. В некоторых случаях слетает прошивка микроконтроллера. В этом случае, при наличии входных напряжений, нужные управляющие сигналы с микросхемы контроллера не формируются при нажатии кнопки питания.

2. Питание есть, светодиод питания горит, но ноутбук не включается, экран темный. Индикатор жесткого диска сначала включается и гаснет, затем не горит.

Очевидно, мультик работает, управляющие сигналы формируются, однако, дальнейший запуска не происходит или он обрывается. Чаще всего виноваты в этом микросхемы чипсета, сам процессор или тактирующие генераторы, которые срывают генерацию сигналов. Для быстрой диагностики прогреваем микросхемы чипсета по-очереди. После каждого прогрева пробуем на включение. Если ноутбук включается, то виноват конкретный чип. Очень важна предыстория поломки — например, если до поломки перестали работать USB порты, то скорее всего вышел из строя южный мост. Если были артефакты на встроенном видео, то виноват северный мост.

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

Вот обобщенный порядок следования сигналов при запуске EC:

<- входящий сигнал
-> исходящий сигнал

<- LDO питание +3VA_EC
<- сигнал с чарджера AC_IN>2в или ACIN_OC#=0в
<- сигнал с ДХ LID_SW#=3в
<- снятие ресета EC_RST#=3в
<-> вычитка прошивки SPI ROM
-> сигнал включения силовых дежурок VSUS_ON=3в
<- сигнал с ШИМ дежурки SUS_PWR_GD=3в
-> снятие ресета с юга PM_RSMRST#=3в (юг узнает, что первичные источники питания ок)
<- сигнал с кнопки PWR_SW# 3в просаживается до 0в
-> сигнал PM_PWRBTN#=0в транслируется в юг
<- PM_SUSB# (SLP_S3), PM_SUSC# (SLP_S5) = 3в с юга, разрешение на включение вторичных источников
-> SUSB_EC#, SUSC_EC# = 3в включение вторичных источников и открытие коммут. мосфетов
<- ALL_SYSTEM_PWRGD=3.3в вторичные источники питания ок
-> CPU_VRON=3в поднятие питания CPU_VCORE процессора
<- VRM_PWRGD=3в с ШИМ проца
-> EC_CLK_EN (CLK_EN#) на юг или на тактовый генератор приходит с мульта или ШИМ проца
-> VRM_PWRGD_CLKEN приходит на юг
-> CLK_PWRGD с юга приходит на тактовый генератор
-> сигнал PWROK на юг
-> юг отдает процу сигнал H_PWRGD (HardWare PWRGD, все питания в порядке, следующий этап инициализации)
-> юг снимает ресет с севера PLT_RST#
-> юг снимает ресет с PCI шины PCI_RST#
-> север снимает ресет с процессора HCPU_RST#

Вот алгоритм проверки популярного мульта KB3926, его можно применить и к аналогам:

  1. Проверить питание мульта 3,3v (9 нога)
  2. Проверить генерацию кварца (123 нога)
  3. Проверить сигнал с кн.вкл. ON/OFF 3,3v/0,5v (32 нога)
  4. Проверить АCCOF 0V (27 нога)
  5. Проверить ACIN 3.1V (127 нога)
  6. Проверить PBTN_OUT 0v/3,3v (117 нога)
  7. Проверить сигнал 0v/3,3v (14 нога)
  8. Проверить RSMRST 0v/3,3v (100 нога)
  9. Проверить PWROK 0v/3,3v (104 нога)
  10. Проверить SYSON 0v/3,3v (95 нога)
  11. Проверить VRON 0v/3,3v (121 нога)
  12. Проверить обмен мульта с югом 3,3v (77,78 нога)
  13. Проверить обмен мульта с югом 0v/3,3v (79,80 нога)
  14. Проверить генерацию PCICLK (12 нога)
  15. Проверить сигнал 0v/3,3v (1,2,3 нога)
  16. Проверить TP_CLK 0v/0,1v (87 нога)
  17. Проверить TP_DATA 0v/5v (88 нога)
  18. Проверить SUSP 0v/3,3v (116 нога)
  19. Проверить VGA_ON 0v/3,3v (108 нога)

Вот дополнительные контрольные значения напряжения:

DPWROK_R — 3,3V
PM_RSMRST#PCH — 3,3V
PM_RSMRST#- 3,3V
SUS_PWRGD — 3,3V
5VSUS_PWRGD — 3,3V
ME_SUSPWRDNACK_R — 3.3V

Как видно из алгоритма, в самом начале EC контроллер должен вычитать прошивку из Flash памяти через SPI интерфейс. Если этого не происходит, то дальше никаких сигналов питания ШИМов не формируется. Часто, в случае серии IT85xx  и аналогичных это отдельня 8-контактная микросхема (напримерб SST25VF080B) с питанием по линии +3VA_SPI. Обмен данными происходит по линия SO и SI, тактирование по линии SCK. Поэтому, когда это возможно, флэшку перешивают. В некоторых сервисах имеется специальный программатор от Сергея Вертьянова, который позволяет прошивать почти любые флэшки:

Программатор от Сергея Вертьянова

Программатор от Сергея Вертьянова

Для справки: схема плат Asus K40AA K50AA и схема нетбуков ASUS 1015P.

Мультиконтроллер в ноутбуке что это

Как на материнской плате ноутбука выглядит мультиконтроллер и для чего он нужен?

Что из себя представляет мультиконтроллер ноутбука?

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

В данной статье мы подробно разберем понятие мультиконтроллера на материнской плате ноутбука, его предназначение и причины выхода из строя.

Как выглядит?

Мультиконтроллер на плате ноутбука представлен в виде небольшой квадратной микросхемы, на каждой стороне которой можно наблюдать расположенные подряд контактные ножки.

Что такое Мультиконтроллер в ноутбуке

Вид мультиконтроллера на плате ноутбука

Функциональное назначение

Основной задачей первых мультиконтроллеров был контроль и управление сигналами с клавиатуры. Несмотря на то, что на схемах до сих пор он обозначается как KBC (расшифровывается keyboard controller), перечень его обязанностей давно значительно расширился.

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

В зависимости от модели и производителя мультиконтроллера его некоторые остальные функции могут различаться. Среди них могут быть:

  • Мониторинг температур и напряжений, а также управление оборотами кулера;
  • Управление световыми индикаторами на корпусе ноутбука;
  • Обмен данными с южным мостом.

Симптомы неисправности

  1. Ноутбук не реагирует на кнопку включения.
  2. Черный экран при включении;
  3. Изображение на экране периодически пропадает.

Стоит учесть, что данные симптомы не гарантируют 100% – ой поломки мультиконтроллера, а лишь включают его в список потенциальных подозреваемых компонентов ноутбука.

Причины выхода из строя

Среди самых распространенных можно отметить:

  • Попадание жидкости на ноутбук или внутрь его;
  • Снятие шлейфа матрицы при неотключенной батарее;
  • Сильный перегрев;
  • Замыкание цепей питания или разъемов USB.

Лучшая благодарность автору – репост к себе на страничку:

Содержание

  1. Работа цепей питания la6552p. первоначальный запуск и появление напряжений
  2. Что такое мультиконтроллер – что он делает и как связан с индикатором
  3. Диагностика запуска (или отсутствия старта) ноутбука
  4. Диагностика и неисправности мультиконтроллера в ноутбуке
  5. Диагностика и ремонт цепей питания ноутбуков acer
  6. Другие варианты неисправностей
  7. Задачи мультиконтроллера
  8. Запуск шим rt8205, дежурные напряжения 3 и 5
  9. Короткое замыкание
  10. Неисправности мультиконтроллеров и их симптомы
  11. Неисправность кнопки включения
  12. Последовательность включения ноутбука
  13. Последовательность диагностики мультиконтроллера
  14. Работа чарджера isl6251 и заряд аккумулятора
  15. Разновидности мультиконтроллеров

Работа цепей питания la6552p. первоначальный запуск и появление напряжений

Для работы ноутбука необходимо, чтобы открылись входные полевые транзисторы PQ14 PQ15. Их открывает транзистор PQ68B. Его же открывает высокий уровень сигнала PACIN. На транзисторах PQ68A, PQ21, PQ19 собрана блокировка — низкий  уровень на затворе PQ68A приводит к надежному закрытию PQ14, PQ15. Также это может произойти, если мультиконтроллер подымет сигнал ACOFF.

Теперь посмотрим, откуда берется PACIN. По схеме мы видим, что из 6251VDD через резистор PR286. В добавок к этому, PQ67 должен быть закрыт, для чего чарджер должен продетектировать наличие внешнего питания (вывод ACSET) и опустить сигнал ACPRN.

Что такое мультиконтроллер – что он делает и как связан с индикатором

Мультиконтроллер представляет собой специальный чип, часто оснащенный собственной прошивкой и памятью, который управляет всеми процессами, связанными с питанием устройства. Ведь каждому компоненту ноутбука необходимо специфическое питание, которое может отличаться по мощности от основного.

Все индикаторы, в том числе индикатор питания, могут быть связаны с мультиконтроллером напрямую или через дополнительные схемы. Все описанное выше дает понять, что, если какой-либо из элементов питания, а тем более все, работает, проблема скорее всего заключена в самом управляющем чипе. Установить этот факт бывает крайне затруднительно, не говоря о том, чтобы устранить.

Мультиконтроллер – это очень сложный компонент, обслуживание и ремонт которого требует обращения к квалифицированным специалистам.

Диагностика запуска (или отсутствия старта) ноутбука

Для правильной диагностики старта ноутбука необходимо понимать его последовательность и участие в нем мультиконтроллера.

Диагностика и неисправности мультиконтроллера в ноутбуке

В этой статье пойдет речь о микросхеме, которая управляет работой всего ноутбука, в том числе, его включением. Её неисправности приводят к значительным последствиям для пользователя и чаще всего требуют ремонта материнской платы в сервисе.

Диагностика и ремонт цепей питания ноутбуков acer

Ремонт материнских плат на платформе Compal, с неисправностью «не заряжает» АКБ или «не включается», особенно после залития жидкостью, зачастую вызывает у мастеров трудности. Рассмотрим типовую схему питания и заряда, применяемую в ноутбуках Acer, на примере платформы LA-6552p.

Будем рассматривать параллельно типовую схему включения чарджера ISL6251a и те куски схемы ноутбука, которые связаны с запуском и зарядом аккумулятора.

Эта статья подразумевает, что вы знакомы с работой микросхемы чарджера и мультиконтроллера. Если это не так, то сначала изучите другую нашу статью по электрическим цепям чарджера и питания и функционирования мультиконтроллера при запуске ноутбука.

Схема включения микросхемы заряда ISL6251:

В этой референской схеме:

  • вход DCIN — вход питания от адаптера питания 19 В
  • вход ACSET — вход обнаружения нормального уровня напряжения питания от сети (должно быть больше 1.26 V для включения, через резисторный делитель)
  • выход ACPRN# — сигнал на мультиконтроллер на начало работы
  • вход EN — сигнал от мультиконтроллера на разрешение заряда аккумулятора
  • CELLS — сигнал от мультиконтроллера, указывающий, какое напряжение заряда аккумулятора должно быть на выходе чарджера
  • VDD и VDDP — напряжение питания самого чарджера, которое он сам генерирует из входного напряжения сети

Другие варианты неисправностей

Помимо проблем с мультиконтроллером часто встречаются и другие варианты неисправностей. Рассмотрим случаи короткого замыкания и неисправной кнопки включения.

Задачи мультиконтроллера

Мультиконтроллером, или, по-английски Super I/O (SIO) или Multi I/O (MIO), на сленге «мультик» (еще в документации встречается EC-контроллер), называется микросхема, обеспечивающая мониторинг напряжений и температур, работу с периферийными устройствами. Такими устройствами могут быть клавиатура, мышь, кнопка включения, датчик закрытия крышки и тп.

Основным его предназначением является управление клавиатурой (даже в схемах он обозначается как KBC-контроллер), однако со временем производители начали нагружать его множеством дополнительных функций, таких, например, как индикация работы жесткого диска (светодиод на передней панели ноутбука) или управление частотой работы кулера. Именно на эту микросхему «приходят» все контактные дорожки шлейфа клавиатуры ноутбука.

На самом деле на ножки мультиконтроллера приходят сигналы практически со всех устройств и микросхем ноутбука. Уровень сигнала может быть постоянный 3.3V (высокий логический уровень), либо изменяющийся в случае обмена данными (измеряется осциллографом).

В запуске ноутбука он вообще играет первостепенную роль, так как именно на него приходит сигнал с кнопки включения, и именно он запускает все источники напряжений и затем отдает сигнал южному мосту для начала инициализации.  

Мультиконтроллер управляет включением ШИМ-контроллеров, вырабатывающих необходимые для работы узлов ноутбука напряжения, ключами, коммутирующими эти напряжения. Через мультиконтроллер по протоколу Firmware HUB или SPI подключена микросхема Flash c программным обеспечением (которую иногда приходятся прошивать).

Запуск шим rt8205, дежурные напряжения 3 и 5

На данной платформе генерация дежурных напряжений происходит только при питании от адаптера. Сигналы держаного напряжения здесь называются 3ALWP и 5ALWP, формируемых микросхемой RT8205.

Рассмотрим работу ноутбука без аккумулятора, поскольку при ремонте материнской платы обычно мастер так и поступает, запитывая плату от лабораторного блока питания. После подключения адаптера появляется VIN и PreCHG. Через резистор PR128 оно поступает на базу PQ34, открывая его, а он, в свою очередь, открывает PQ31, подавая PreCHG на B .

Когда напряжение B достигнет достаточного для запуска RT8205, появляются напряжения 3VLP и VL. А дальше, если запуск не заблокирован транзисторами PQ63A, PQ63B, напряжения 3ALWP и 5ALWP Чтобы произошел запуск, нужно, чтобы PQ64 был открыт. Для этого должно быть напряжение VS, а ACPRN в низком уровне. VS берется из VIN через резисторы PR10 PR11.

Многие платформы Compal имеют схожие схемы. В некоторых могут применяться операционные усилители для формирования ACSET и других сигналов. В этих узлах для формирования опорного напряжения может использоваться напряжение 3V RTC, такие платы не запускаются, если батарейка часов разряжена.

В статьи использованы материалы remnout.by — ремонт ноутбуков в Минске.

(Посещений: 7 168, из них сегодня: 2)

Короткое замыкание

Если в цепи в каком-либо из компонентов произошло короткое замыкание, вся цепь перестает работать. Местом может быть шина, компонент или микросхема. Причин, почему возникает короткое замыкание, множество: от неправильной сборки аппарата до элементарного попадания воды.

Ремонт при коротком замыкании заключается в выявлении поврежденных компонентов и их замене на новые.

Неисправности мультиконтроллеров и их симптомы

Мультиконтроллер часто выходит из строя при залитии ноутбука жидкостью или вследствие выгорания ключей, формирующих 3.3В. Второе случается при скачках питания в сети.

К основным симптомам неисправности мультиконтроллера можно отнести некорректную работу клавиатуры и тачпада и отсутствие запуска как такого. Также, следствием неправильной работы «мультика» являются и глюки периферии — неправильная работа датчиков, кулера. Также по вине SIO может не определяться жесткий диск и другие накопители (работа USB при этом завязана на южный мост).

Также иногда во время самостоятельной замены матрицы ноутбука забывают отключить аккумулятор. Это тоже может привести к выгоранию мультиконтроллера. Но, к счастью, микросхемы эти не очень дорогие и ремонт такой неисправности обходится дешевле, чем, например, замена южного моста или видео. Многие микросхемы взаимозаменяемы, а перепайка их — 15 минут (если не потребуется прошивать флэш память).

Неисправность кнопки включения

Самой распространенной проблемой всех кнопок включения считается их окисление или засорение. Между контактами скапливаются инородные массы, которые препятствуют замыканию цепи. Ремонт можно провести самостоятельно. Нужно почистить контакт и цепь снова начнет функционировать.

Последовательность включения ноутбука

При включении ноутбука дежурное напряжение через кнопку подается на мультиконтроллер, который запускает все ШИМ-контроллеры, вырабатывающие все напряжения (их много), и, при нормальном исходе, вырабатывают сигнал PowerGood. По этому сигналу снимается сигнал RESET с процессора и он начинает выполнять программный код, записанный в BIOS с адресом FFFF 0000.

Затем BIOS запускает POST (Power-On Self Test), который выполняет обнаружение и самотестирование системы. Во время самотестирования обнаруживается и инициализируется видеочип, включается подсветка, определяется тип процессора. Из данных BIOS определяется его тактовая частота, множитель, настройки.

Затем определяется тип памяти, ее объем, проводится ее тестирование. После этого происходит обнаружение, инициализация и проверка подключенных накопителей – привода, жесткого диска, карт-ридера, флоппи дисковода и др., а после проверка и тестирование дополнительных устройств.

После завершения POST управление передается загрузчику операционной системы на жестком диске, который и загружает ее ядро.

Из описания выше видно, что мультиконтроллер вступает в работу на самой ранней стадии, и без его нормального запуска не сформируются управляющие напряжения. Вот условия, необходимые для того, чтобы мультиконтроллер дал команду на старт:

  1.  Основной BIOS и EC-BIOS должны быть рабочие.
  2. Мультиконтроллер запитан, работает его кварц и мульт вычитывает содержимое BIOS
  3. ACIN = 3.3 V
  4. LID_SW# = 3.3V (крышка ноутбука открыта)
  5. EC_RST# = 3.3V (мульт снимает RESET с южного моста)
  6. Южный мост снимает сигналы PM_SLP_S3# и SLP_S5#, то есть, на них устанавливается 3.3V
  7. При нажатии кнопки включения сигнал ON/OFTN# падает до нуля и этот же сигнал транслируется в PBTN_OUT#

Для инициализации мультиконтроллера необходима микропрограмма, которая хранится либо в той же микросхеме флеш-памяти, что и прошивка BIOS (UEFI), либо в отдельной микросхеме меньшего объема, либо внутри самого мультиконтроллера. В первых двух случаях восстановить прошивку не представляется сложным.

Лучше всего найти документацию и описание сигналов по мультикам IT, которые используются во многих бюджетных ноутбуках, в том числе ASUS и Dell. Благодаря схемам можно понять и отследить, где находятся выше указанные сигналы. Например, в случае IT8752 и аналогичных (используется, например, в семействе ASUS K40 и K50) для диагностики вас должны интересовать, помимо выше указанных, следующие сигналы на мультике:

  • ALL_SYSTEM_PWRGD (68 мульт)
  • SUS_PWRGD (67 мульт)
  • VRM_PWRGD (1 ISL6262)Входящие сигналы указывают на выработку сигнала PowerGood и наличие питания Suspend режима и питания на VRM регуляторе ISL6262. Это значит, мост и процессор запитаны.
  • Сигналы  H_CPURST#_XDP и H_PWRGD_XDP разрешают работу процессора.
  • PWR_SW# — сигнал с кнопки включения
  • CPU_VRON — включения питания на CPU
  • PM_RSMRST# — снимает RESET с моста
  • PM_SUSB# — хаб PCH должен выдать сигналы PM_SUSC# и PM_SUSB# идущие на мульт, а мульт в ответ выдать сигналы SUSC_EC# и SUSB_EC#
  • PM_PWROK — сигнал на хаб, что питание в норме
  • PM_CLKRUN# — сигнал на запуск тактирования
  • PM_PWRBTN# — сигнал на включение южного моста
  • VSUS_ON — сигнал включения дежурного питания на силовых ключах
  • EC_CLK_EN (CLK_EN#) — разрешение тактирования на южный мост

Питание на IT85xx мульты поступает следующее:  3VA_EC,  3VPLL,  3VACC, без них микросхема не запустится.

Последовательность диагностики мультиконтроллера

Рассмотрим схему последовательности включения ноутбука:

Процедура включения материнской платы

Для диагностики в целом, вам нужно рассмотреть две ситуации:

1. Питание не появляется, светодиод питания не горит.

Ищем неисправность в схеме управления питанием. Проверяем 19 V со входа , приходящие на микросхему зарядки (charger), например, MAX. Проверяем наличие дежурных напряжений 3VSUS и т.п. Через форфмирователи 3 V питание поступает на мультик — проверяем это питание на входе.

2. Питание есть, светодиод питания горит, но ноутбук не включается, экран темный. Индикатор жесткого диска сначала включается и гаснет, затем не горит.

Очевидно, мультик работает, управляющие сигналы формируются, однако, дальнейший запуска не происходит или он обрывается. Чаще всего виноваты в этом микросхемы чипсета, сам процессор или тактирующие генераторы, которые срывают генерацию сигналов. Для быстрой диагностики прогреваем микросхемы чипсета по-очереди.

После каждого прогрева пробуем на включение. Если ноутбук включается, то виноват конкретный чип. Очень важна предыстория поломки — например, если до поломки перестали работать USB порты, то скорее всего вышел из строя южный мост. Если были артефакты на встроенном видео, то виноват северный мост.

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

Вот обобщенный порядок следования сигналов при запуске EC:

исходящий сигнал

CLK_PWRGD с юга приходит на тактовый генератор-> сигнал PWROK на юг-> юг отдает процу сигнал H_PWRGD (HardWare PWRGD, все питания в порядке, следующий этап инициализации)-> юг снимает ресет с севера PLT_RST#-> юг снимает ресет с PCI шины PCI_RST#-> север снимает ресет с процессора HCPU_RST#

Вот алгоритм проверки популярного мульта KB3926, его можно применить и к аналогам:

  1. Проверить питание мульта 3,3v (9 нога)
  2. Проверить генерацию кварца (123 нога)
  3. Проверить сигнал с кн.вкл. ON/OFF 3,3v/0,5v (32 нога)
  4. Проверить АCCOF 0V (27 нога)
  5. Проверить ACIN 3.1V (127 нога)
  6. Проверить PBTN_OUT 0v/3,3v (117 нога)
  7. Проверить сигнал 0v/3,3v (14 нога)
  8. Проверить RSMRST 0v/3,3v (100 нога)
  9. Проверить PWROK 0v/3,3v (104 нога)
  10. Проверить SYSON 0v/3,3v (95 нога)
  11. Проверить VRON 0v/3,3v (121 нога)
  12. Проверить обмен мульта с югом 3,3v (77,78 нога)
  13. Проверить обмен мульта с югом 0v/3,3v (79,80 нога)
  14. Проверить генерацию PCICLK (12 нога)
  15. Проверить сигнал 0v/3,3v (1,2,3 нога)
  16. Проверить TP_CLK 0v/0,1v (87 нога)
  17. Проверить TP_DATA 0v/5v (88 нога)
  18. Проверить SUSP 0v/3,3v (116 нога)
  19. Проверить VGA_ON 0v/3,3v (108 нога)

Вот дополнительные контрольные значения напряжения:

DPWROK_R — 3,3VPM_RSMRST#PCH — 3,3VPM_RSMRST#- 3,3VSUS_PWRGD — 3,3V5VSUS_PWRGD — 3,3VME_SUSPWRDNACK_R — 3.3V

Как видно из алгоритма, в самом начале EC контроллер должен вычитать прошивку из Flash памяти через SPI интерфейс. Если этого не происходит, то дальше никаких сигналов питания ШИМов не формируется. Часто, в случае серии IT85xx  и аналогичных это отдельня 8-контактная микросхема (напримерб SST25VF080B) с питанием по линии 3VA_SPI.

Программатор от Сергея Вертьянова

Для справки: схема плат Asus K40AA K50AA и схема нетбуков ASUS 1015P.

Популярность: 80%

Работа чарджера isl6251 и заряд аккумулятора

Питание 19в поступает на 24-й вывод микросхемы чарджера DCIN с разъема питания через диод PD16 и резистор PR281 (входное напряжение схемы обозначено VIN). Если вы заменили микросхему, проверьте цел ли резистор. Внутри микросхемы на выводе 1 VDD формируется напряжение питания 5в которое далее через PR86 поступает на 15 вывод VDDP и запитывает остальные узлы микросхемы. Проверяем присутствие 5в на 15 выводе.

На выводе VREF должно быть генерируемое чарджером опорное напряжение 2.39v

Вход ACSET — чарджер детектирует напряжение питания 19в, которое делитель на PR280 и PR282 понижает в 14 раз. Для этого напряжение на ACSET должно превысить 1.26в, что соответствует 18.0в на входе. Обнаружив нормальное питание, чарджер опускает в низкий уровень ACPRN — подаёт сигнал мультиконтроллеру.

Мультиконтроллер обменивается данными с контроллером аккумулятора и при необходимости зарядки выставляет высокий уровень на выводе EN чарджера, разрешая ему заряд.

На выводе CELLS мультиконтроллер устанавливает напряжение, зависящее от количества банок в аккумуляторе, указывая тем самым чарджеру, какое напряжение подавать на аккумулятор. Чарджер вырабатывает напряжение BATT на заряд батареи (типовое 12.6 В).

Выводы CSIN CSIP подключены к датчику тока источника питания — резистору PR61, а выводы CSON CSOP — источнику тока заряда. При превышении тока чарджер выключает зарядку аккумулятора.

Таким образом, для заряда аккумулятора необходимо, чтобы чарджер был запитан (DCIN = 19в, VDD и VDDP = 5в, VREF = 2.39v), чтобы он продетектировал питание (ACSET >1.26v) мультиконтроллер выдал ему сигнал EN.

Должна запуститься генерация на транзисторах PQ55 PQ57, токи на PR61 и PR78 не должны превысить предельно допустимых. Здесь следует обратить внимание, что кроме самих резисторов PR61 PR78 могут подгореть также и PR74 PR76 PR72 PR73, из-за чего чарджер может неправильно измерять токи.

Разновидности мультиконтроллеров

Мультиконтроллеры выпускают следующие фирмы: ENE; Winbond; Nuvoton; SMCS; ITE; Ricoh.

Сильно отличаются только последние, хотя бы методом пайки, они BGA.

На современных мультиконтроллерах имеется по 128 ножек, но их назначение сильно отличатся в зависимости от модели мультиконтроллера и даже от его ревизии. К примеру, KB926QF-D2 и KB926QF-C0. — два совершенно разных мультиконтроллера.

Как найти Мультиконтроллер?



Знаток

(282),
закрыт



8 месяцев назад

ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО*

Высший разум

(278881)


11 месяцев назад

На современных мамках нет мультиконтроллера.
Это раньше (лет двадцать назад прекратили) на мамках северный и южный чипы со всей обвязкой (com-порты, например и звук) располагались на отдельной плате, которая вставлялась в разъем на мамке. Именно эта плата и называлась мультиконтроллером.
Возможно вы неправильно указываете название. Возможно стоит указать контекст или источник возникновения вопроса.

Michael S

Просветленный

(36691)


11 месяцев назад

Легко — по маркировке микросхем можно почитать даташит , либо по спецификации немного узнать расположение . Здесь много контроллеров (мультиконтроллеров) . Касаемо твоей платы :
Realtek ALC887 — звуковой контроллер (здесь обозначен как СODEC)
VIA VL805 — контроллер USB 3.0
Realtek GbE LAN — Ethernet контроллер
ITE Super I/O — контроллер ввода/вывода (в технической литературе обозначают — контроллер I/O)
Intel H81 — чипсет (здесь у тебя , так называемый “хаб” — hub — южный и часть северного моста у тебя объединены в одну микросхему, там тоже есть контроллеры)
И это ещё не всё . В верхней части платы тоже есть микросхемы-контроллеры другого назначения .
Если сказать по простому — мультиконтроллер представляет собой в большинстве своем многовыводную микросхему

Добавить комментарий