Progress28.ru

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Прошивка флеш памяти

ПЕРЕПРОШИВКА FLASH И EEPROM

В последнее время, снова как и раньше, мне пришлось частично вернуться к самозанятости по ремонтам электроники. Получив на основном месте работы избыток свободного времени, правда немного в ущерб стабильности дохода, получил взамен хорошую возможность развиваться как мастер-ремонтник. Сотрудничаю параллельно с маленькой мастерской по ремонту электроники, находящейся в проходном месте, как совместитель, плюс выкупаю технику на Авито и Юле, привожу в норму и реализую там же. Через мои руки проходит много материнских плат, блоков питания АТХ, ЖК мониторов и ТВ, и другой электронной техники.

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

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

Микросхема EEPROM SMD

Зачастую нам даже не приходится браться за паяльник для того чтобы совершить перепрошивку, достаточно просто использовать специальную клипсу для прошивания, подключающуюся к программатору. Но здесь есть один важный нюанс, который касается перепрошивки микросхем 24 и 25 серии, соответственно EEPROM и Flash памяти.

Первая (моя) версия программатора

Flash память 25 серия, часто используется для хранения прошивки BIOS устройств, таких как материнские платы, видеокарты, цифровые приставки, недорогие ЖК ТВ и современные мониторы. Так вот, особенность прошивания микросхем без выпаивания заключается в том, что иногда прошиваемое устройство у нас запитывается по линии 3.3 вольта через клипсу для прошивания. И если материнские платы можно шить обычно без выпаивания микросхемы, за редким исключением, то роутеры, на которых кстати установлена точно такая же микросхема памяти, в большинстве случаев, по крайней мере на современных моделях, таким способом прошить уже проблематично.

Но если будет очень нужно есть один способ про который я читал в интернете: он заключается в двойном запитывании микросхемы BIOS, то есть мы сначала включаем питание устройства и микросхема запитывается штатно от блока питания устройства, а затем подключаем клипсу программатора к прошиваемой микросхеме и подключаем программатор к порту USB.

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

Вторая версия программатора

Про худшее, короткое замыкание в USB порту, с последующим возможным выходом подгоранием Южного моста, я стараюсь не думать. Которое все же очень маловероятно, так как в программаторе используется буферная микросхема и в случае форс-мажора, скорее всего все ограничится только ее сгоранием. Причем даже если вы захотите использовать этот способ, у вас не будет 100 процентной уверенности в правильности сохранения Бекапа прошивки перед перепрошивкой устройства, так как во включенном устройстве на выводах микросхемы в момент сохранения прошивки может быть какая-то активность.

роутер микросхема с прошивкой

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

Но как быть если у вас в мастерской нет паяльного фена? В таком случае сплав Вуда или Розе нанесенный на все ножки, с целью снижения температуры плавления припоя, с обоих сторон микросхемы, и обычный паяльник типа ЭПСН 40 ватт, помогут вам. Микросхема буквально отлетает от платы в два касания паяльника, попеременно прогревая обе стороны микросхемы.

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

Если же по каким-то причинам сохраненный ранее кем-то дамп найти не удалось, встречал в интернете на специализированных сайтах по ремонту электроники рекомендацию сохранить родной дамп EEPROM памяти, очистить микросхему и затем залить снова родной дамп. Не совсем понятно в чем смысл этой процедуры, но видимо раз люди пишут, это все таки имеет смысл.

Цифровая приставка — микросхема с прошивкой

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

Читать еще:  Онлайн тест видеокарты radeon

Стоимость микросхем EEPROM памяти

Это касается как микросхем Flash, так и EEPROM памяти. Причем микросхемы EEPROM памяти, так как имеют очень небольшой объем, стоят новые в радиомагазине копейки. Большинство микросхем как 24, так и 25 серии, имеющие одинаковые объем и напряжение питания, являются взаимозаменяемыми. То есть теоретически вы можете демонтировать микросхему Flash 25 серии объемом 4 МБ с нерабочего роутера и восстановить с ее помощью цифровую DVB-T2 приставку с микросхемой, например, погоревшей из-за грозы.

