Выношу на обсуждение статью, которую недавно наваял.
1) Хотелось-бы добавить "работу над ошибками". У кого был опыт прошивки SK6211 и были ошибки, то как вы с ними справились? Буду очень благодарен всем кто откликнется и постараюсь обобщить и структурировать это в статье.
2) Выводы насчет поиска версии
Code Bank по дате из флэшлиста у меня не подтвердились! Думаю убрать или модернизировать этот пунт (Пример2)
_______________________________________________
SUBJДанная статья предназначена для помощи в программном восстановлении USB Flash Drive, изготовленных на базе микроконтроллера SK6211 производства Skymedi. Данный контроллер встречается во Флэш накопителях различных производителей, например: Kingston, Kingmax, A-data и др. В качестве примера была выбрана утилита SK6211_PDT_20090828. Она, как и многие другие, предназначена для работы в среде ОС – MS Win XP. В качестве «подопытного» выбрана флэшка Kingston DT100/1GB.
В комплект утилиты входят:
1) SK6211_20090828.exe – собственно основной модуль.
2) SK6211_User_Manual.pdf – инструкция к программе на английском языке
3) SK6211_Linux_User_Manual.pdf – инструкция для пользователей Linux
4) SK6211BA_Skymedi Flash Support List _20090828.xls – «Флэшлист» - список модулей памяти, которые поддерживает данная версия утилиты. (Пригодится для определения "CodeBankVer" по дате)
5) SK6211BA R-W Performance_Capacity List_20090828.xls – Сводная таблица тестов скорости различных модулей памяти в одноканальном и двухканальном режимах в ОС Win XP sp2 & Win 2k sp4.
6) SK62XX_FAT_20090505.exe & SK62XX_FATool_UserGuideV1.pdf – вспомогательная утилита для тестирования флэш.
7) ErrorCodes.txt – список кодов ошибок.
DrvSwitch.exe – заводской драйвер.
9) Driver_Using_manual.pdf – инструкция по использованию драйвера
1. Подготовка Подключаем флэшку и узнаём VID/PID, например с помощью
ChipGenius 3.0. У подопытной VID = 0951 PID = 1607.
Запускаем утилиту «SK6211_20090828.exe» и выбираем в "Configuration Selection" default.
Видим, что в первом окне (DUT1) определилась флэшка (SAMPLE – No Match), но пока она не готова к прошивке! SAMPLE = пример, No Mach = Нет Совпадения. Имеется ввиду, что текущие настройки (default) не соответствуют внутренностям флэшки. Утилита уже определила, что флэшка построена на контроллере который отзывается на её запросы и уже считала из её прошивки информацию.
Просмотр этой информации производится по дабл-клику на SAMPLE.
Тут мы видим содержимое прошивки:
1) Контроллер SK6211
2) FID памяти (AD D3 14 A5 34) и её название (HY27UT088G2A)
3) Версию CodeBank: C080512A_F080516A
4) Версию прошивки: CodeSwap- 0512
5) Остальное не так важно (дата изготовления/ версия утилиты/ название конфигурации = «гравировка на USB-разъёме» / VID&PID коды и т.д.)
6) Channel: Byte Mode (Одноканальный режим. Может пригодиться в настройках!)
Тут все хорошо! Но что делать кода слетела прошивка так, что большей части этой информации нет!
Пример1:
Controller Version: SK6211BA
Flash Part No.: No matched Flash Part No.
Flash ID 01: 0x89 0x95 0x94 0x1E 0x74
Flash ID 02: 0x00 0x00 0x00 0x00 0x00
Flash ID 03: 0x89 0x95 0x94 0x1E 0x74
Flash ID 04: 0x00 0x00 0x00 0x00 0x00
Flash ID 05: 0x00 0x00 0x00 0x00 0x00
Flash ID 06: 0x00 0x00 0x00 0x00 0x00
Flash ID 07: 0x00 0x00 0x00 0x00 0x00
Flash ID 08: 0x00 0x00 0x00 0x00 0x00
Здесь утилита считала из флэшки FID, но не смогла по нему подобрать память из своего списка!
Вывод: пробовать другую утилиту или проверять контакты. Иногда восстановление контактов по Шине Данных между контроллером и памятью изменяет ID-шник и утилита, по правильному ID-шнику, находит соответствие в своей Базе Данных.
Пример2:
Controller Version: SK6211BA
Flash Part No.: I29F32G08AAMD1_S
Total Flash Size: 8192 MB
4K Page, MLC
Flash ID 01: 0x89 0xD7 0x94 0x3E 0x84
Flash ID 02: 0x89 0xD7 0x94 0x3E 0x84
Flash ID 03: 0x00 0x00 0x00 0x00 0x00
Flash ID 04: 0x00 0x00 0x00 0x00 0x00
Flash ID 05: 0x00 0x00 0x00 0x00 0x00
Flash ID 06: 0x00 0x00 0x00 0x00 0x00
Flash ID 07: 0x00 0x00 0x00 0x00 0x00
Flash ID 08: 0x00 0x00 0x00 0x00 0x00
Здесь утилита нашла память в своей БД. Но версия Code Bank – неизвестна! Находим её при помощи поиска даты по имени флэш чипа в файле SK6211BA_Skymedi Flash Support List _20090828.xls
Теперь ищем подходящие Code bank.
Открываем файл:
...\SK6211_PDT_20090828\CodeBank\2806\CBVer-1.2.2.44.ini
Находим по дате 09,03,09 версию: C090309A_F090309A
2. Настройки Вернёмся к подопытной. Переходим по кнопке "Advaced" в расширенные настройки. Пароль – 123456.
1) прописываем VID & PID: 0951 & 1607
2) Vendor Name: Kingston
3) Product Name: DataTraveler 2.0
4) Revision: 8.2 (оставляем без изменений)
5) Disk Type: Removable (оставляем без изменений)
6) S/N: 001478544881SK8703120829 (это родной серийник подопытной)
7) S/N Gen: (3) Don't Change SN
Ниже можно пропустить до
8 ) Fixed Flash Size = 1024 (ставим оригинальный размер флэшки)
9) При установке галки на Erase All выдаётся сообщение: Warning Message: System information will be eliminated after erase all !!! (Предупреждение: системная информация будет ликвидирована после установки режима «удаление всего» !!!)
Переходим в правое окошко Flash Options
10) Выбираем контроллер: SK6211BA
11) Выбираем Code Bank Ver: C080512A_F080516A (тот который выдала утилита по двойному клику на SAMPLE) Теперь я жду, что в секции Flash Selection должна появиться возможность выбора желаемой памяти - HY27UT088G2A, но этого не происходит.
В чем же причина? Возможно в версии утилиты! Ведь в прошивке указана версия: PDT Version: SK6211_PDT_20080616_BA, а я пользуюсь SK6211_20090828! Идем по пути выбора ч/з флэшлист. Находим дату - 02.04.2008, но названия с такой датой в списке не нахожу и версии Code Bank с ближайшей датой тоже не подходят!
Предположение с соответствием даты из флэшлиста отпала. Помог только полный перебор! При выборе C090828A_F090828A утилита дала возможность выбора желаемой памяти!
12) Далее выбираем Channel Mode: Single
Больше ничего не меняем.
Жмем Save
Получаем статус READY
Теперь утилита «готова» прошить флэшку.
Жмём Auto-LLF
3. Разбор ошибок...
Здесь обсуждается создание CD-раздела на этом контроллере