на главную
Карта сайта
English version
Вы читаете:

Работа с гамма-корректором и контроллером клавиатуры ноутбуков

Компьютерная техника
3 года назад

Postal programmer — «умный» программатор. Работа с гамма-корректором MAX96XX и контроллером клавиатуры ноутбуков KB9012 (часть 2)


Редактирование дампа данных для дальнейшей записи в энергонезависимую память микросхемы гамма-корректора

Управление записью в энергонезависимую память MAX96XX происходит при помощи битов, проставляемых в поле данных. Объем данных небольшой и для удобства представлен скриншотами. Для подготовки дампа под запись можно использовать любой редактор двоичных данных. На рис. 4 представлен результат полного чтения ИМС MAX9669 по всем возможным адресам 00000-001FF (адрес имеет размер 1 байт (256 ячеек), но из-за 16-битных данных на выходе получено 512 байт).

Скриншот данных, прочитанных из микросхемы MAX9669

Рис. 4. Скриншот данных, прочитанных из микросхемы MAX9669

 

При сопоставлении адреса регистра микросхемы с адресом файла последний в 2 раза больше из-за читаемых 2-х байт на адрес. Данные в файле повторяются, поскольку весь диапазон адресов микросхемой не используется, и часть битов адреса не имеет значения. Каждые два байта в файле должны рассматриваться как 16-битные данные, где старшие 8 бит идут первыми (т.е. слева в окне редактора по меньшему адресу старший байт). В третьей строке файла (адрес в файле 0x03A) видна серия нулей - согласно даташиту, это служебная область, в которую запись запрещена. Серию FF перед ней также можно не учитывать, последние значимые данные находятся по адресу 0x33 (в файле). Все, что находится дальше этого адреса, можно удалить либо заполнить FF (в зависимости от возможностей вашего редактора). Область, заполненная FF, будет пропущена при записи.

Для выполнения записи в энергонезависимую память старшие биты каждого записываемого 16-битного слова должны иметь значение "01". Для этого в каждую лидирующую тетраду данных записывают "4" вместо нуля. В результате операции будет получен файл, пригодный для записи (рис. 6) размером, в данном конкретном случае, всего 52 байта.

Скриншот данных, отредактированных для записи в MAX9669

Рис. 5. Скриншот данных, отредактированных для записи в MAX9669

 

Скриншот установок программы для работы с контроллером клавиатуры KB9012

Рис. 6. Скриншот установок программы для работы с контроллером клавиатуры KB9012

 

Предполагается, что для записи будет использована однотипная микросхема. Удобство ручного метода состоит в том, что данные для разных ревизий MAX96XX располагаются по разным адресам, и таким образом мы имеем полный контроль всех возможных вариантов, которые трудно предусмотреть при автоматической коррекции. Поскольку там, где записан код "4", при чтении прочитаются нули (верификация не работает), проверку правильности записи удобнее выполнить визуально, прочитав записанное обратно и просмотрев первые 52 байта в редакторе. Если есть несовпадение, можно подготовить для записи новый файл, где успешно записанное заполнено значением FF для пропуска. Необходимо помнить, что энергонезависимая память у MAX96XX имеет ограниченный ресурс на перезапись.

Таким образом, программатор предоставляет надежный и универсальный инструмент для работы с гамма-корректорами MAX96XX. Такая возможность доступна и в USB-, и в LPT-версиях.

 

Чтение и запись внутренней Flash-памяти контроллера клавиатуры KB9012

При ремонте ноутбуков иногда возникает необходимость записи внутренней Flash-памяти контроллера клавиатуры KB9012. Например, если контроллер новый, снят с другого ноутбука или случайно стерлось его содержимое из-за программного сбоя, то в этом случае невозможно включить ноутбук. К счастью, техническая документация на ИМС KB9012 была кратковременно доступна автору, что позволило внедрить его поддержку в USB- и LPT-версию программатора.

Загрузка программного обеспечения в контроллер происходит по физическому протоколу SPI, однако имеет сложную систему команд, успешно реализованную в программаторе. Используется тот же набор сигналов, что и для SPI-flash (CS, SCK, DI, DO), сигналы снимаются с соответствующих линий программатора. Сигналы нужно подключить к выводам 59-62 контроллера KB9012, а именно: выв. 59 к CS (выбор ИМС низким уровнем от программатора), выв. 60 к SCK (тактовые импульсы от программатора), выв.61 к DI (вход данных KB9012, на него идут данные из программатора), выв. 62 к DO (выход данных KB9012, отсюда программатор получает ответные данные). Контроллер выполнен в корпусе LQFP-128, но требуемые для загрузки выводы обычно разведены на печатной плате для удобства подключения. Со стороны программатора удобнее описывать подключение, отталкиваясь от нумерации контактов панельки для микросхем SPI-flash, а именно: контакт 1 - CS, контакт 6 - SCK, контакт 5 - DI (данные из программатора в KB9012), контакт 2 - DO (данные принимает программатор). Линии GND (общий) программатора и ноутбука необходимо соединить (микросхема программируется в составе ноутбука). Также перед загрузкой контроллер необходимо ввести в специальный отладочный режим. Для этого используется выв. 42 контроллера (так называемый "bootstrap"), его необходимо замкнуть на GND, а уже затем подавать на контроллер питание. Пока происходит загрузка, выв. 42 должен быть все время замкнут на GND. В момент старта контроллер проверяет уровень на этом выводе, и если уровень низкий - переходит к ожиданию отладочных команд. Подключение контроллера к программатору обобщено в таблице.