Как минимум слет прошивки после грозы на подобных приставках, имеющих внешние ДМВ антенны, которые часто устанавливают в частных домах за городом, там, где прием сигнала не уверенный, очень частое явление.

Подведём итог

В данной статье все нюансы восстановления прошивки устройств разобрать просто не возможно, но могу сказать, что перепрошивка программатором это один из самых легких видов ремонта, не требует вложений в ЗИП, по крайней мере дорогостоящий.

Прошивки мониторов на сайте

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

Прошивка flash-памяти 25xxx через программатор USBasp

Микросхемы флеш-памяти eeprom серии 25xxx широко применяются в микроэлектронике. В частности, в современных телевизорах и материнских платах в 25xxx хранится прошивка биоса. Перепрошивка 25xxx осуществляется по интерфейсу SPI, в чем и заключается отличие этих микросхем от флеш-памяти семейства 24xxx, которые шьются по i2c(квадратная шина).

Соответственно, для чтения/стирания/записи 25xxx нужен SPI-программатор. Одним из самых дешевых вариантов программаторов для этой цели является USBasp, который стоит смешные деньги- с доставкой всего около 2$ на ебее. В свое время я купил себе такой для программирования микроконтроллеров. Теперь мне понадобилось прошить не микроконтроллер, а SPI-флеш и решено было им воспользоваться.

Оказалось, что сам по себе USBasp с оригинальной прошивкой такую память не шьет, но отечественный программист с ником Tifa (низкий поклон ему и долгих лет жизни) модернизировал прошивку USBasp специально для обеспечения возможности работы с флеш-памятью. Постоянная ветка обсуждения альтернативной прошивки USBasp от Tifa, связь с автором и ссылки на файлы тут: http://forum.easyelectronics.ru/viewtopic.php?f=17&t=10947

Забегая вперед скажу, что прошивка от Tifa работает, микросхемы 25xxx шьются. Кстати, кроме 25xxx, модифицированный программатор рассчитан на работу с 24xxx и Microwire.

1. Перепрошивка USBasp

Сначала нужно замкнуть контакты J2:

Лично я не просто замкнул, а впаял в контакты переключатель:

При замкнутых контактах J2 (это у меня переключатель в положении вправо) USBasp переходит в режим готовности к перепрошивке.

Сам себя USBap перепрошить не может, поэтому нужен еще один программатор. USBasp как бы оказывается в положении хирурга, который не может сам себе вырезать аппендикс и просит друга помочь. Для перепрошивки USBasp я использовал самодельный программатор AVR910, но для одного раза можно по-быстрому за пару минут спаять программатор «5 проводков», который состоит всего-лишь из одного разъема LPT и 5 резисторов.

Подключаем программатор к USBasp:

Теперь идем на форум альтернативной прошивки от Tifa, в самом верхнем посте находим и качаем архив с последней прошивкой и ПО.

Находим там файл mega8.hex, это и есть альтернативная прошивка для USBasp.

Запускаем CodeVisionAvr (я использую версию 2.0.5), выставляем настройки программатора: Settings-> Programmer.

Устанавливаем настройки записи: Tools->Chip programmer. Выбираем чип Atmega8L, именно такой стоит на USBasp. Фьюзы не выставляем- те, что надо, уже прошиты в чипе. Остальные настройки оставляем по умолчанию.

Стираем старую программу USBasp: Program-> Erase chip.

Открываем файл прошивки mega8.hex: File-> Load flash.

Перепрошиваем USBasp: Program-> Flash.

Если прошла запись и не выдало сообщение об ошибке, значит альтернативная прошивка благополучно прошита в USBasp. Теперь USBasp может не только шить AVR-микроконтроллеры, как раньше, но еще и работать с флеш-памятью. Размыкаем контакты J2, что бы USBasp снова перешел в режим программатора.

