мульт в ноутбуке что это

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

В этом материале я хочу немного рассказать о том, что происходит во встроенном контроллере (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 (программируемый контроллер интерфейса периферийных устройств), отвечал за взаимодействие с клавиатурой.

Где-то в конце 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-контроллера и контроллера клавиатуры. Он, например, решает следующие задачи:

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

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

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

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

Прошивка EC

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

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

После того, как я всё это выяснил, меня посетила блестящая идея, которая заключалась в том, чтобы посмотреть даташит исследуемого компонента. Даташит на мой контроллер найти не удалось, но мне попались документы на 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 и его исходный код. В таких делах весьма кстати могут оказаться несколько мониторов, использование которых позволяет ускорить сопоставление информации, полученной из разных источников.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  мрт щитовидной железы с контрастированием что показывает

Правда, для выполнения собственного кода нет нужды выполнять запись данных во флеш-память. В 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, поместив туда отладочный код, и подстроить механизм записи данных во флеш-память так, чтобы он обращался бы к этому отладочному коду.

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

Итоги

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

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

Источник

Ноутбук не включается

Поиск неисправности материнской платы ноутбука

СПб Большой Проспект Петроградской Стороны дом 100 офис 305 телефон (812) 922-98-73

Осмотрим материнскую плату ноутбука на предмет окислов, потемневших участков, следов пайки, нагара, вздутий текстолита и других повреждений, так же осматриваем все разъёмы (чтобы нигде ничего не замыкало) и исходя из этого можно строить определённые выводы.
Если есть окисления на каком либо участке, то надо промыть плату, (мы промываем в ультразвуковой ванне), а затем выдуваем всю воду с платы (особенно из под чипов) с помощью компрессора, досушиваем на нижнем подогревателе смотрим отгнившие элементы под микроскопом и восстанавливаем.
Стоит обратить внимание на то место куда попала жидкость, часто бывает что жидкость попадает к примеру под системную логику, слоты памяти и в итоге под ними начинают отгнивать контакты.

Выявление короткого замыкания (КЗ) на плате ноутбука

Начинаем с проверки первички «19 вольтовая линия» (вообще если быть точным то первичка на некоторых моделях может быть не 19в, а к примеру 15в или же наоборот 20в и надо смотреть что написано на корпусе, для того чтобы узнать параметры совместимого зарядного устройства), ищем по схеме где они проходят и так же меряем сопротивление относительно земли, оно должно быть большим. Если же у вас заниженное сопротивление по высокому (19в), то для начала вам надо понять в каких цепях оно присутствует, то есть в обвязке чаржера (Сharger в переводе с англиского «зарядное устройство») или в нагрузке.

Что происходит при подключении блока питания ноутбука:
На ACDET (детектор заряда) через резистор который является делителем приходит напряжение и если она больше 2.4в то чаржер сообщает мультиконтролеру о переходе в режим зарядки по каналу IADAPT
при этом сигнал OVPSET определяет порог входного напряжения и если всё нормально, то ключ (мосфет) Q3 закрывается управляющий сигнал ACDRV открывает Q1 тем самым запитывая чаржер уже от БП (PVCC 19в) и проходит Q2, после чего уходит в нагрузку.

Вернёмся к тому что надо определить кз (в нагрузке или до неё), исходя из вышесказанного допустим если у вас пробит конденсатор С1 то если будетем искать КЗ в нагрузке то его там попросту нет, а на разъёме напряжения будет просаживаться.
В этом случае надо производить замеры относительно земли допустим на резисторе R10, затем на PVCC микросхемы чаржера и наконец на резисторе Rас, так же в обязательном порядке проверяем мосфеты Q1, Q2 и Q3 на пробой (желательно с ними также проверить Q4 и Q5), далее если допустим у нас с вами кз не в нагрузке, то можно воспользоваться ЛБП (лабораторный блок питания) с ограничением по току, подсоединяем в область кз и ищем на плате греющиеся элементы, меняем, процедура производится до того момента пока кз не уйдёт, либо можно не использовать ЛБП, а просто выпаивать элементы попавшие под подозрение и менять если они пробиты.
Когда короткое в нагрузке, перед тем как использовать ЛБП надо убедиться что все мосфеты во вторичных цепях питания на которые приходит высокое (другими словами верхнее плечо) не пробиты.

Читайте также:  мазать лоб зеленкой что значит

Шим котролер RT8202A

Как видим на схеме, если насквозь пробит PQ, то все что вы будете подавать на линию высокого будет проходить на дроссель и далее в узлы питания оперативной памяти (если конечно её не вытащить перед этим). Подумайте и представте что это будет не в этой цепи, а например в цепи питания видео
Проверили мосфеты и убедились, что КЗ по высокому в нагрузке, то можно применять ЛБП и искать неисправности.
Перед применением ЛБП желательно снять с платы все снимаемое и желательно ставить на ЛБП выходное

напряжение около 1в и 1A для поиска неисправности важна сила тока, а не напряжение.

Питания не поднимаются либо поднимаются, но не все

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

Прошили биос и изменений не последовало, идём дальше, во многих схемах есть страничка с «Power on sequence» (последовательность питания).

Вот так выглядит цепь POWER GOOD DETECTER.

Работа шим контроллеров RT8202APQW

Для того чтобы шим работал требуется не так уж и много, для начала нужно убедится в том, что вся обвязка целая и номиналы соответствуют, затем убедимся, что шим запитан в данном случае (VDD и VDDP), должен приходит EN (сигнал включения) и приходить высокое на TON
если все вышесказанные условия соблюдены, но шим не выдаёт положенного питания то следует заменить шим.

Все питания поднялись, но нет «изображения».

В этом варианте начинаем с прошивки биоса. Не помогло:
Подключаемся на внешний монитор.
Если картинки нет то меряем сопротивления каналов RX/TX желательно на всех шинах, мерять надо относительно земли и относительно друг друга то есть RX не должен звониться накоротко с TX, соответственно учитываем что на каждой шине своё сопротивление, отличие на отдельной шине более чем 50ом уже много и может означать что проблема скрыта на этом канале,
далее меряем сопротивление относительно земли на конденсаторах под основными чипами (север, юг, видеокарта) на одинаковых конденсаторах должно быть одинаковое сопротивление.
Ну и конечно же желательно снять всю переферию чтобы исключить всякие сломанные сетки или ещё что-нибудь из этой категории, особенно часто ноутбуки ломаются по причине выхода из строя USB (выломали USB и сигнальный контакт попал на 5в итог дохлый юг).
Далее можно применить метод прогибов и прижимов (без фанатизма) при этом смотреть будет ли меняться поведение платы не будем забывать, что зачастую некоторые мосты находятся под клавиатурой там, где они подвергаются небольшим, но частым «встряскам», так же проверяем на отвал bga. Так же смотрим что, где и как греется, замечу что наиболее частая в что при запуске начинает греться южный мост и сразу решают, что проблема в нем, меняют его, а плата как не работала, так и не работает, а все потому что южный мост работает как сумасшедший пока не пройдёт инициализация (потому он и может за 3 секунды раскаляться), а потом его работа стабилизируется, поэтому в процессе диагностики желательно поставить пассивное охлаждение. Далее если совсем ничего не помогло можно воспользоваться диагностическим прогревом или охлаждением отдельных чипов и элементов.

Так же не стоит проверять LVDS шлейфа,
Подключаем матрицу, если у вас например на внешнем мониторе есть изображение, а на матрице нету, надо смотреть считывается ли EDID с матрицы, проверять приходит ли питание матрицы
так же часто бывает что попросту нету подсветки.
LVDS ( low-voltage differential signaling) в переводе «низковольтная дифференциальная передача сигналов» — способ передачи электрических сигналов, позволяющий передавать информацию на высоких частотах
при помощи дешёвых соединений на основе медной витой пары.
Для того чтобы на матрицу вывелось изо необходимо чтобы был запитан контроллер матрицы, после он начинает «общаться» с тем что с ним должно общаться (север, видяха, мульт)
смотреть по схеме, предположим это будет видеокарта, она определяет что по такой-то шине подключён такой-то контроллер, считывает EDID и начинает давать туда изо.
Так же смотрим что дает разрешение на подсветку, есть ли сигнал регулировки подсветки (обычно с мульта).
Внимание когда подключаете шлейф, убедитесь что он под эту модель ибо есть шанс спалить что ни будь серьёзное (типа чипа видеокарты) и плата резко может начала дымиться
Рассмотрим что же за пины на LVDS разъёме и зачем какой нужен.

Для примера Asus k42jv mb 2.0:

Далее идут пары LVDS, их тоже следует измерять на разность сопротивлений и относительно земли, и относительно друг друга.

Источник

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

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

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

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

Модератор
Инженер

Зарегистрирован: 23 июл 2011, 14:13
Наличности на руках:
13,118.79

Сообщения: 9944
Откуда: Ульяновск

Интересующийся

Зарегистрирован: 17 авг 2014, 00:29
Наличности на руках:
19.07

Сообщения: 133
Откуда: belgorod

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

Источник

Образовательный портал