Мое видение работы механизма загрузки кода EC ITE.Не претендую на истину, но основано на опытах, проводимых в июле 2017 года.
Основные ключевые моменты, которые влияют на поведение EC ITE при подаче питания и снятия сигнала сброса.
Под питанием подразумеваем наличие на всех питающих ножках EC напряжения 3V3.
Для EC IT8586 сигнал сброса это 14 ножка - сигнал WRST# Питание - ноги 3, 11, 26, 50, 92, 114, 121, 127, 74.
Повторю - на всех ножках нужно обеспечить наличие питания!
Ключевые моменты следующие:1 Наличие резистора на +3 или gnd с ножки 100 (GPG2)
2 Микрокод, находящийся в EC до подачи питания и снятия сигнала сброса.
3 16 байт сигнатуры, которая присутствует чаще всего с адреса 00040h, но может находиться и по 40h, 50h, 60h, …. F0h.
4 Наличие внешней flash памяти и ее питания. (FLASH BIOS)
GPG2 это один из “железных” страпов EC. В даташите есть сноска, что GPG7-GPG2 используются как страпы, но их реальное значение не описано.
Микрокод = прошивка EC. Далее буду использовать слово микрокод.
В каждом микрокоде EC есть 16 байт сигнатуры. Описание есть, но оно скудное и не вносит никакой ясности.
По этой сигнатуре EC определяет начало области во внешней FLASH памяти, где находится его микрокод.
Формат примерно такой A5A5A5A5A5A5A5 B5 8512 5A5A AAAA 5555 (всего 16 байт)
В некоторых платформах, а практически всегда это ноутбуки фирмы CLEVO и ASUS, EC при каждом своем включении загружает в себя микрокод из внешней flash памяти.
Для экспериментов было сделано 5 файлов размером по 128KB. 1 файл - "модернизированный FF" - это дамп 100% содержащий в себе FF, но по адресу 0x00040 лежат данные в hex виде A5A5A5A5A5A5A5B585125A5AAAAA5555
2 файл - дамп "8586" так-же содержит по тому же адресу 16 байт A5A5A5A5A5A5A5B585125A5AAAAA5555. (Микрокод EC от NM-A311)
3 файл и 4 файл – микрокод EC от ASUS и CLEVO.
5 файл – все 128KB значение FFh
Теперь о полученных результатах и поведении EC в зависимости от микрокода и положения страпа GPG2.
1 случай. Если присутствует резистор с 100 ноги EC на землю. Мульт ни при каких условиях не будет перезаписываться.
Пробовал заливать в EC весь дамп FFh (5 файл) - считал то, что и записал (FFh везде).
Пробовал заливать в EC дампы от zrq/asus/clevo (файл 3 и 4). Аналогично- что записал, то и считал.
Дамп "8586" (файл 2) и "модернизированный FF"(файл 1) - считал то, что и записал.
2 случай. Если присутствует резистор с 100 ноги EC на +3v питания EC. Приоритетным фактором будет являться содержимое микрокода EC, что лежит в нем до подачи питания.
Пробовал заливать в EC весь дамп FFh (1 файл) - EC перезаписал в себя из внешней flash.
Пробовал заливать в EC дампы от zrq/asus/clevo (файл 3 и 4). Аналогично- EC перезаписал в себя из внешней flash.
Дамп "8586" (файл 2) и "модернизированный FF"(файл 1) - считал то, что и записывал.
При тех созданных условиях, когда EC переписывается (хочет), доступа к нему через программатор (или на tetris) не будет, пока EC не завершит свои операции
Таким образом, можно иногда понять причины, по которым может не быть связи как через программатор и на tetris, так и для чего мы иногда вынуждены использовать внешнюю flash память на tetris. Разумеется, все детские дефекты, связанные с плохим контактом, неправильным подключением, отсутствием питания (частичное питание), мы исключаем.
Может быть ситуация, когда платформа ASUS или CLEVO, а там стоит резистор по GPG2 на +3, но нет внешней flash памяти или она битая, или не запитана, то нет связи с программатором.
Может быть ситуация, когда платформа NM-A311, а там нет физически даже дорог до внешней flash памяти, и мы залили специфичный (ошибочный) микрокод EC, который будет настойчиво искать внешнюю flash – связи с EC не будет.
Может быть распространенная ситуация с использованием tetris. Вы установили EC на tetris (jaws или spider), успешно его запрограммировали, что показала сверка в программе сразу после записи, но после - связи с EC уже нет. Это объясняется тем, что Вы записали в EC микрокод, которому по определению нужно наличие внешней flash. При установке flash в сокет связь появится, но если в той flash присутствовал микрокод для EC (поймёте по сигнатуре A5A5…), то EC уже перепишет его в себя. Поэтому не нужно делать бездумных повторных сверок после записи EC. Когда программатор запишет в EC, он автоматически сделает проверку записанных данных. В случае с tetris, после этого нужно извлечь EC и устанавливать на MB. Не нужно забывать и про программирование внешней flash на самой MB. Может получиться, что там находится другой микрокод EC, что сведет на нет все что было сделано на tetris. Возьмите за правило – программируете EC и BIOS. Если по отдельности – будьте готовы к сюрпризам.
Вторая ситуация с tetris. При установке EC нет связи пока не поставим flash в сокет. Аналогично действуем. EC хочет иметь доступ к flash – даем ее ему. Появляется связь – записываем, автоматически делается сверка и после извлекаем EC.
Напомню, что на tetris стоит управляемый ключ по питанию для всех EC. Когда светодиод power не горит – питания нет. После операций чтения или записи питание всегда выключается. При работе по шлейфу с EC ITE, чтобы перезапустить описанный механизм мы передергиваем питание на MB.
Если есть полезная информация по этой теме или свои наработки/дополнения – пишите.
Возможно, найдутся и те, кто захочет, как минимум, проделать то, что я описал.
Hidden Content:This board requires you to be registered and logged-in to view hidden content.