Теперь проверим, видит ли Windows 7 x86 этот программатор. Вставляем USBasp в USB и… система пишет «USBasp не удалось найти драйвер». Понятно, нужно установить драйвер. Но драйверов в скачанном на форуме архиве нет, их нужно скачать на родном сайте USBasp тут, оригинальные драйвера подходят и для модифицированного программатора. Скачали, установили, Win7 увидела программатор, все ок. Впрочем, я программирую микроэлектронику на ноутбуке с WinXP, она тоже после установки драйверов видит программатор.

2. Площадка для подключения USBasp к микросхеме 25xxx DIP

Теперь нужно подготовить площадку для программирования 25xxx. Я это сделал на макетной плате по такой схеме:

3. Прошивка микросхем 25xxx через USBasp

Для прошивки 25xxx через модифицированный USBasp используется программа AsProgrammer, которая тоже есть в архиве.

Для примера, поработаем с микросхемой Winbond 25×40. Запускаем AsProgrammer, ставим режим работы SPI и выбираем тип микросхемы: Микросхема-> SPI-> Winbond->…

… и видим, что W25X40 в списке нет. Что же, тогда заполним параметры микросхемы вручную. Находим мануал на Winbond 25X40 и там на странице 4 видим такие параметры:

Эти параметры вносим сюда:

Читать еще:  Freenas запись iso на флешку

Подключаем USBasp к компьютеру и микросхеме Winbond 25×40:

С помощью кнопок «прочитать», «записать», «стереть», проверяем работу программатора:

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

Благодаря прошивке от Tifa дешевый китайский программатор USBasp теперь умеет работать с микросхемами flash-памяти eeprom 25xxx. Теоретически еще может работать c 24xxx и Microwire, но я проверил только работу с 25xxx.

UPD1:
Оказывается, такую же прошивку можно записать и в программатор AVR910. Тогда он тоже будет работать с flash-памятью 25xxx: Программатор ISP памяти из AVR910.

48 комментариев: Прошивка flash-памяти 25xxx через программатор USBasp

Доброго времени!Подскажите,собрал этот программатор,опробовал на памяти 24С04,всё пишется,стирается,читается,в общем отлично,но есть вопрос:в этом программаторе обозначения выхода как на Атмелки,а тут память,у неё по даташиту другое обозначение ног,мне нужно прочесть микросхему 95128,как её правильно подключить,чёт толком не нашол ни чего.Спасибо.

Вдогонку:часом платки переходника под память нет?

95128 это еепром 25ххх в корпусе SOIC. Схема подключения к программатору такая же, как и у микросхемы 25×40 DIP, которую я указал в статье. На счет переходника не знаю.

Спасибо за отзыв,просто у меня программатор самодельный,контроллер стоит в нём в SMD корпусе,по даташиту у микросхемы 95128 по ножкам другое обозначение чем в программаторе,в программаторе выходы:miso,mosi,sck,reset,плюс и минус мне понятно,а вот на микрухе мне не понятно как их подключать,в принципе с микроконтроллерами не плохо знаком,а с такой памятью впервые сталкиваюсь,не хочется убить родную микросхему не правильным подключением,хочу вычитать ПИН код со своего BSI,для привязки новых ключей.На сайте чья прошивка для этого программатора зарегистрировался,а активизироваться не могу,на имейл не приходит письмо,вот и пришлось здесь спросить.

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

Вывод: распиновка указанной в статье микросхемы 25X40 соответствует вашей 95128, обе они еепром 25ххх а значит и схема подключения будет одинакова.
Пробуйте, удачи.

И ещё,внутрисхемно я смогу прочитать,или нужно выпаивать?

Прошивка флеш памяти

Вообще не знаете, как пользоваться программатором?
Эта подробная инструкция о том, как прошить микросхему памяти программатором для «чайников». Она поможет даже тем, кто абсолютно не разбирается в электронике и видел программатор только на картинках или фото.

