Migera s home page, ремонт флешок на контролері smi

Довелося реально і практично зіткнутися з даним питанням на прикладі однієї з моїх флешок. Нею виявилася Corsair Voyager GT 16Gb - та, що в гумовому корпусі і з червоними вставками. В експлуатації вона була недовго - близько півроку, і то в малоактивною (в порівнянні з іншими флешками, котрі я використовую спільно для зберігання різного виду даних), проте вона виявилася першою «вийшла з ладу» і поховала в собі дані (інші, причому набагато старіші флешки безглючная працюють до цих пір). Брався цей Корсар не тільки через прикольного гумового корпусу і розумної ціни за даний обсяг, але і в першу чергу за обіцяну високу швидкість його роботи.







Невеликий ліричний відступ. Треба розуміти, що у виготовленні будь-флешки беруть участь компоненти різних виробників. В цілому можна виділити три основні частини:

  1. «Інтелектуальна» електроніка - контролер і мікросхеми (одна або кілька) масиву флеш-пам'яті. Випускаються різними фірмами і продаються партіями не менше 1000 штук для тих, хто готовий ліпити з них різні девайси;
  2. Розробкою, виготовленням друкованої плати, а також вибором і запаюванням компонентів з попереднього пункту та іншої супровідної «рассипухі» - займається вже інша фірма. Фактично вона і робить, в нашому випадку флешку. Це т.зв. OEM-виробник;
  3. Зібрану і вже формально готову до роботи флешку (у вигляді хустки з мікросхемами, роз'ємом і т.п.) потрібно ще заштамповано в корпус, покласти в красиву упаковку, укомплектувати будь-якої супровідними документами і т.п. На корпусі флешки ми бачимо лейбл саме цієї фірми. Додатково до цього «електроніка» флешки має можливість кастомізації на предмет «увічнення» імені (коду) її виробника. І, зрозуміло, останній доклав руку (виробник корпусу і упаковки) залишає там свій нейм.

Зрозуміти на якому залозі реально зібрана флешка, на вскидку - не просто. Програмні методи не завжди дають достовірні результати, єдиний точний - розібрати і подивитися. Це часто є нетривіальним завданням. Корпуси часто зроблені так, що защелкнув їх раз, розчепити їх без пошкоджень вже просто неможливо.

І так розглянемо докладніше, з чого складається будь-яка флешка. А пристрій нехитро, адже дійсно, розмір то не великий. Основними компонентами є контролер і масив флеш-пам'яті, крім всякої несуттєвою рассипухі ще можна відзначити стабілізатор напруги (з 5В з USB-порту отримує близько 3В, в залежності від моделі контролера і пам'яті) і кварцовий резонатор (хоча це вже дрібниця). Контролери, як і мікросхеми пам'яті, випускаються абсолютно різними виробниками - питанням добірки «пари» займається складальник (див. П.2). У нашому випадку мова піде про компанії Silicon Motion Inc і її передовому контролері SMI-324, застосованому у флешці Corsair Voyager GT. Треба сказати, що після випадку, підщепі мене на описані нижче дослідні роботи і написання даного документа, моє ставлення до продукції SMI впав нижче плінтуса - що не говори, а контролери Alcor набагато надійніші і передбачувані. Але повернемося до теми. Які функції виконує контролер флешки - думаю зрозуміло. Що вдає із себе контролер, з якого боку він доступний кінцевому користувачеві, оснащеному інженерним підходом до техніки (не секрет, що для «домогосподарки» флешка - це просто «чорний ящик» - і все)? На просторах інтернету вдалося знайти таку ось схему:


Нічого несподіваного нам ця схема не підносить - все гранично просто і зрозуміло. Контролер спеціалізований, крім ядра (процесора, пам'яті програм і даних) містить периферію, призначену для обміну даними з USB-портом з одного боку і мікросхемами масиву флеш-пам'яті з іншого. Тип і обсяг підтримуваних мікросхем пам'яті, і їх кількість, а також можливі швидкісні характеристики визначаються можливостями контролера. По-хорошому розробник (збирач) флешки повинен оптимальним чином враховувати і підбирати ці компоненти для свого вироби - на жаль, але це не завжди це так.

Розробник контролера, зрозуміло, подбав про «гнучкості» свого пристрою, забезпечивши можливість поновлення firmware ( «прошивки»). Прошивка зберігається в спеціально відведеній для цього флеш-пам'яті контролера, хоча не виключені можливості застосування для цього, як окремої маленької (8-ми ногою) мікросхемке пам'яті, так і використання частини основного масиву флеш-пам'яті. Крім прошивки існує блок конфігурації, який також може зберігатися в різних місцях (див. Вище). Прошивкою, мабуть, визначається підтримка різних мікросхем пам'яті, режими їх роботи, можливо загальні алгоритми функціонування пристрою. Блок конфігурації зберігає інформацію про конкретну модель використання флешки як такої (тип емульованого накопичувача, тип і режим роботи мікросхем масиву пам'яті, розмір і кількість розділів даних і їх тип, налічіеbad-блоків і їх розташування, інші параметри роботи контролера, «естетична» інформація про пристрої і його виробника).

Використання флешки на рівні «домогосподарки» не передбачає, напевно, навіть її форматування. Для користувача є, наприклад такі утиліти як «HP USB Disk Storage Format Tool» дозволяють відформатувати накопичувач в будь-яку, доступну операційній системі, файлову систему (FAT, FAT32, exFAT, NTFS). Для «просунутих» користувачів, часто на що йде в комплекті до флешці CD-диску, є утиліти по «розбивці» флешки на кілька (як правило два) розділів (на рівні контролера флешки, а не на рівні операційної системи), причому часто є можливість захистити один з них паролем. У подібних утиліти іноді зустрічається функція «низкоуровневого» форматування (з перевіркою на справність «поверхні диска» - осередків масиву даних).

Але є утиліти ще більш «низького» - сервісного рівня роботи з контролером флешки. Найбільш повну колекцію утиліт подібного роду і для різних контролерів містить сайт flashboot.ru, який їх, мабуть, збирає, в тому числі, з мембер-зон тематичних китайських форумів (інші місця їх розташування Гуглу не відомі).

Документацію на більшість контролерів знайти практично не реально, зате можна знайти інформацію про мікросхемах пам'яті.

Ну ось ми нарешті і наблизилися до практичної частини опису. Мені, як інженеру, завжди цікаво «покопатися» в настройках будь-якого девайса, не тільки з метою їх оптимізації, а й з метою розуміння принципу його функціонування (в нюансах). Натрапивши якось на сайт flashboot.ru я неодмінно скачав сервісні утиліти для всіх наявних у мене флешок, і по можливості «приміряв» кожну. Corsair Voyager GT не стала винятком. Виявилося, що прошивка йде в комплекті з черговою версією утиліти (а на flashboot.ru поновлення з'являються регулярно) була новіше тієї що у флешці - зрозуміло, було вироблено успішне оновлення. Правда «погоди» ніякої я від цього не помітив. Якщо чесно, то оновлюватися потягнуло не просто так. Як я вже говорив, флешка Corsair Voyager в цілому, і GT зокрема, була обрана в основному через високу обіцяної швидкості - до 20Мбайт / с на запис і до 30Мбайт / с на читання. На практиці все виявилося набагато скромніше, хоча і з лишком перевищувало показники інших флешок. Все б нічого і поступово швидкість все знижувалася і знижувалася. Я експериментував і з форматуванням різними утилітами і файловими системами, і з розміром кластера - результат сильно не змінювався (початкової швидкості нової флешки вже не було). Оновили прошивку - швидкість трохи зросла, але ненадовго. Сервісна утиліта теж не змогла мені дати відповіді на це питання - на цьому я тему і закрив. Швидкість Корсара впала настільки, що стала порівнянна зі швидкістю будь-який інший флешки середнього рівня.







А «облом» стався, як зазвичай раптово, не попередивши про необхідність створення резервної копії. На жаль, ніяких рекомендацій щодо уникнення подібного надалі дати не можу - бо нічого нештатного з флешкою ​​не відбувалося, експлуатувалася вона поруч з іншими. Просто при черговому включенні виявилося, що диск «Не Новомосковскется», а вся «видима» інформація про виробника та пристрої (інформаційні рядки) збилася до нікому «стандартного вигляду» (інформація про контроллер). Обсяг диска нульовий. і все. Перше, що спало на думку - оновити злетіла конфігурацію і для вірності прошивку, благо профіль для сервісної програми у мене зберігся. Що і було зроблено - результат нульовий. Все по-старому. Тоді трохи почухавши ріпу, згадавши теорію і колишні дослідження в цій області були підправлені настройки, хочу зауважити що тоді я ще розраховував «витягнути» втрачені дані і всі галочки, що натякають на їх очищення, знімав. Але позитивного результату не було. Тим часом в ході чергового циклу реконфигурирования і прошивки утиліта висне, а флешка. дохне. Тепер уже при її підключенні в системі з'являлося лише «невідомий пристрій» - адже ідентифікатори vid і pid повідомлялися нульові.

Далі частина технічна. Першою і вдалою спробою стало замикання контактів 29-30 на чіпі пам'яті з боку резонатора (контролер і другий чіп - на звороті). У підсумку в системі з'явився пристрій з ідентифікаторами відмінними від нуля. А з огляду на те, що в ході попередніх танців дрова для сервісного режиму контролера вже стояли - вони відразу і «підчепити», проявивши флешку у вигляді «SMI Factory Driver». Для цього драйвера і режиму передбачена окрема «галка» в сервісній програмі. Полегшало, сервісна програма знову стала бачити флешку. За інформацією про пристрій і дампи поточної прошивки стало видно, що пам'ять прошивки повністю обнулена, здавалося б - залити нову і т.п. Але ж ні, помилки стали мене переслідувати при будь-якій спробі що-небудь записати на флешку (прошивку, конфиг, тестовий шаблон). Перепробував багато, і різні версії сервісних утиліт (зупинившись все ж на останній - I0414), і намагався засунути прошивку для іншого контролера, і сконфігуріть на різні мікросхеми пам'яті - результат однаковий - зміни не зберігаються, а контролер «без голки» так і відписується нулями . Перепробував різні комп'ютери і режими USB (1.0 / 2.0). Цікавим моментом стало, що один з комп'ютерів навіть з проінсталленим драйвером «SMI Factory Driver» визначав флешку як накопичувач (з ім'ям контролера і нульовим розміром) - відповідно в програмі галку потрібно було знімати, але суті це не змінило. Вирішальним моментом виявилося інфа про пароль входу в режим Debug в сервісній програмі, який відкриває ще ширші можливості, ніж її штатні функції. Маніпуляціями в віконці Debug вдалося (майже випадково - тому що не з першого разу) домогтися того, що «сервісний режим» флешка стала вистачати і без «голки». Ну а далі в неї успішно лягла і прошивка і конфігурація. А далі справа техніки - закатали в неї правильні ідентифікатори (плюс інші настройки, підібрані мною для даної флешки), форматнул для вірності і вперед. УРА! Працює.

Звичайно, про відновлення даних мови не йде - хоча з іншого боку не ясно наступне: всі маніпуляції з прошивкою, конфігурацією і іншим відбуваються дуже швидко - за цей час не реально очистити весь масив пам'яті (послідовної записом) - але масив реально чистий! (Всі нулі). З іншого боку якщо у мікросхем пам'яті є опція стирання великими блоками - то можливість швидкого обнулення є. в іншому випадку варто припускати про наявність таблиці використання блоків масиву, і якщо блок позначений невикористаним, то він просто транслюється нулями, а не Новомосковскется.

Детальніше про мій екземпляр флешки, який визначається не зовсім так, що являє собою насправді (порівняння за результатами розтину):

Лицьова сторона корпусу і плати:

Зворотний бік корпусу і плати:

Інше визначення типу пам'яті, мабуть, пов'язано з тим, що перші цифри ідентифікаторів по базі з файлу flash_324BC.dbf у них однакові, відбивається назва то, що перше в списку (а ось що реально шиється при конфігуруванні - невідомо, так що краще тут не грішити - для надійності).

Тепер що пов'язано з утилітою. Перш за все, коротко, опишемо алгоритм взаємодії і структуру вікон. І, найголовніше - для доступу до сторінки «Setting» використовується пароль «320». на сторінку «Debug» - «1111».

Не зайвим буде одразу встановити драйвер сервісного режиму контролера, запустивши для цього інсталятор з папки, що відповідає вашій операционке (наприклад. \ UFD_MP \ FactoryDriver \ WinXP). Перша кнопочка встановлює драйвер сервісного режиму контролера флешки, друга видаляє його, третя - нічого не робить. Пара кнопок внизу активує або деактивує якусь фішку, для нашого контролера (SMI 324BC) не застосовується.

Базове вікно програми виглядає наступним або подібним чином:

Тут найголовніше щоб прога побачила вашу флешку на одному з віртуальних портів в центральній частині вікна, а також панелі внизу - для цього потрібно потиркать кнопочку «Scan USB», не забуваємо, що в разі використання сервісного драйвера «SMI Factory Driver» (коли контакти Коротя голкою) ставити галку «Factory Driver and HUB». Якщо спроби марні, незважаючи на те, що в диспетчері пристроїв все шляхом, драйвера встановлені і функціонують коректно, то вибираємо з меню розділ «Config HUB» і бачимо наступне:

Тут потрібно тиснути на «Scan USB (Automatic)» до появи нулика на панелі порту. Після чого тиснемо «Ok» і в базовому вікні ще раз тиснемо «Scan USB». Не виключений випадок, коли пристрій буде бачитися на декількох портах відразу - в цьому випадку можна спробувати використовувати перше з них.

Подвійним кліком по рядку або одинарним по панелі з інфою про виявлену флешці можна викликати вікно з детальною інформацією по даній флешці:

Тут доцільно кнопками «Save. »Зберегти різну інформацію про вашу флешці, найбільш актуально збереження поточної прошивки -« Save ISP », якщо вона, звичайно, присутня, а не вбита геть. Поточна версія прошивки відображається в полі «ISP Version».

Повернемося до базового вікна. Натискання на кнопку «Setting» і введення пароля «320» дозволяє зробити настройки, попередньо завантаживши деякі (або попередньо збережені) з будь-якого файлу налаштувань. На підставі даних з якого, буде відображена деяка конфігурація:

Інші параметри вікна «Setting» не істотні в цілому, любо не застосовні для даного контролера зокрема і з цієї причини мною тут не описуються.

Кнопка «Debug» і введення пароля «1111» викликає відповідні вікно, в якому можна зробити ще багато чого цікавого. Всі операції, на відміну від віконця «Setting», виробляються відразу!

У людини, що має уявлення про мікроконтролерах і іншої мікропроцесорній техніці призначення кнопочок в віконці «Debug» не повинно викликати істотних питань, і він знайде тут багато цікавого. Всім іншим немає необхідності вникати в призначення всіх кнопок. Скажу лише, що для відновлення флешки з убитої прошивкою (віддає всі нулі в обох ідентифікатори, і розпізнається тільки в сервісному режимі після замикання контактів) - потрібно виконати наступну послідовність дій:

  • 1. Тиснемо кнопу «Pretest» (4-а в другій групі вертикально розташованого ряду);
  • 1.1. Вибираємо шаблон для претесту, що знаходиться в тій же папці, що і прошивка (для нашого випадку. \ UFD_324BC \ SM324BCPTEST_4K_TWIN.BIN);
  • 1.2. Чекаємо, поки відпрацює замовлена ​​функція. Світлодіод на флешці при цьому процесі обов'язково повинен блимати (інакше, мабуть флешка з якоїсь причини нас «не зрозуміла» - потрібно повторити операцію підключення і т.д. спочатку);
  • 2. Тиснемо кнопку «Erase All» (найнижчий ряд). Ініціюється процес, хід якого відображається не тільки миготінням світлодіода на флешці, але прогрес-баром праворуч від кнопки - операція займає кілька секунд (якщо все сталося миттєво, значить щось не те, повторюємо все спочатку);
  • 3. Закриваємо вікно «Debug» і переходимо до «Setting» - виробляємо необхідне конфігурація (див. Пояснення вище), не забувши вказати правильний тип контролера і пам'яті. Файл прошивки буде обраний автоматично, хоча можна задати вручну. Використання опції «Pretest» в більшості випадків обов'язково (без неї не проходить), а в списку справа рекомендується вибирати «No Erase All». Рекомендується, також, форматувати флешку в FAT32;
  • 4. Зберігаємо конфігурацію (краще в файл) і тиснемо «Start». після успішного завершення флешку «пересмикнути», а сервісний драйвер деінсталювати (обов'язково).

Ось ніби і все.
На прохання Новомосковсктелей можливі доповнення.







Схожі статті