Таблица. Соответствие выводов KB9012 контактам сокета SPI-FLASH программатора

Номер вывода KB 9012, направление сигнала

Название сигнала

Описание,назначение

Соответствующий номер вывода сокета SPI - FLASH программатора (8 выводов)

59, вход

CS

Выбор низким уровнем

1

60,вход

SCK

Тактирование данных

6

61,вход

DI

Прием данных в KB9012

5

62, выход

DO

Передача данных из KB9012

2

42, вход

Bootstrap

Подключить к GND до подачи питания

-

После правильного подключения и подачи питания необходимы дополнительные действия для введения KB9012 в отладочный режим. Сначала, если это еще не сделано, нужно переключить оболочку программатора для работы с KB9012. Для этого ставят отметку в главном окне на "Other", нажимают "Settings", на соответствующей страничке свойств выбирают "Jtag/SPI" и в выпадающем списке выбирают "KB9012". Если используется USB-вариант программатора, устанавливают максимальную скорость (MaxSpeed). Для LPT-варианта имеется дополнительный выбор адаптера подключения - его делают в соответствии с используемым адаптером. Сделав установки, возвращаются к главному экрану программы, нажимая "OK".

Согласно технической документации на контроллер KB9012, для ввода в отладочный режим он должен получить несколько команд при условии, что тактовая частота (SCK) выше 1 МГц. В случае USB-программатора, установленного на максимальную скорость, это условие выполняется, и можно сразу сделать попытку подключения, нажав "Setisp". При этом посылаются команды чтения регистров, и если отображаются некие данные - подключение успешно. Если же данные состоят из кода FF - контроллер не отвечает, нужно найти и устранить причину неудачи, обычно это неправильное подключение к программатору. Нажимать "SetISP" можно сколько угодно раз, пока не будут получены строки с данными, контроллер от этого не испортится.

Несколько другая процедура подключения, если используется LPT-вариант программатора.

Дело в том, что необходимую для подключения частоту SCK получить с параллельного порта компьютера невозможно, поэтому необходимо использовать заранее изготовленный по любой простой схеме генератор на частоту около 4 МГц. Можно сделать переключение линии SCK на генератор с помощью кнопки, либо использовать специально выделенный контакт 5 LPT для автоматического переключения. После подачи питания на KB9012 необходимо подключить одну только линию SCK к генератору и нажать один или несколько раз "SetISP", после чего переключить линию SCK обратно к программатору и еще раз для контроля нажать "SetISP". В ответ должны отобразиться данные. К счастью, высокая частота SCK нужна только на момент подключения, и дальше отладочный режим работает на любой частоте.

Если ввод контроллера в отладочный режим прошел успешно, то дальнейшая работа происходит при помощи кнопок "Read", "Write", "Verify" с соответствующими файлами, ничем не отличаясь от работы с обычными микросхемами памяти. Обычно сначала читается дамп с контроллера. Специального стирания перед записью не производится, поскольку структура внутренней энергонезависимой памяти контроллера схожа с Dataflash от Atmel, то есть стирание происходит по размеру записываемого буфера.

В случае самостоятельного изготовления USB-программатора и использования неточного кварцевого резонатора программа может выдать ошибку при чтении KB9012. Это происходит из-за потери синхронизации при длинных передачах. Для устранения ошибки достаточно войти в настройки программы "Settings-Misc" и отметить чекбокс "SPI Read Short Step". Будет использован безопасный обмен короткими пакетами, некритичный к качеству резонатора.

Управляющая программа для обеихверсий программатора (USB и LPT) разработана в соответствии с документацией на KB9012, который имеет размер внутренней памяти Flash 128 кбайт. Однако известно, что протокол совместим с другими подобными контроллерами,например KB9016, KB9010. За всеми будущими улучшениями программы можно наблюдать на техническом форуме МОНИТОР [2].

Интернет-ресурсы

1. http://datasheets. maximintegrated.com/en/ds/ MAX9669.pdf

2. http://monitor.net.ru/forum/ postal23-info-317755.html

Автор: Валерия Ершова (г. Москва)

Источник: Ремонт и сервис


Рекомендуем к данному материалу ...