Итак, для начала несколько распространенных заблуждений:
1. Перепрошивать микросхемы памяти умеют только профессионалы, потому что программатор — это сложное устройство.
Большинство современных программаторов действительно собраны из множества радиокомпонентов и/или построены на базе микроконтроллеров. Однако вовсе не обязательно собирать программатор самостоятельно — можно купить готовый.
2. Программатор — дорогостоящее устройство. Если вы решили купить профессиональный универсальный программатор, цена его может оказаться не оправданной даже при заказе напрямую из Китая. Хотя в большистве случаев продвинутый универсальный программатор вам не понадобится, достаточно купить простой и дешевый CH341A

Обязательно ли выпаивать микросхему памяти, чтобы её «прошить»? Это зависит от устройства, в котором она расположена. Во многих случаях микросхема памяти не припаяна к плате напрямую, а находятся в специальной панельке.
Таким образом, чтобы запрограммировать микросхему памяти вам понадобиться всего лишь:

1. Посмотреть внимательно на то, где расположен ключ микросхемы памяти — это своего рода метка показывающая, как (какой стороной) установить чип.
Обычно ключ микросхемы памяти — это точка или выемка на её корпусе. По ней и определяется расположение первого вывода.
На печатной плате обычно также есть соответствующая метка — перед тем как доставать/выпаивать микросхему убедитесь, что ключи (метки) совпадают!

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

Итак, если у вас возник вопрос, как правильно вставить микросхему в программатор CH341A, посмотрите прежде всего на то, какой серии она соответствует — что написано на её корпусе!
Ключ метка микросхемы должна соответствовать ключу метки программатора (см. фото).

Обратите внимание, что в зависимости от версии/модификации программатора CH341A расположение микросхемы в панели может отличаться и быть не таким как в софте (программе) для CH341A.
Ориентируйтесь прежде всего по ключам-меткам на корпусе программатора и микросхемы!

3. Важно знать, что CH341A может работать в двух режимах, поэтому обязательно убедитесь, что перемычка (джампер) программатора CH341A стоит в положении (1-2) — режим программатора, а не (2-3)- режим USB-UART конвертера!

4. После фиксации микросхемы в панельке программатора вставить его в USB порт — напрямую или через USB удлинитель.

5. Запустить программу (софт) для CH341A. Проверить правильно ли опознан программатор и «видит» ли его программа. Если да, то в строке вы можете увидеть надпись «Device state: connected», то есть «Состояние устройства: подключено»!

6. Если программа запущена не в режиме администратора, может появится сообщение, что драйвер не найден или установлен некорректно!

Хотя в большинстве случаев программатор работает нормально и так, то есть запускать его софт с правами администратора нет необходимости!
Внимание: файл запущенный от имени администратора может сделать с вашим компьютером всё, что угодно! Никогда не запускайте программы, которым не доверяете, от имени администратора!

Читать еще:  Перевод флешки в тестовый режим

7. Выбор микросхемы через интерфейс программатора. Удобнее и быстрее найти её через поиск, нажав на кнопку «Chip Search».

Микросхема найдена в списке(см. рис.).

Проверить, записаны ли в неё данные, или микросхема пустая можно через пункт меню: «Operate» -> «Blank Check».

Сообщение «Chip Main Memory are Blank» буквально «главная память чипа пустая», означает, что никаких полезных данных в микросхеме не содержится!

Работу с программатором микросхем памяти можно разделить на несколько видов:
— так называемый бекап (backup) — это создание и сохранение резервной копии данных. Считать и сохранить содержимое большинсва микросхем памяти программатором элементарно просто.

Для программатора CH341A в меню его программы есть пункт «Read chip» — прочитать чип (микросхему).

После того, как содержимое микросхемы памяти считано, его легко сохранить в файл, выбрав пункт «File» -> «Save» или просто нажав одновременно две клавиши Ctrl+S.

При сохранении выбрать для файла любое осмысленное имя (лучше латиницей)! Расширение дописывать не нужно!

Программа для программатора CH341A добавит его сама!

— очистка (стирание) памяти микросхемы. В меню программы CH341A выбрать пункт «Erase Сhip» — стереть чип!

— запись файла «прошивки» в микросхему памяти состоит из нескольких действий:
1. Выбор файла с «прошивкой» через пункт меню «File» -> «Open» (открыть файл).

Выбрать файл с подходящим расширением, например сохраненный ранее backup файл «прошивки»

2. Запись данных кнопкой «Write Chip».

Проверка правильности записи файла «прошивки» выполняется нажатием кнопки «Verify Chip».

Если «прошивка» загружена правильно — содержимое данных из файла и микросхемы будут одинаковые! После успешной проверки появится сообщение «Chip Main Memory and buffer same», то есть в буквальном переводе «главная память чипа и буффера совпадают»!

Как видите, «прошить» микросхему памяти программатором совсем не сложно. Купить заказать программатор CH341A можно здесь.

Программирование SPI Flash с помощью Arduino и SD-карты

Предыстория

Во время очередной уборки был случайно выключен удлинитель, к которому были подключены работающие системный блок и монитор. Системный блок состоит из:

  • материнская плата — ASRock B75 Pro 3
  • процессор — Intel Core i5-3570
  • блок питания — Corsair CX750M

После включения системник начал издавать пять противных писков, что вроде как соответствует неисправности процессора. Процессор, судя по Яндекс.Маркету, на данный момент стоит от 11000 руб. Покупать довольно накладно, а недорогой, но слабенький не хочется. В общем, немного испугался…

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

В первую очередь подключил другой старенький БП — комп не запускается.

Для дальнейших проверок принес домой автомобильный комп. Состав:

  • материнская плата — ASRock B75M-ITX
  • процессор — Intel Pentium G640T

Как хорошо, что компоненты оказались взаимозаменяемыми.

Вытащил из автомобильного компа процессор, вставил его в домашний — комп не запускается. Но появилась надежда, что процессор все таки цел, а неисправна материнка, которая немного дешевле (хотя новые на чипсетах не H61 и H67 — дефицит).

Далее домашний процессор вставил в автомобильный комп — комп заработал. Следовательно, процессор живой, а проблема в материнке. Начал грешить на BIOS (Winbond 25Q64BVAIG).

Собственно, программирование

Хорошо, что микросхема BIOS не впаяна, а на обычной панельке DIP-8. Программатора у меня нет, заказывать в Китае и ждать месяц — не выход. Решил сделать программатор из ноутбука жены и имеющейся в наличии Arduino Nano. Покопался в интернете… Везде в основном прошивка заливается через COM-порт, я же решил прошивать с карты памяти (так вроде гораздо быстрее).

Набросал схему подключения:

Собрал все на макетной плате:

Тип и объем карты памяти, способ ее форматирования, имя файла должны соответствовать требованиям библиотеки SD Arduino.

Для начала набросал скетч, который считывает содержимое SPI Flash и записывает его в файл на карту памяти, попутно вычисляя контрольную сумму по методу Checksum-32, т.е. простым суммированием.

Запустил скетч, получившийся файл сравнил с оригинальным BIOS — получилось около 140000 несовпадающих байт.

Далее написал скетч, который читает файл с карты памяти и записывает его на SPI Flash, предварительно стирая чип.

Запустил, подождал, скетч вывел контрольную сумму, она совпала с контрольной суммой оригинального файла. Но это контрольная сумма файла на карте памяти, мне же нужна контрольная сумма содержимого SPI Flash.

Можно было использовать первый скетч, но написал третий, который только считает контрольную сумму содержимого SPI Flash по тому же алгоритму.

Контрольная сумма SPI Flash совпала с контрольной суммой оригинального файла.

После вставки прошитой микросхемы BIOS в домашний комп — он благополучно заработал.

В среде Arduino IDE необходимо установить библиотеку SPIFlash через управление библиотеками.

Контрольную сумму вычислял с помощью HEX-редактора HxD.

PS: Первоначально в качестве SD-модуля использовал вот такой:

Но с ним были частые глюки, не инициализировалась SD-карта. Помогало «горячее» переподключение самой SD-карты при подключенной к компу Arduino.

PPS: Вместо резисторов пробовал подключить двунаправленный конвертер сигналов:

Но с ним схема не заработала.

Ссылка на основную публикацию
Adblock
detector