Искусство перешивки BIOS

Материал из Wiki.ROM.by
(Различия между версиями)
Перейти к: навигация, поиск
(Всё прошло благополучно, без видимых проблем и… тишина.)
м (Правки Santa (обсуждение) откачены к версии MmM)
 
(не показаны 37 промежуточных версий 10 участников)
Строка 1: Строка 1:
<blockquote>
+
{{TOCright|45%}}
<font color="#993366"> <i>Процесс перешивки биоса
+
:<font color="#993366"> ''Процесс перешивки BIOS в руках опытного&nbsp;- банальность, профессионала&nbsp;- искусство, а начинающего&nbsp;- трагедия.''</font>
в руках опытного - банальность, профессионала -  
+
искусство, а начинающего - трагедия.</i></font>
+
</blockquote>
+
  
==Часть 1. Для тех, кому лень читать, а хочется побыстрей прошить и забыть.==
+
==Часть первая. Для тех, кому лень читать, а хочется побыстрей прошить и забыть.==
 
===Мифы.===
 
===Мифы.===
Не буду акцентировать вопрос на том, что такое биос,  
+
Не буду акцентировать вопрос на том, что такое биос, какие они бывают и зачем. Раз вы это читаете, значит, вам что-то уже известно. Потому начнём с обратного - развеем самые стандартные, почему-то непотопляемые мифы и заблуждения.
какие они бывают и зачем. Раз вы это читаете, значит  
+
 
вам что-то уже известно. Потому начнём с обратного  
+
# ''Шить биос нужно (лучше) только "своим" прошивальщиком (пример: Award - с помощью AwdFlash, AMI - AMIFlash).''
- развеем самые стандартные, почему-то непотопляемые  
+
 
мифы и заблуждения.
+
Бред. Однако некоторым сложно это понять и поверить - ведь на сайте производителя платы много всяческих грозных непонятных предупреждений (да ещё и на нерусском). Почему же так? Интересно - тогда дочитайте эту и прочитайте следующую часть. :)
1. <i>Шить биос нужно (лучше) только &quot;своим&quot;
+
 
прошивальщиком (пример: Award - с помощью awdflash,  
+
<ol start="2"><li>''Шить биос "на горячую" ('''[[Hot Swap]]''' - "хотсвапом") нужно (можно) только на точно такой же матери (таком же чипсете, с точно такой же флэшкой т.п.)''</ol>
AMI - amiflash).</i><br>
+
 
Бред. Однако некоторым сложно это понять и поверить  
+
Второе самое распространённое заблуждение. Имеет корни в незнании функционирования различных типов флэшмикросхем, которое, действительно, может накладывать некоторые ограничения на используемую для хотсвапа мать. Хотя если у вас есть другая точно такая же (только рабочая;)  
- ведь на сайте производителя платы много всяческих  
+
грозных непонятных предупреждений (да ещё и на нерусском).  
+
Почему же так? Интересно - тогда дочитайте эту и прочитайте  
+
следующую часть. :)
+
2. <i>Шить биос &quot;на горячую&quot; (hot swap
+
- &quot;хотсвапом&quot;) нужно (можно) только на точно  
+
такой же матери (таком же чипсете, с точно такой же  
+
флэшкой т.п.)</i><br>
+
Второе самое распространённое заблуждение. Имеет корни  
+
в незнании функционирования различных типов флэшмикросхем,  
+
которое, действительно, может накладывать некоторые  
+
ограничения на используемую для хотсвапа мать. Хотя  
+
если у вас есть другая точно такая же (только рабочая;)  
+
 
мать - это несомненный плюс.
 
мать - это несомненный плюс.
&nbsp;
+
 
 
===Прошивальщики.===
 
===Прошивальщики.===
Самыми популярными являются [[Awdflash]], [[AMIflash]] и [[Uniflash]]. Остальные являются специфичными для конкретной фирмы (например, для &quot;родных&quot; матерей от [[Intel]] либо [[Asus]] - свой, ибо другие могут не сработать).
+
Самыми популярными являются [[AwardBIOS Flash Utility|AwdFlash]], [[AMIBIOS Flash Utility|AMIFlash]] и [[UniFlash]]. Остальные являются специфичными для конкретной фирмы (например, для "родных" матерей от [[Intel]] либо [[Asus]] - свой, ибо другие могут не сработать).
  
 
Я не буду касаться расшифровки ключей - этой информации полно в интернете, я остановлюсь на том, какие из них включать.
 
Я не буду касаться расшифровки ключей - этой информации полно в интернете, я остановлюсь на том, какие из них включать.
  
<i>'''ВНИМАНИЕ''': запуск флэшера БЕЗ КЛЮЧЕЙ (т.е., соответственно, с оными по умолчанию) может привести к ПОВРЕЖДЕНИЮ биоса, даже если вы не собирались его перешивать, а лишь полюбопытствовали либо хотели сохранить текущую версию. Это крайне редкое явление и в основном касается некоторых версий amiflash, но оно точно имеет место (сам попадался и не раз:).</i>
+
'''''ВНИМАНИЕ''': запуск флэшера БЕЗ КЛЮЧЕЙ (т.е., соответственно, с оными по умолчанию) может привести к ПОВРЕЖДЕНИЮ биоса, даже если вы не собирались его перешивать, а лишь полюбопытствовали либо хотели сохранить текущую версию. Это крайне редкое явление и в основном касается некоторых версий amiflash, но оно точно имеет место (сам попадался и не раз:).''
  
<i>'''ДОПОЛНЕНИЕ''': запуск различных утилит (например, типа [[DMICFG]]), имеющихся на компактах прилагаемых к матплате (для &quot;настройки&quot; биоса) часто приводят к ситуации аналогичной предыдущему абзацу - повреждение биоса, даже если вы не собирались ничего делать, а лишь полюбопытствовали и ничего не перешивали.</i>
+
'''''ДОПОЛНЕНИЕ''': запуск различных утилит (например, типа [[DMICFG]]), имеющихся на компактах прилагаемых к матплате (для "настройки" биоса) часто приводят к ситуации аналогичной предыдущему абзацу - повреждение биоса, даже если вы не собирались ничего делать, а лишь полюбопытствовали и ничего не перешивали.''
  
 
====AWDFLASH.====
 
====AWDFLASH.====
 
Самый популярный, но не самый лучший.  
 
Самый популярный, но не самый лучший.  
 
Запускать с ключиками:
 
Запускать с ключиками:
  <b>awdflash</b> имя_прошивки <b>/cd/cp/py/sn/f/r</b>
+
  '''awdflash''' имя_прошивки '''/cd/cp/py/sn/f/r'''
 
В этом случае биос перешьётся без лишних вопросов (/py - Program=Y, /sn - Save=No, /f - не проверять от той ли платы это биос и биос ли это вообще:) и после окончания прошивки комп сразу перезагрузится (ключик /r - Reset, ежели не нужно - не писать). Ключи /cd/cp (Clear DMI, Clear PNP) настоятельно рекомендуются к ним можно добавить автоматический сброс CMOS (по умолчанию) - /cc.
 
В этом случае биос перешьётся без лишних вопросов (/py - Program=Y, /sn - Save=No, /f - не проверять от той ли платы это биос и биос ли это вообще:) и после окончания прошивки комп сразу перезагрузится (ключик /r - Reset, ежели не нужно - не писать). Ключи /cd/cp (Clear DMI, Clear PNP) настоятельно рекомендуются к ним можно добавить автоматический сброс CMOS (по умолчанию) - /cc.
 +
Если прошиваем не award bios (например ami), используем ещё и ключик nab: Work with not Award BIOS
  
 
====AMIFLASH.====
 
====AMIFLASH.====
 
Не такой популярный как awdflash, но в отличие от оного - самый лучший (даже несмотря на вышеупомянутые проблемы с некоторыми версиями при запуске без ключиков). Запускать с ключиками:
 
Не такой популярный как awdflash, но в отличие от оного - самый лучший (даже несмотря на вышеупомянутые проблемы с некоторыми версиями при запуске без ключиков). Запускать с ключиками:
  <b>[[amiflash]]</b> имя_прошивки <b>/b /n /-o /-c /-d /-r /v /-i /-k /-e /-g</b>
+
  '''[[amiflash]]''' имя_прошивки '''/b /n /-o /-c /-d /-r /v /-i /-k /-e /-g'''
 
Если нужно сохранить старый биос, запускать с ключиками:
 
Если нужно сохранить старый биос, запускать с ключиками:
  <b>[[amiflash]]</b> <b>/b /n /-o /-c /-d /-r /v /-i /-k /-e /-g/s</b>имя_прошивки
+
  '''[[amiflash]]''' '''/b /n /-o /-c /-d /-r /v /-i /-k /-e /-g/s'''имя_прошивки
 
:  ''После ключика '''/s''' - пробела быть не должно!''
 
:  ''После ключика '''/s''' - пробела быть не должно!''
 
Чтоб не набирать такую кучу ключей - не поленитесь, сделайте один раз .bat-файлик с содержимым типа:
 
Чтоб не набирать такую кучу ключей - не поленитесь, сделайте один раз .bat-файлик с содержимым типа:
Строка 58: Строка 43:
 
====Uniflash.====
 
====Uniflash.====
 
В данной части его рассматривать не буду, т.к. несмотря на его реальную продвинутость, он требует некоторой подготовки/опыта со стороны пользователя.
 
В данной части его рассматривать не буду, т.к. несмотря на его реальную продвинутость, он требует некоторой подготовки/опыта со стороны пользователя.
 +
(Однако стоит отметить, что его можно применять не только для программирования BIOS материнских плат, но и BIOS видеокарт, flash микросхем в сетевых картах)
  
 
===Особенности перешивки биосов на платах от Asus.===
 
===Особенности перешивки биосов на платах от Asus.===
 
Для перешивки асусовских плат не подойдут  
 
Для перешивки асусовских плат не подойдут  
&quot;стандартные&quot; прошивальщики, т.к.  
+
"стандартные" прошивальщики, т.к.  
<b>ВСЕ</b> асусовские биосы (начиная с самых  
+
'''ВСЕ''' асусовские биосы (начиная с самых  
 
древних Pentium1) блокируют обычные способы  
 
древних Pentium1) блокируют обычные способы  
 
перешивки. Для перешивки на таких матплатах  
 
перешивки. Для перешивки на таких матплатах  
придётся использовать фирменные_<em>асусовские</em>_утилиты.  
+
придётся использовать фирменные_''асусовские''_утилиты.  
Для самых старых плат - это <em>pflash</em>,  
+
Для самых старых плат - это ''pflash'',  
для более современных - <em>aflash</em> (хотя  
+
для более современных - ''aflash'' (хотя  
во многих случаях <em>aflash</em> подходит  
+
во многих случаях ''aflash'' подходит  
 
и для очень старых), для совсем новых - придётся  
 
и для очень старых), для совсем новых - придётся  
 
использовать утилиты под винду.
 
использовать утилиты под винду.
В случае <em>pflash/aflash</em> выражение  
+
В случае ''pflash/aflash'' выражение  
&quot;придётся использовать&quot; не совсем  
+
"придётся использовать" не совсем  
 
корректно, т.к., во-первых, они крайне удобны,  
 
корректно, т.к., во-первых, они крайне удобны,  
 
понятны, достаточно универсальны и, главное,  
 
понятны, достаточно универсальны и, главное,  
не пристают с вопросами, прошивая &quot;всё,  
+
не пристают с вопросами, прошивая "всё,  
что шьётся&quot;. :) Во-вторых, амифлэш всё-таки  
+
что шьётся". :) Во-вторых, амифлэш всё-таки  
 
можно использовать, хоть он и заканчивает  
 
можно использовать, хоть он и заканчивает  
 
работу с ошибками (точней не он, а dos4gw).
 
работу с ошибками (точней не он, а dos4gw).
Строка 88: Строка 74:
 
изощрённые меры для защиты биосов, обратной  
 
изощрённые меры для защиты биосов, обратной  
 
стороной медали которых являются иногда возникающие  
 
стороной медали которых являются иногда возникающие  
серьёзные проблемы с &quot;оживлением&quot;
+
серьёзные проблемы с "оживлением"
- плата может &quot;прикидываться&quot; дохлой  
+
- плата может "прикидываться" дохлой  
(&quot;00&quot; на POST-карте), флэшка - аналогично  
+
("00" на POST-карте), флэшка - аналогично  
 
(при попытках перешивки на других платах),  
 
(при попытках перешивки на других платах),  
 
хотя реально и один и другой будут совершенно  
 
хотя реально и один и другой будут совершенно  
Строка 100: Строка 86:
 
как другие стали его использовать совсем недавно)...
 
как другие стали его использовать совсем недавно)...
 
п.с. подобное в определённой степени (желательность  
 
п.с. подобное в определённой степени (желательность  
и/или обязательность использования &quot;родных&quot;
+
и/или обязательность использования "родных"
 
фирменных прошивальщиков) касается и некоторых  
 
фирменных прошивальщиков) касается и некоторых  
 
других производителей (как правило - известных).  
 
других производителей (как правило - известных).  
 
Например, многие платы от Abit также имеют  
 
Например, многие платы от Abit также имеют  
тонкости при программировании - тот же <em>Uniflash</em>,  
+
тонкости при программировании - тот же ''Uniflash'',  
 
вообще, предупреждает, что не дружит с этой  
 
вообще, предупреждает, что не дружит с этой  
фирмой...  
+
фирмой...
  
 
===Основные проблемы и сообщения об ошибках.===
 
===Основные проблемы и сообщения об ошибках.===
Строка 118: Строка 104:
 
- с двухмегабитными. В некоторых случаях, если производитель  
 
- с двухмегабитными. В некоторых случаях, если производитель  
 
не признаётся, что выпускал платы с биосы разных объёмов,  
 
не признаётся, что выпускал платы с биосы разных объёмов,  
это может быть свидетельством того, что плата &quot;левая&quot;
+
это может быть свидетельством того, что плата "левая"
 
(т.е., например, в подделке используется более дешёвая  
 
(т.е., например, в подделке используется более дешёвая  
 
флэшка большего объёма - 4Mbit вместо 2Mbit).
 
флэшка большего объёма - 4Mbit вместо 2Mbit).
  
====Прошивальщик по каким-либо причинам &quot;не соглашается&quot; прошивать биос, утверждая, что он не от этой платы или вообще не биос.====
+
====Прошивальщик по каким-либо причинам "не соглашается" прошивать биос, утверждая, что он не от этой платы или вообще не биос.====
  
 
Ещё более распространённая вещь. Однако с вышеуказанными  
 
Ещё более распространённая вещь. Однако с вышеуказанными  
&quot;секретными&quot; ключиками вас больше не будут  
+
"секретными" ключиками вас больше не будут  
 
посылать… почитать даташиты. :)
 
посылать… почитать даташиты. :)
  
Строка 134: Строка 120:
 
* всунутая хотсвапом флэшка (тип) не поддерживается самой матерью - см. дальше по FWH/LPC интерфейсам...
 
* всунутая хотсвапом флэшка (тип) не поддерживается самой матерью - см. дальше по FWH/LPC интерфейсам...
 
* просто битая флэшка - убедитесь ещё раз, что Вы вставили её правильно... ;)
 
* просто битая флэшка - убедитесь ещё раз, что Вы вставили её правильно... ;)
* флэшка - вовсе и не флэшка, а &quot;однократной записи&quot; либо вообще - с УФ-стиранием (с окошком). Верно, как правило, лишь для самых древних плат (до Pentium1) и можно определить по маркировке - она будет начинасть с цифр 27ххх .
+
* флэшка - вовсе и не флэшка, а "однократной записи" либо вообще - с УФ-стиранием (с окошком). Верно, как правило, лишь для самых древних плат (до Pentium1) и можно определить по маркировке - она будет начинасть с цифр 27ххх .
  
 
===Всё прошло благополучно, без видимых проблем и… тишина.===
 
===Всё прошло благополучно, без видимых проблем и… тишина.===
Строка 141: Строка 127:
 
----
 
----
  
==Часть 2. Для тех, кому это нужно/интересно, либо было лень читать первую, а теперь надо восстановить &quot;как было&quot;...==
+
==Часть вторая. Для тех, кому это нужно/интересно, либо было лень читать первую, а теперь надо восстановить "как было"...==
  
 
Учитавая понятный факт, что эту статью, как правило,  
 
Учитавая понятный факт, что эту статью, как правило,  
Строка 158: Строка 144:
  
 
===Хотсвоп (на горячую).===
 
===Хотсвоп (на горячую).===
Берётся другая РАБОЧАЯ плата. Как уже говорилось, она не обязательно должна быть &quot;точно такая же&quot;, &quot;на таком же чипсете&quot;, &quot;той же фирмы&quot;.  
+
Берётся другая РАБОЧАЯ плата. Как уже говорилось, она не обязательно должна быть "точно такая же", "на таком же чипсете", "той же фирмы".  
Главное, на что стоит ориентироваться - тип/маркировка флэшки. Есть две основные &quot;совместимые&quot; группы:
+
Главное, на что стоит ориентироваться - тип/маркировка флэшки. Есть две основные "совместимые" группы:
* &quot;обычные&quot; (в частности, именно к ним относятся <b>все</b> &quot;прямоугольные&quot; флэшки - в DIP32 корпусе) - 28xxxx, 29xxxx, 39xxxx, некоторые 49xxxx
+
* "обычные" (в частности, именно к ним относятся '''все''' "прямоугольные" флэшки - в [[DIP]]32 корпусе) - 28xxxx, 29xxxx, 39xxxx, некоторые 49xxxx
* &quot;хабовые&quot; (все они <b>только</b> &quot;квадратные&quot;
+
* "хабовые" (все они '''только''' "квадратные в корпусе [[PLCC]]32) - большинство серии 49xxxx и "родные" интеловские 82802xx  
* в корпусе PLCC32) - большинство серии 49xxxx и &quot;родные&quot; интеловские 82802xx  
+
  
Соответственно, если на плате для восстановления будет &quot;совместимая&quot; флэшка того же (или большего) объёма - всё должно пройти.
+
Соответственно, если на плате для восстановления будет "совместимая" флэшка того же (или большего) объёма - всё должно пройти.
  
 
====Как сделать.====
 
====Как сделать.====
Проявите фантазию - главное &quot;во время процесса&quot; не ронять на работающую  
+
[[Изображение:Extractor6.jpg|thumb|right|200px]]
 +
[[Изображение:Extractor7.jpg|thumb|left|200px|Вариант промышленного "ухвата" для DIP32]]
 +
Проявите фантазию - главное "во время процесса" не ронять на работающую  
 
плату чужеродные токопроводящие детали (и не проливать жидкости).
 
плату чужеродные токопроводящие детали (и не проливать жидкости).
Для микрушек в корпусе DIP32 - попроще. Обычно рекомендуют обвязать их нитками, чтоб выдернуть можно было полегче. Я же порекомендую найти что-нибудь типа шлейфика от  
+
Для микрушек в корпусе [[DIP]]32 - попроще. Обычно рекомендуют обвязать их нитками, чтоб выдернуть можно было полегче. Я же порекомендую найти что-нибудь типа шлейфика от  
 
старенького COM-порта и подложить его под микросхему - так и схватиться удобней и ширина как раз на микросхему и толщина кабеля не даст сильно застрять флэшке в разъёме.
 
старенького COM-порта и подложить его под микросхему - так и схватиться удобней и ширина как раз на микросхему и толщина кабеля не даст сильно застрять флэшке в разъёме.
  
[[Изображение:Варианты "ухватов" для DIP32]]
 
  
Для &quot;квадратных&quot; (PLCC32) - чуть сложней. Можно продолжить мучаться с нитками. Если есть неплохой доступ и руки не дрожат - можно банально подковырнуть иголкой в соответствующих уголках и аккуратно вынуть. Если же постоянно занимаетесь этим (перешивкой подобных) или просто хотите &quot;чтоб наверняка&quot; - приклейте к &quot;спине&quot; флэшки какую-нибудь штуку, чтоб можно было удобно вынимать/вставлять: подойдёт кусок  
+
Для "квадратных" ([[PLCC]]32) - чуть сложней. Можно продолжить мучаться с нитками. Если есть неплохой доступ и руки не дрожат - можно банально подковырнуть иголкой в соответствующих уголках и аккуратно вынуть. Если же постоянно занимаетесь этим (перешивкой подобных) или просто хотите "чтоб наверняка" - приклейте к "спине" флэшки какую-нибудь штуку, чтоб можно было удобно вынимать/вставлять: подойдёт кусок  
пластмассы или даже растопить часть стержня для клеевого пистолета… В общем - это уже дело техники, в крайнем случае вы можете пойти и купить специальный &quot;экстрактор&quot;
+
пластмассы или даже растопить часть стержня для клеевого пистолета… В общем - это уже дело техники, в крайнем случае вы можете пойти и купить специальный "экстрактор"
для PLCC32.
+
для [[PLCC]]32.
  
[[Изображение:Варианты "ухватов" для PLCC32]]
+
 
 +
{| border="0" style="border-collapse:collapse" align="center"
 +
|+'''Варианты "ухватов" для PLCC32'''
 +
|valign="top"|[[Изображение:Extractor2.jpg|thumb|none|200px]]
 +
|valign="top"|[[Изображение:Extractor3.gif|thumb|none|200px]]
 +
|valign="top"|[[Изображение:Extractor5.jpg|thumb|none|200px]]
 +
|}
  
 
===С дискеты (для современных - в том числе с винчестера/CD-ROM-а).===
 
===С дискеты (для современных - в том числе с винчестера/CD-ROM-а).===
  
В случае, когда компьютер умер не полностью и при  
+
В случае, когда компьютер умер не полностью и при загрузке противно хрустит дисководом и/или выдаёт надпись "'''BIOS checksum error'''" можно попытаться восстановить биос без походов к товарищу.
загрузке противно хрустит дисководом и/или выдаёт  
+
 
надпись &quot;<b>BIOS checksum error</b>&quot; можно  
+
'''ВНИМАНИЕ''': Если у вас стоит AGP/PCI видеокарта - Вы можете не увидить этого сообщения (биос чексум еррор). Для этого потребуется ISA-карточка для P1-P3-компьютеров, PCI-карта для более современных, не имеющих ISA-слотов. Хотя в большинстве современных плат бутблок (а именно он сообщает об этом грустном факте, пытаясь восстановить биос с дисковода) поддерживает вывод и на AGP-карточки.
попытаться восстановить биос без походов к товарищу.
+
 
ВНИМАНИЕ: Если у вас стоит AGP/PCI видеокарта - вы
+
'''ДОПОЛНЕНИЕ''': Если у вас есть POST-карта (например, встроенная в матплату), то "BIOS checksum error" просто отслеживается по ошибке "41" в самом "начале" POST-а (если вы не способны оценить "начало", то это где-то 5-6 код из тех, что вы успеет разглядеть:). Код "41" в Аварде - это обращение к FDD (попытка загрузиться с дискеты), в случае AMI "бутблочные" коды попыток загрузиться с авариной дискеты - "F0-FE".
можете не увидить этого сообщения (биос чексум еррор).  
+
 
Для этого потребуется ISA-карточка для P1-P3-компьютеров,  
+
В большинстве случаев для этого нужно сделать чистую системную дискету (т.е. только файлы io.sys, msdos.sys и command.com) и записать на неё файл с прошивкой (bios.bin), сам прошивальщик (awdflash.exe) и autoexec.bat с соответствующей командной строкой внутри:
PCI-карта для более современных, не имеющих ISA-слотов.  
+
* для [[Award]]:
Хотя в большинстве современных плат бутблок (а именно  
+
"'''[[awdflash]] ''bios.bin'' /cd/cp/py/sn/f/r'''"
он сообщает об этом грустном факте, пытаясь восстановить  
+
* для [[AMI]]:
биос с дисковода) поддерживает вывод и на AGP-карточки.
+
"'''[[amiflash]] ''amibios.rom'' /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g'''"
ДОПОЛНЕНИЕ: Если у вас есть POST-карта (например,  
+
 
встроенная в матплату), то &quot;BIOS checksum error&quot;
+
При чём ''не рекомендую'' использовать свои имена прошивок/прошивальщиков (т.е. стоит использовать только вышеуказанные стандартные названия) - некоторые биосы (бутблоки) могут просто проигнорировать такой диск, выдавая всё то же сообщение о несистемной дискете в дисководе.
просто отслеживается по ошибке &quot;41&quot; в самом  
+
&quot;начале&quot; POST-а (если вы не способны оценить  
+
&quot;начало&quot;, то это где-то 5-6 код из тех,  
+
что вы успеет разглядеть:). Код &quot;41&quot; в Аварде  
+
- это обращение к FDD (попытка загрузиться с дискеты),  
+
в случае AMI &quot;бутблочные&quot; коды попыток загрузиться  
+
с авариной дискеты - &quot;F0-FE&quot;.
+
В большинстве случаев для этого нужно сделать чистую  
+
системную дискету (т.е. только файлы io.sys, msdos.sys  
+
и command.com) и записать на неё файл с прошивкой  
+
(bios.bin), сам прошивальщик (awdflash.exe) и autoexec.bat  
+
с соответствующей командной строкой внутри:
+
- для Award: &quot;<b>awdflash <i>bios.bin</i> /cd/cp/py/sn/f/r</b>&quot;
+
- для AMI: &quot;<b>amiflash <i>amibios.rom</i> /b  
+
/n /-o /-c /-d /-r /v /-i /-k /-e /-g</b>&quot;
+
<br>
+
При чём <i>не рекомендую</i> использовать  
+
свои имена прошивок/прошивальщиков (т.е. стоит  
+
использовать только вышеуказанные стандартные  
+
названия) - некоторые биосы (бутблоки) могут  
+
просто проигнорировать такой диск, выдавая  
+
всё то же сообщение о несистемной дискете  
+
в дисководе.
+
Однако единого &quot;стандарта&quot; на процесс восстановления
+
с дисковода всё же нет. Большинство &quot;брэндовых&quot;
+
компов (т.е. фирменные Intel, HP/Compaq, Dell, IBM,
+
Fujitsu etc) могут быть оживлены дискеткой, содержимое
+
которой можно слить с их собственного сайта (там же
+
должно быть подробное описание).
+
В зависимости от современности конкретной платы/биоса
+
(Award/AMI) на дискетке может потребоваться наличие
+
ЛИШЬ (т.е. она, наоборот, не должна быть системной)
+
файлов прошивальщика и прошивки или даже, вообще,
+
только самой прошивки (когда прошивальщик встроен
+
в биос).
+
Короче имеются различные вариации и если
+
к ним добавить возможность просто аппаратного
+
сбоя самого бутблока и/или железа, то восстановление
+
прошивки данным методом становится не самым
+
надёжным и &quot;многовероятным&quot; способом
+
(это же подтверждает и статистика). Однако,
+
всё равно, начинать лучше именно с него -
+
авось, повезёт и свинка уцелеет… ;)
+
  
 +
Однако единого "стандарта" на процесс восстановления с дисковода всё же нет. Большинство "брэндовых" компов (т.е. фирменные Intel, HP/Compaq, Dell, IBM, Fujitsu etc) могут быть оживлены дискеткой, содержимое которой можно слить с их собственного сайта (там же должно быть подробное описание).
  
 +
В зависимости от современности конкретной платы/биоса ([[Award]]/[[AMI]]) на дискетке может потребоваться наличие ЛИШЬ (т.е. она, наоборот, не должна быть системной) файлов прошивальщика и прошивки или даже, вообще, только самой прошивки (когда прошивальщик встроен в биос).
  
 +
Короче имеются различные вариации и если к ним добавить возможность просто аппаратного сбоя самого бутблока и/или железа, то восстановление прошивки данным методом становится не самым надёжным и "многовероятным" способом (это же подтверждает и статистика). Однако, всё равно, начинать лучше именно с него - авось, повезёт и свинка уцелеет… ;)
  
 
==Часть третья. Для тех, кому, всё же, нужно разобраться. Азы.==
 
==Часть третья. Для тех, кому, всё же, нужно разобраться. Азы.==
Строка 252: Строка 204:
 
[[Изображение:DIP32_PLCC32.gif|thumb|[[PP]]-тип интерфейс [[FlashBIOS]]]]
 
[[Изображение:DIP32_PLCC32.gif|thumb|[[PP]]-тип интерфейс [[FlashBIOS]]]]
  
&quot;Обычная&quot; флэшка имеет следующие сигналы:
+
"Обычная" флэшка имеет следующие сигналы:
 
* 8 линий данных <strong>DQ0</strong>-<strong>DQ7</strong>
 
* 8 линий данных <strong>DQ0</strong>-<strong>DQ7</strong>
 
* 17-18 линий адреса <strong>A00-A16/17</strong> (в зависимости от объёма: [[1Mbit]] - 17, [[2Mbit]] - 18)
 
* 17-18 линий адреса <strong>A00-A16/17</strong> (в зависимости от объёма: [[1Mbit]] - 17, [[2Mbit]] - 18)
* <strong>CE#</strong> (<em>ChipEnable</em>) - &quot;чипселект&quot; (разрешение на работу с микросхемой)
+
* <strong>CE#</strong> (''ChipEnable'') - "чипселект" (разрешение на работу с микросхемой)
* <strong>OE#</strong> (<em>OutputEnable</em>)  
+
* <strong>OE#</strong> (''OutputEnable'')  
* <em>RE</em> (возможность считать байт данных)<br>
+
* ''RE'' (возможность считать байт данных)<br>
* <strong>WE#</strong> (<em>WriteEnable</em>)  
+
* <strong>WE#</strong> (''WriteEnable'')  
* <em>WE</em> (возможность записать байт данных)
+
* ''WE'' (возможность записать байт данных)
Короче, достаточно примитивно и понятно, даже если Вы не обладаете особыми познаниями в электронике. И уже из этого видно, что уже только из-за 8-битной шины данных (в современных Nforce2 - она 128-bit) скорость выборки данных из флэшки (которая к тому же ещё больше ухудшается из-за больших задержек самой флэшпамяти) превратила бы загрузку даже самого быстрого компьютера в мучительное ожидание. Поэтому флэшка подключена особым способом к южному мосту, что позволяет &quot;отображать&quot; (&quot;<em>Shadow</em>&quot;)  
+
Короче, достаточно примитивно и понятно, даже если Вы не обладаете особыми познаниями в электронике. И уже из этого видно, что уже только из-за 8-битной шины данных (в современных Nforce2 - она 128-bit) скорость выборки данных из флэшки (которая к тому же ещё больше ухудшается из-за больших задержек самой флэшпамяти) превратила бы загрузку даже самого быстрого компьютера в мучительное ожидание. Поэтому флэшка подключена особым способом к южному мосту, что позволяет "отображать" ("''Shadow''")  
её содержимое на &quot;реальную&quot; память, эмулируя при этом память <em>ReadOnly</em>
+
её содержимое на "реальную" память, эмулируя при этом память ''ReadOnly''
(<em>ПЗУ</em> по-нашенски) и снимая ограничение по скорости.
+
(''ПЗУ'' по-нашенски) и снимая ограничение по скорости.
  
<i>Опять же, из сказанного ещё один вывод: ежели Вы засунули совсем нездоровую флэшку либо вставили её неправильно - пострадать может не только сама микросхема (что обычно и случается при вставлении &quot;задом наперёд&quot;), но и напрямую_подключённый_южный_мост  
+
''Опять же, из сказанного ещё один вывод: ежели Вы засунули совсем нездоровую флэшку либо вставили её неправильно - пострадать может не только сама микросхема (что обычно и случается при вставлении "задом наперёд"), но и напрямую_подключённый_южный_мост  
(из неоднократного :( личного опыта).</i>
+
(из неоднократного :( личного опыта).''
В адресном пространстве флэшка занимает самые верхние адреса <em>E0000-FFFFF</em> (верно  
+
В адресном пространстве флэшка занимает самые верхние адреса ''E0000-FFFFF'' (верно  
для <em>1Mbit</em>, для остальных аналогично, потому разберём на примере именно <em>1Mbit/AwardBIOS</em>).  
+
для ''[[1Mbit]]'', для остальных аналогично, потому разберём на примере именно ''1Mbit/AwardBIOS'').  
 
После включения компьютера и окончании сигнала <strong>RESET#</strong> процессор выполняет  
 
После включения компьютера и окончании сигнала <strong>RESET#</strong> процессор выполняет  
свою первую команду по адресу <em>F000:FFF0</em>. После самой первичной инициализации происходит проверка различных контрольных сумм (их много в биосе), главная из которых - контрольная сумма <em>E000:0-FFFF+F000:0-BFFC</em>. Если она нарушена происходит запуск бутблока, расположенного по &quot;самым&quot; верхним адресам (<em>F000:C000/E000-FFFF</em>
+
свою первую команду по адресу ''F000:FFF0''. После самой первичной инициализации происходит проверка различных контрольных сумм (их много в биосе), главная из которых - контрольная сумма ''E000:0-FFFF+F000:0-BFFC''. Если она нарушена происходит запуск бутблока, расположенного по "самым" верхним адресам (''F000:C000/E000-FFFF''
- последние <em>8/16kB</em>), который производит инициализацию дисковода и пытается считать  
+
- последние ''8/16kB''), который производит инициализацию дисковода и пытается считать  
 
с него систему и/или запустить прошивальщик с прошивкой.
 
с него систему и/или запустить прошивальщик с прошивкой.
  
<i>Отсюда ещё один интересный вывод: если вы хотите принудительно запустить бутблок  
+
''Отсюда ещё один интересный вывод: если вы хотите принудительно запустить бутблок  
(для перешивки) можно испортить CRC &quot;вручную&quot; - закоротив адресные линии &quot;выше&quot; бутблочных. Например, я обычно корочу рядом расположенные <strong>A15</strong> и <strong>A16</strong> (pin 2 и 3). Объём бутблока = 16kB = 2^14, в результате чего он никак не пострадает, а контрольная сумма &quot;остального&quot;, понятно, собъётся. Если вам не совсем понятно, зачем это может быть нужно, то когда столкнётесь с запаянной флэшкой, в которую залили &quot;похожую&quot; прошивку - поймёте. ;) И, кстати, для линий адреса это (корочение) совершенно безопасно.</i>
+
(для перешивки) можно испортить [[CRC]] "вручную" - закоротив адресные линии "выше" бутблочных. Например, я обычно корочу рядом расположенные '''A15''' и '''A16''' (pin 2 и 3). Объём бутблока = 16kB = 2^14, в результате чего он никак не пострадает, а контрольная сумма "остального", понятно, собъётся. Если вам не совсем понятно, зачем это может быть нужно, то когда столкнётесь с запаянной флэшкой, в которую залили "похожую" прошивку - поймёте. ;) И, кстати, для линий адреса это (корочение) совершенно безопасно.''
После проверки <em>CRC</em> биос &quot;шадовится&quot; (операция Shadow), т.е. происходит копирование содержимого флэшки в &quot;реальную&quot; память, сама флэшка отключается (южным мостом), а для того, чтоб программы поверили, что обращаются к <em>ПЗУ</em> на область адресов биос вешаются атрибуты <em>ReadOnly</em> посредством программирования регистров SB (и/или <em>MSR</em> процессора для <em>AMD</em> <em>K7/K8</em>). Вся дальнейшая работа происходит только с &quot;зашадовленным&quot; образом флэшки.
+
После проверки ''[[CRC]]'' биос "шадовится" (операция Shadow), т.е. происходит копирование содержимого флэшки в "реальную" память, сама флэшка отключается (южным мостом), а для того, чтоб программы поверили, что обращаются к ''ПЗУ'' на область адресов биос вешаются атрибуты ''ReadOnly'' посредством программирования регистров SB (и/или ''[[MSR]]'' процессора для ''AMD'' ''K7/K8''). Вся дальнейшая работа происходит только с "зашадовленным" образом флэшки.
  
<i>Вывод: Именно по этим причинам мы можем беспрепятственно вытаскивать флэшку, сразу же, как только увидим строчку &quot;Starting Windows/DOS/linux&quot;.</i>
+
''Вывод: Именно по этим причинам мы можем беспрепятственно вытаскивать флэшку, сразу же, как только увидим строчку "Starting Windows/DOS/linux".''
Если же потребуется работа именно с самой флэшкой (например, запись в неё ESCD/<em>DMI</em>), то для этого используются соответствующие процедуры, специфичные для каждого чипсета  
+
Если же потребуется работа именно с самой флэшкой (например, запись в неё [[ESCD]]/''[[DMI]]''), то для этого используются соответствующие процедуры, специфичные для каждого чипсета  
 
- нужно будет опять подключить флэшку к шине и снова отключить после окончания операции.
 
- нужно будет опять подключить флэшку к шине и снова отключить после окончания операции.
<i>Вывод: из-за различных способов программирования подключения/отключения флэшки (для различных чипсетов) прошивальщик должен уметь это делать, т.е. &quot;знать&quot; чипсет, на котором происходит перешивка.</i>
+
''Вывод: из-за различных способов программирования подключения/отключения флэшки (для различных чипсетов) прошивальщик должен уметь это делать, т.е. "знать" чипсет, на котором происходит перешивка.''
  
 
===Особенности программирования микросхем Intel 28Fxxx.===
 
===Особенности программирования микросхем Intel 28Fxxx.===
Если в вашей плате стоит флэшка от Intel  
+
Если в вашей плате стоит флэшка от [[Intel]]
 
- будьте трижды осторожны при прошивке. Дело  
 
- будьте трижды осторожны при прошивке. Дело  
 
в том, что интельные микросхемы используют  
 
в том, что интельные микросхемы используют  
 
аппаратную защиту бутблока. Что это значит?  
 
аппаратную защиту бутблока. Что это значит?  
 
А это значит, что в них присутствует ещё один  
 
А это значит, что в них присутствует ещё один  
сигнал - <strong>RP#</strong> (pin 30) - разрешение  
+
сигнал - '''RP#''' (pin 30) - разрешение  
 
на программирование бутблока. В двухмегабитках  
 
на программирование бутблока. В двухмегабитках  
- это <strong>A17</strong>, 1Mbit - <strong>NC</strong>
+
- это '''A17''', [[1Mbit]] - '''NC'''
 
(NotConnected, не используется).
 
(NotConnected, не используется).
 
Т.е. для того, чтоб корректно прошилась вся_область_флэшки  
 
Т.е. для того, чтоб корректно прошилась вся_область_флэшки  
Строка 297: Строка 249:
 
перемычки с названием Flash Type: Intel / Non-Intel.
 
перемычки с названием Flash Type: Intel / Non-Intel.
  
<i>Вывод: Если в плате стоит <strong>Intel  
+
''Вывод: Если в плате стоит '''Intel  
28Fxxx</strong>, а разводка платы не предусматривала  
+
28Fxxx''', а разводка платы не предусматривала  
 
правильную коммутацию для программирования  
 
правильную коммутацию для программирования  
 
Intel-флэшей (что является очень распространённым  
 
Intel-флэшей (что является очень распространённым  
 
явлением) - BIOS погибнет при первой же попытке  
 
явлением) - BIOS погибнет при первой же попытке  
 
перешивки без особых шансов на восстановление  
 
перешивки без особых шансов на восстановление  
(на этой плате).</i>
+
(на этой плате).''
Для перешивки <strong>Intel 28Fxxx</strong>
+
Для перешивки '''Intel 28Fxxx'''
на таких платах (без разводки <strong>RP#</strong>)  
+
на таких платах (без разводки '''RP#''')  
нужно подать на <em>pin30</em> вручную <em>+12V</em>,  
+
нужно подать на ''pin30'' вручную ''+12V'',  
 
но так, чтоб оно не пошло на саму плату (а  
 
но так, чтоб оно не пошло на саму плату (а  
это <strong>A17</strong>) - для это можно  
+
это '''A17''') - для это можно  
 
просто отогнуть эту лапку, т.е. чтоб она не  
 
просто отогнуть эту лапку, т.е. чтоб она не  
 
втыкалась в сам разъём.
 
втыкалась в сам разъём.
Строка 314: Строка 266:
 
===Программные особенности программирования флэшек.===
 
===Программные особенности программирования флэшек.===
  
Главный аспект, на который хотелось бы обратить  
+
Главный аспект, на который хотелось бы обратить внимание - флэшка не перепрограммируется "зараз" (сразу одним блоком) и, наоборот, нельзя перезаписать один отдельно взятый байт. Флэшка поддерживает лишь "блочную" запись (секторизация).  
внимание - флэшка не перепрограммируется &quot;зараз&quot;
+
У разных типов флэшек разная секторная организация. Например у распространённой [[Intel]] [[28F001BX]] есть следующие блоки:
(сразу одним блоком) и, наоборот, нельзя перезаписать  
+
# Первый блок, в начале, самый большой, "главный" - 112kB. В нём обычно располагается всё "тело" упакованного биоса (поэтому самый большой).
один отдельно взятый байт. Флэшка поддерживает  
+
# Дальше два одинаковых блока по 4kB - в этих адресах обычно хранятся изменяемые данные типа [[ESCD]]/[[DMI]]/[[CMOS]]/пароли и т.п.
лишь &quot;блочную&quot; запись (секторизация).  
+
# Последний блок - 8kB - бутблок. Т.е. говоря техническим языком - [[i28F001BX]] имеет организацию ''112+4x2+8''. Достаточно понятная и логичная организация: самый большой блок в 112kB, всё равно, переписывается лишь при обновлении биоса, дальше - постоянно изменяемые данные, потому сделаны два маленьких блока (чтоб легче и быстрей было перезаписывать эти "куски") и в конце - неизменяемый обычно бутблок (специально отдельно от других - для защиты биоса в смысле возможности запуска аварийного восстановления с дисковода) - он всегда сделан отдельно, что его "не трогали" при обычных перезаписях других блоков.
У разных типов флэшек разная секторная организация.  
+
Например у распространённой Intel 28F001BX  
+
есть следующие блоки:
+
# Первый блок, в начале, самый большой, &quot;главный&quot; - 112kB. В нём обычно располагается всё &quot;тело&quot; упакованного биоса (поэтому самый большой).
+
# Дальше два одинаковых блока по 4kB - в этих адресах обычно хранятся изменяемые данные типа ESCD/DMI/CMOS/пароли и т.п.
+
# Последний блок - 8kB - бутблок. Т.е. говоря техническим языком - i28F001BX имеет организацию <em>112+4x2+8</em>. Достаточно понятная и логичная организация: самый большой блок в 112kB, всё равно, переписывается лишь при обновлении биоса, дальше - постоянно изменяемые данные, потому сделаны два маленьких блока (чтоб легче и быстрей было перезаписывать эти &quot;куски&quot;) и в конце - неизменяемый обычно бутблок (специально отдельно от других - для защиты биоса в смысле возможности запуска аварийного восстановления с дисковода) - он всегда сделан отдельно, что его &quot;не трогали&quot; при обычных перезаписях других блоков.
+
  
Некоторые флэшки имеют очень мелкую сеторизацию, например, та же SST29EE020 (2Mbit) имеет целых 2048 одинаковых секторов по 128 байт. Однако большинство, всё ж, придерживается организации схожей с вышеприведенной, потому как маленький блок имеет и свои отрицательные стороны (например, в плане более сложной защиты от перезаписи).
+
Некоторые флэшки имеют очень мелкую секторизацию, например, та же [[SST]] [[29EE020]] ([[2Mbit]]) имеет целых 2048 одинаковых секторов по 128 байт. Однако большинство, всё ж, придерживается организации схожей с вышеприведенной, потому как маленький блок имеет и свои отрицательные стороны (например, в плане более сложной защиты от перезаписи).
  
==Часть четвёртая. &quot;Хабовые&quot; флэши.==
+
==Часть четвёртая. "Хабовые" флэши.==
  
Как всё было просто в старые добрые времена - шина адреса, шина данных, <strong>CE</strong>/<strong>WE</strong>/<strong>OE</strong>… ;) Но прогресс (особенно в отдельно взятой  
+
Как всё было просто в старые добрые времена - шина адреса, шина данных, '''CE'''/'''WE'''/'''OE'''… ;) Но прогресс (особенно в отдельно взятой  
 
фирме ;) не стоял на месте и с появлением чипсетных наборов i8xx получило распространение  
 
фирме ;) не стоял на месте и с появлением чипсетных наборов i8xx получило распространение  
это страшное и многим малопонятное название - &quot;хабовые&quot; флэшки.
+
это страшное и многим малопонятное название - "хабовые" флэшки.
  
 
===LPC-интерфейс.===
 
===LPC-интерфейс.===
Строка 340: Строка 286:
 
до сих пор используют в основном лишь 2Mbit),  
 
до сих пор используют в основном лишь 2Mbit),  
 
а для этого никак не хватит ног (для линий  
 
а для этого никак не хватит ног (для линий  
адреса) на широкораспространённых &quot;обычных&quot;
+
адреса) на широкораспространённых "обычных"
<strong>PLCC32</strong>-флэшках. Сказано -  
+
'''PLCC32'''-флэшках. Сказано -  
сделано, так появился стандарт <strong>LPC</strong>
+
сделано, так появился стандарт '''LPC'''
(<em>LowPinCount</em> - &quot;малоколичественноножное&quot;
+
(''LowPinCount'' - "малоколичественноножное"
 
соединение, хотя корпус по понятным причинам  
 
соединение, хотя корпус по понятным причинам  
оставили прежним - <strong>PLCC32</strong>).  
+
оставили прежним - '''PLCC32''').  
 
Кроме возможности использования больших (до  
 
Кроме возможности использования больших (до  
 
4Gb!) объёмов флэшей одной из самых главных  
 
4Gb!) объёмов флэшей одной из самых главных  
причин называлась скорая погибель <strong>ISA</strong>-шной  
+
причин называлась скорая погибель '''ISA'''-шной  
 
шины, отстутствие которой снимало потребность  
 
шины, отстутствие которой снимало потребность  
 
разводить линии адреса/данных и позволяло  
 
разводить линии адреса/данных и позволяло  
 
ограничиться меньшим количеством линий для  
 
ограничиться меньшим количеством линий для  
общения, в первую очередь, &quot;мультика&quot;
+
общения, в первую очередь, "мультика"
(<strong>SuperIO</strong>) и южного моста  
+
('''SuperIO''') и южного моста  
(очевидная возможность же интеграции <strong>SIO</strong>
+
(очевидная возможность же интеграции '''SIO'''
в сам <strong>SB</strong> скромно умалчивалась;).  
+
в сам '''SB''' скромно умалчивалась;).  
В <strong>LPC</strong> для этого используется  
+
В '''LPC''' для этого используется  
лишь пять проводов: <strong>LAD0</strong>-<strong>LAD3</strong>
+
лишь пять проводов: '''LAD0'''-'''LAD3'''
+ <strong>LFRAME#</strong> (поэтому &quot;<em>lowpin</em>&quot;).  
+
+ '''LFRAME#''' (поэтому "''lowpin''").  
 
Применительно к флэшам (т.к. использовать  
 
Применительно к флэшам (т.к. использовать  
 
LPC-интерфейс могут разные устройства) этот  
 
LPC-интерфейс могут разные устройства) этот  
Строка 365: Строка 311:
 
[[Изображение:LPC_FWH.gif|thumb|LPC/FWH interface<BR>
 
[[Изображение:LPC_FWH.gif|thumb|LPC/FWH interface<BR>
 
----
 
----
<i>() - в скобках - значение ножки в режиме LPC или FWH</i>
+
''() - в скобках - значение ножки в режиме LPC или FWH''
 
]]
 
]]
  
 
Как видно, такая флэшка может работать сразу  
 
Как видно, такая флэшка может работать сразу  
в двух различных режимах - <strong>LPC</strong>-mode  
+
в двух различных режимах - '''LPC'''-mode  
и <strong>PP</strong>-mode (<em>Parallel-Programming</em>).  
+
и '''PP'''-mode (''Parallel-Programming'').  
Режим работы выбирается уровнем на ножке <strong>IC</strong>
+
Режим работы выбирается уровнем на ножке '''IC'''
(<em>Interface Configuration Pin</em>) во  
+
(''Interface Configuration Pin'') во  
время старта компьютера- &quot;0&quot; - <strong>LPC</strong>-mode,  
+
время старта компьютера- "0" - '''LPC'''-mode,  
&quot;1&quot; - <strong>PP</strong>-mode.
+
"1" - '''PP'''-mode.
Режим <strong>PP</strong> наиболее близок  
+
Режим '''PP''' наиболее близок  
к &quot;обычным&quot; флэшкам и совместим  
+
к "обычным" флэшкам и совместим  
 
с ними по многим (но не по всем) ножкам, с  
 
с ними по многим (но не по всем) ножкам, с  
 
учётом только того, что линий адресов всего  
 
учётом только того, что линий адресов всего  
 
11 (0-10), но зато они мультиплексируются,  
 
11 (0-10), но зато они мультиплексируются,  
 
т.е. сначала выдаётся/считывается значение  
 
т.е. сначала выдаётся/считывается значение  
<strong>A00</strong>-<strong>A10</strong>,  
+
'''A00'''-'''A10''',  
а затем <strong>A11</strong>-<strong>A21</strong>.  
+
а затем '''A11'''-'''A21'''.  
 
С учётом этого (мультиплексирования адресов)  
 
С учётом этого (мультиплексирования адресов)  
и &quot;пропажи&quot; сигнала CE всё остальное  
+
и "пропажи" сигнала CE всё остальное  
полностью аналогично &quot;обычным&quot; флэшкам.
+
полностью аналогично "обычным" флэшкам.
В режиме <strong>LPC</strong> общение между  
+
В режиме '''LPC''' общение между  
 
мостом и флэшкой происходит лишь по четырёхбитной  
 
мостом и флэшкой происходит лишь по четырёхбитной  
шине, а пятый <strong>LFRAME#</strong> служит  
+
шине, а пятый '''LFRAME#''' служит  
 
в качестве стартового (для начала операции  
 
в качестве стартового (для начала операции  
по обмену данными). Плюс <strong>LRESET#</strong>
+
по обмену данными). Плюс '''LRESET#'''
и <strong>LCLK#</strong>, которые полностью  
+
и '''LCLK#''', которые полностью  
 
аналогичны своим собратьям на материской плате  
 
аналогичны своим собратьям на материской плате  
 
- вот и весь набор нужных проводов (остальные  
 
- вот и весь набор нужных проводов (остальные  
 
- опционально). В общем, это есть попытка  
 
- опционально). В общем, это есть попытка  
 
максимально упростить интерфейс, но не скатиться  
 
максимально упростить интерфейс, но не скатиться  
до &quot;абсолютно последовательного&quot;,  
+
до "абсолютно последовательного",  
типа <strong>I2C</strong>, оставив возможность  
+
типа '''I2C''', оставив возможность  
использования даже режимов <strong>DMA</strong>
+
использования даже режимов '''DMA'''
и <strong>BusMaster</strong>-инга (которые  
+
и BusMaster-инга (которые  
 
могут использоваться, например, в устройствах  
 
могут использоваться, например, в устройствах  
типа <strong>DiskOnChip</strong>/<strong>LPC</strong>).
+
типа '''DiskOnChip'''/'''LPC''').
Режим <strong>PP</strong> используется при  
+
Режим '''PP''' используется при  
&quot;заводской&quot; прошивке флэшки (он,  
+
"заводской" прошивке флэшки (он,  
 
ведь, понятно - быстрей, что и важно при массовом  
 
ведь, понятно - быстрей, что и важно при массовом  
производстве) , а <strong>LPC</strong> - при  
+
производстве) , а '''LPC''' - при  
 
работе в составе плат. Только вот для работы  
 
работе в составе плат. Только вот для работы  
 
с такими флэшами нужно, чтоб южный мост умел  
 
с такими флэшами нужно, чтоб южный мост умел  
 
это делать - в результате такой стандарт стал  
 
это делать - в результате такой стандарт стал  
 
реально популярен лишь с приходом популярного  
 
реально популярен лишь с приходом популярного  
<strong>Nforce2</strong> (потому как он никогда  
+
'''nForce2''' (потому как он никогда  
и не слышал про <strong>ISA</strong>-шину… :)
+
и не слышал про '''ISA'''-шину… :)
  
 
===FWH-интерфейс.===
 
===FWH-интерфейс.===
Строка 418: Строка 364:
 
чипсетных наборов i8xx продолжила нести знамя  
 
чипсетных наборов i8xx продолжила нести знамя  
 
родителя новых стандартов. Так появился ещё  
 
родителя новых стандартов. Так появился ещё  
один режим работы - <strong>FWH</strong> (<em>FirmWareHub</em>,  
+
один режим работы - '''FWH''' (''FirmWareHub'',  
 
от которого, собственно, и пошло название  
 
от которого, собственно, и пошло название  
&quot;хабовые&quot;). Он был полностью аналогичен  
+
"хабовые"). Он был полностью аналогичен  
<strong>LPC</strong> электрически (по ножкам/разъёму),  
+
'''LPC''' электрически (по ножкам/разъёму),  
 
но (дальше сами догадаетесь;) - абсолютно  
 
но (дальше сами догадаетесь;) - абсолютно  
<i><font color="#FF0000"><strong>_несовместим_</strong></font></i>
+
''<font color="#FF0000">'''_несовместим_'''</font>''
 
по протоколу передачи данных. Как можно прочитать  
 
по протоколу передачи данных. Как можно прочитать  
 
в некоторых документах, это было сделано для  
 
в некоторых документах, это было сделано для  
возможности поставить в систему кроме <strong>LPC</strong>-устройства  
+
возможности поставить в систему кроме '''LPC'''-устройства  
ещё и <strong>FWH</strong>, повесив их на  
+
ещё и '''FWH''', повесив их на  
 
одну и ту же шину (ведь они электрически совместимы,  
 
одну и ту же шину (ведь они электрически совместимы,  
 
но при передаче пакетов данных каждый будет  
 
но при передаче пакетов данных каждый будет  
 
брать свой из-за разных протоколов), при чём  
 
брать свой из-за разных протоколов), при чём  
&quot;хабовых&quot; флэшей можно было навешать  
+
"хабовых" флэшей можно было навешать  
 
до шестнадцати штук, т.к. в них появились  
 
до шестнадцати штук, т.к. в них появились  
дополнительные <strong>ID0</strong>-<strong>ID3</strong>
+
дополнительные '''ID0'''-'''ID3'''
 
сигналы.
 
сигналы.
<i>(прим. автора: все мои уколы в сторону родителя  
+
''(прим. автора: все мои уколы в сторону родителя  
 
x86 просьба воспринимать как шутку, хотя как известно  
 
x86 просьба воспринимать как шутку, хотя как известно  
- в каждой шутке есть доля шутки… ;)</i>
+
- в каждой шутке есть доля шутки… ;)''
<i><b>см. рис. выше.</b></i>
+
'''''см. рис. выше.'''''
Как видно, картина совершенно аналогично  
+
Как видно, картина совершенно аналогично '''LPC''', только названия '''LAD0-3'''
<strong>LPC</strong>, только названия <strong>LAD0-3</strong>
+
+ '''LFRAME#''' заменены на '''FWH0-3'''
+ <strong>LFRAME#</strong> заменены на <strong>FWH0-3</strong>
+
+ '''FWH4'''.
+ <strong>FWH4</strong>.
+
Режим '''PP''' совершенно тот  
Режим <strong>PP</strong> совершенно тот  
+
 
же.
 
же.
<strong>FWH</strong> отличается от <strong>LPC</strong>
+
'''FWH''' отличается от '''LPC'''
 
протоколом, т.е. все команды для операций  
 
протоколом, т.е. все команды для операций  
 
имеют совершенно другие кодовые значения в  
 
имеют совершенно другие кодовые значения в  
 
полях обмена данными. Плюс возможность использовать  
 
полях обмена данными. Плюс возможность использовать  
несколько (до 16) <strong>FWH</strong>-устройств,  
+
несколько (до 16) '''FWH'''-устройств,  
благодаря введению новых &quot;идентификационных&quot;
+
благодаря введению новых "идентификационных"
сигналов <strong>ID0-3</strong>. По умолчанию  
+
сигналов '''ID0-3'''. По умолчанию  
 
для работы в качестве флэшки на матплате принимается  
 
для работы в качестве флэшки на матплате принимается  
<strong>ID</strong>=0000 (что и запросто можно  
+
'''ID'''=0000 (что и запросто можно  
 
проверить, прозвонив соответсвующие ножки  
 
проверить, прозвонив соответсвующие ножки  
 
(9-12) на вашей интеловской плате (они все  
 
(9-12) на вашей интеловской плате (они все  
&quot;на земле&quot;).
+
"на земле").
<em>Вообще, универсальным способом отличить  
+
''Вообще, универсальным способом отличить  
 
флэшку по типу хабовая/обычная можно просто  
 
флэшку по типу хабовая/обычная можно просто  
 
прозвонив ножку pin28 - в хабовой она будет  
 
прозвонив ножку pin28 - в хабовой она будет  
строго на земле, в то время как в &quot;обычной&quot;
+
строго на земле, в то время как в "обычной"
будет что-то в районе килоома (&quot;звонить&quot;
+
будет что-то в районе килоома ("звонить"
 
надо в колодке самой матплаты, хотя некоторые  
 
надо в колодке самой матплаты, хотя некоторые  
флэшки тоже &quot;звонятся&quot; - для этого  
+
флэшки тоже "звонятся" - для этого  
используйте pin16/28).</em>
+
используйте pin16/28).''
  
  
  
==Собственный &quot;перешивочный&quot; комплекс.==
+
==Собственный "перешивочный" комплекс.==
  
 
Если вы по работе постоянно имеете дело с потребностью в перешивке могу дать несколько рекомендаций. Кто-то может посоветовать использовать в таком случае именно программатор, хотя я так не считаю и даже не советую. Для этого есть две простые и веские причины - во-первых, программатор не знает всех типов микрух (правильней, конечно - есть такие, что знают, но их цена исчисляется тремя нулями без преувеличения), во-вторых, даже не самый крутой программатор просто дороже.
 
Если вы по работе постоянно имеете дело с потребностью в перешивке могу дать несколько рекомендаций. Кто-то может посоветовать использовать в таком случае именно программатор, хотя я так не считаю и даже не советую. Для этого есть две простые и веские причины - во-первых, программатор не знает всех типов микрух (правильней, конечно - есть такие, что знают, но их цена исчисляется тремя нулями без преувеличения), во-вторых, даже не самый крутой программатор просто дороже.
Строка 474: Строка 419:
 
Для перешивки 99.9% флэшек (к матплатам, конечно) вам понадобятся три платы:
 
Для перешивки 99.9% флэшек (к матплатам, конечно) вам понадобятся три платы:
 
# Что-нибудь подревнее, под Pentium1 - для перешивки очень распространённых Intel-флэшей 1Mbit.
 
# Что-нибудь подревнее, под Pentium1 - для перешивки очень распространённых Intel-флэшей 1Mbit.
# Что-нибудь под P2 с 2Mbit-ным биосом - для перешивки остальных &quot;обычных&quot; 1- и 2Mbit флэшек.
+
# Что-нибудь под P2 с 2Mbit-ным биосом - для перешивки остальных "обычных" 1- и 2Mbit флэшек.
# Что-нибудь под P3 из серии i8xx - для перешивки &quot;хабовых&quot; флэшек.
+
# Что-нибудь под P3 из серии i8xx - для перешивки "хабовых" флэшек.
# <em>(Добавлен в последней версии статьи - прим.ред.)</em> Что-нибудь на nForce (1/2/3).
+
# ''(Добавлен в последней версии статьи - прим.ред.)'' Что-нибудь на nForce (1/2/3).
  
В качестве <strong>п.1</strong> я использую Asus на i430HX (конкретно - P55T2P4). Для таких случаев (1Mbit и /или Intel-флэшки) рекомендуется именно Asus по причине возможности использовать исключительно удобный асусовский прошивальщик - старый pflash или поновее aflash - элементарные в использовании, не пристают с глупыми вопросами и показывают адрес повреждённой области микросхемы в случае ошибки.
+
В качестве '''п.1''' я использую Asus на i430HX (конкретно - P55T2P4). Для таких случаев (1Mbit и /или Intel-флэшки) рекомендуется именно Asus по причине возможности использовать исключительно удобный асусовский прошивальщик - старый pflash или поновее aflash - элементарные в использовании, не пристают с глупыми вопросами и показывают адрес повреждённой области микросхемы в случае ошибки.
  
В качестве <strong>п.2</strong> я использую плату на i440BX (конкретно - PCPartner-928). Она 2Mbit-ная, что позволяет шить и 1- и 2Mbit-ные &quot;обычные&quot; флэшки. Тип разъёма на ней DIP32, для перешивки PLCC32 используется переходничок PLCC32-&gt;DIP32, сделанный из старой неисправной платы с PLCC32 колодкой (см. фото).
+
В качестве '''п.2''' я использую плату на i440BX (конкретно - PCPartner-928). Она 2Mbit-ная, что позволяет шить и 1- и 2Mbit-ные "обычные" флэшки. Тип разъёма на ней DIP32, для перешивки PLCC32 используется переходничок PLCC32-&gt;DIP32, сделанный из старой неисправной платы с PLCC32 колодкой (см. фото).
  
[[Изображение:DIP32-to-PLCC32_up.jpg|thumb|Cамодельный переходник PLCC32-&gt;DIP32<BR><I>Сделан путём фигурной резьбы лобзиком по неисправным материнским платам;) плюс допаянные вручную ножки)</I>]]
+
[[Изображение:DIP32-to-PLCC32_up.jpg|thumb|Cамодельный переходник PLCC32->DIP32<BR>''Сделан путём фигурной резьбы лобзиком по неисправным материнским платам;) плюс допаянные вручную ножки)'']]
[[Изображение:DIP32-to-PLCC32_down.jpg|thumb|Cамодельный переходник PLCC32-&gt;DIP32 - вид снизу]]
+
[[Изображение:DIP32-to-PLCC32_down.jpg|thumb|Cамодельный переходник PLCC32->DIP32 - вид снизу]]
  
В качестве <strong>п.3</strong> я использую плату на i820 (конкретно - Chaintech 6CTA2). На ней стоит i82802AB (4Mbit), что позволяет шить как сами интеловские &quot;хабы&quot; так и &quot;хабовые&quot; 2- и 4Mbit-ные флэшки.
+
В качестве '''п.3''' я использую плату на i820 (конкретно - Chaintech 6CTA2). На ней стоит i82802AB (4Mbit), что позволяет шить как сами интеловские "хабы" так и "хабовые" 2- и 4Mbit-ные флэшки.
  
В качестве <strong>п.4</strong> я использую плату на nForce (первый который, но не принципиально) - Abit NV7-133R. Она предназначена для самых тяжёлых случаев - для перешивки &;quot;чисто&quot; LPC-шных флэшек. /Просто многие (даже, видимо - большинство) производители плат на nForce1/2/3 (а LPC стал использоваться именно на них) обычно используют флэшки с поддержкой и LPC и <em>FWH</em>, что позволяет шить их на <strong><em>п.3</em></strong>)/.
+
В качестве '''п.4''' я использую плату на nForce (первый который, но не принципиально) - Abit NV7-133R. Она предназначена для самых тяжёлых случаев - для перешивки "чисто" LPC-шных флэшек. /Просто многие (даже, видимо - большинство) производители плат на nForce1/2/3 (а LPC стал использоваться именно на них) обычно используют флэшки с поддержкой и LPC и ''FWH'', что позволяет шить их на '''''п.3''''')/.
  
Вообще никаких особых условий по выбору конкретной модели или фирмы (кроме случая с Асус для Intel-флэшей) нет. Не нужно стремится брать для такой цели &quot;крутые&quot; и &quot;навороченные&quot; платы. Нужно строго наоборот - чем &quot;безвестнее&quot; и примитивнее плата - тем более лучший получится из неё &quot;программатор&quot;. Т.е. для этого просто идеальны всякие Акорпы да PCPartner-ы, а вот любые платы даже с минимальными &quot;претензиями&quot; всегда ухудшают &quot;универсальность&quot;. Плюс, конечно, другим важным условием является хороший и удобный доступ к гнезду флэшки.
+
Вообще никаких особых условий по выбору конкретной модели или фирмы (кроме случая с Асус для Intel-флэшей) нет. Не нужно стремится брать для такой цели "крутые" и "навороченные" платы. Нужно строго наоборот - чем "безвестнее" и примитивнее плата - тем более лучший получится из неё "программатор". Т.е. для этого просто идеальны всякие Акорпы да PCPartner-ы, а вот любые платы даже с минимальными "претензиями" всегда ухудшают "универсальность". Плюс, конечно, другим важным условием является хороший и удобный доступ к гнезду флэшки.
  
В качестве главного программного обеспечения используются <em>amiflash</em> (конкретно - версия <em>8.37</em>, только с ключами). Он знает большинство чипсетов/флэшей и очень удобен в работе благодаря удобной коммандной строке (батфайлик для него прилагался выше).
+
В качестве главного программного обеспечения используются ''amiflash'' (конкретно - версия ''8.37'', только с ключами). Он знает большинство чипсетов/флэшей и очень удобен в работе благодаря удобной коммандной строке (батфайлик для него прилагался выше).
  
Для редких случаев, когда не справляется <em>amiflash</em> (некоторые типы флэшек и/или экзотные чипсеты) - используется <em>awdflash</em> (обязательно с ключом /f).
+
Для редких случаев, когда не справляется ''amiflash'' (некоторые типы флэшек и/или экзотные чипсеты) - используется ''awdflash'' (обязательно с ключом /f).
  
Для тяжёлых случаев (как правило очень экзотные флэши/биосы/чипсеты, очень старые, либо, наоборот, самые новые матплаты) используется <em>Uniflash</em>. Он же может быть использован с целью визуальной проверки места проблем во флэшке. Плюс особенно стоит обратить на него внимание счастливым обладателям современных плат на <strong>Nforce2</strong>, использующие <strong>LPC</strong>-флэшки типа <strong>PMC</strong> (как правило - <strong><em>Epox</em></strong>/<strong><em>Gigabyte</em></strong>).
+
Для тяжёлых случаев (как правило очень экзотные флэши/биосы/чипсеты, очень старые, либо, наоборот, самые новые матплаты) используется ''Uniflash''. Он же может быть использован с целью визуальной проверки места проблем во флэшке. Плюс особенно стоит обратить на него внимание счастливым обладателям современных плат на '''nForce2''', использующие '''LPC'''-флэшки типа '''PMC''' (как правило - '''''Epox'''''/'''''Gigabyte''''').
  
<strong>PMC</strong>-шки умеют работать сразу во всех трёх режимах (<strong>LPC</strong>/<strong>FWH</strong>/<strong>PP</strong>)  
+
'''PMC'''-шки умеют работать сразу во всех трёх режимах ('''LPC'''/'''FWH'''/'''PP''')  
и, может быть, из-за этого часто &quot;стандартные&quot; прошивальщики некорректно их перешивают (а то и зависают в процессе перешивки) - <em>uniflash</em> же это делает исключительно корректно.
+
и, может быть, из-за этого часто "стандартные" прошивальщики некорректно их перешивают (а то и зависают в процессе перешивки) - ''uniflash'' же это делает исключительно корректно.
  
<em>п.с. последние версии uniflash стали настолько корректными и удобными, что теперь я в основном только им и пользуюсь...</em>
+
''п.с. последние версии uniflash стали настолько корректными и удобными, что теперь я в основном только им и пользуюсь...''
  
===Экстремальные способы перешивки/восстановления.===
+
=== Экстремальные способы перешивки/восстановления ===
  
В некоторых совсем клиниеских случаях приходится прибегать к использованию сразу двух прошивальщиков - например, прошиваете сначала с помощью <em>amiflash</em>, а после этого сразу же с помощью <em>uniflash</em>. После первой попытки <em>амифлэш</em> ругнётся, что прошил некорректно, а <em>uniflash</em> перешьёт уже корректно. В то время как другая последовательность действий (например, сначала <em>uniflash</em>, а потом <em>amiflash</em> и т.п.) может не принести должного результата. Это, скорей всего, связано с разными алгоритмами перешивки конкретных флэшей, когда одному прошивальщику удаётся правильно сделать первую часть операции, а другому - заключительную.
+
В некоторых сложных случаях приходится прибегать к использованию сразу двух прошивальщиков. Обычно это [[uniflash]] + [[awdflash]] (но не обязательно).<FONT SIZE="-2"> Например, прошиваете сначала с помощью [[amiflash]], а после этого сразу же с помощью [[uniflash]]. После первой попытки амифлэш ругнётся, что прошил некорректно, а uniflash перешьёт уже корректно.</FONT>
  
(п.с. и это всё, кстати, не бред сумасшедшего, а реальный опыт прошивки флэшей, например, типа AMD, имеющих нестандартную защиту от записи или флэшек, имеющих повреждённую и/или нестабильную область)
+
Рекомендуемой "связкой" является [[awdflash]] + [[uniflash]]. Конкретно технология использования подобной "сладкой парочки" следующая:
 +
# Запускаем [[awdflash]] с "родной" флэшкой (той, с которой запускался компьютер) и выходим без прошивки. Например, можно запустить его ([[awdflash]]) с ключиками "/<B>pn</B>/<B>sy</B> <I>111.bin</I>" - записав ненужный биос (просто для проверки :) ).
 +
# Ставим ([[hotswap]]) нужную для прошивки флэшку, запускаем [[uniflash]] и ''радуемся'' :) (должно прошиться нормально).
 +
# Ежели, все-таки, ''не радуемся'' (прошивается некорректно) - еще раз "просто" запускаем [[awdflash]] (без прошивки и уже на "прошиваемой" флэшке) и снова пробуем [[uniflash]] - уж точно должно помочь (с поправкой на то, что [[uniflash]] "знает" данный тип флэшек).
  
Когда у вас есть под рукой только &quot;одномегабитная&quot; плата, а нужно прошить двухмегабитку (&quot;обычную&quot;) можно сначала прошить первую половину (1Mbit), а потом &quot;отдельно&quot;, вторую половину. Для этого разбиваете файл биоса на две части (по 1Mbit=128kB) с помощью любого hex-редактора и прошиваете сперва последнюю часть. После этого коротите ножку 30 (<em>A17</em> в 2Mbit и NC в 1Mbit) на землю и заливаете &quot;начальную&quot; половину.
+
"Скрытый смысл" использования подобного метода следующий. При запуске [[awdflash]] (равно как и любого другого прошивальщика) производится "размапливание" чипсета - для определения типа флэшки и последующей перешивки. При выходе - обычно, как бы, должно происходить "замапливание", однако на практике выясняется, что "оно никому не должно" :). Чем и удается воспользоваться [[uniflash]]-у, который по разным причинам (обычно - незнание современного железа) сам не может правильно и до конца корректно "размапить" чипсет. Кроме того, помимо размапливания чипсета на предмет физического доступа в область памяти флэшки, [[awdflash]] умеет (в случае Award BIOS) снимать различные "защиты от записи", о которых не в курсе [[uniflash]] в силу своей, так сказать, "классичности" -  авторы оного ("по незнанию" ;) ) использовали в его движке в подавляющем большинстве исключительно "классические" методы работы с железом (плата-чипсет/флэш-биос).
 +
В общем, в "примитивном" описании действенности данного метода, можно сказать следующее. [[awdflash]], как более "умный", знающий всяческие "специфичности" для всевозможных (особенно новых) плат - начинает работу (прошивку). Однако из-за "избытка ума" умудряется оступаться на простых вещах.А по "простым вещам" - нет лучше [[юнифлеша]]. В результате чего их симбиоз и становится удачным (иногда - единственным) решением для прошивки некоторых типов флэшек на некоторых чипсетах (так, например, [[Winbond]] [[W39V040AP]] ([[LPC]]) на [[nForce2]] - прекрасно шьется описанным методом).
 +
 
 +
Когда у вас есть под рукой только "одномегабитная" плата, а нужно прошить двухмегабитку ("обычную") можно сначала прошить первую половину ([[1Mbit]]), а потом "отдельно", вторую половину. Для этого разбиваете файл биоса на две части (по ''1Mbit''=''128kB'') с помощью любого hex-редактора и прошиваете сперва последнюю часть. После этого коротите ножку 30 ('''A17''' в [[2Mbit]] и '''NC''' в [[1Mbit]]) на землю и заливаете "начальную" половину.
  
 
(п.с. Ограничение данного способа может возникнуть, если флэшка не будет поддерживать нужную для такого случая секторизацию записи)
 
(п.с. Ограничение данного способа может возникнуть, если флэшка не будет поддерживать нужную для такого случая секторизацию записи)
  
Другим развитием (вариантом) предыдущей ситуации может быть заливка лишь &quot;конечной&quot; части (по сути нам нужен лишь бутблок). После этого таким образом &quot;недошитая&quot; микросхема вставляется в родную плату, где автоматически из-за неоответствия CRC начнёт грузится бутблок. С помощь которого уже в родной плате всё можно будет банально восстановить &quot;с дискетки&quot;.
+
Другим развитием (вариантом) предыдущей ситуации может быть заливка лишь "конечной" части (по сути нам нужен лишь бутблок). После этого таким образом "недошитая" микросхема вставляется в родную плату, где автоматически из-за несоответствия CRC начнёт грузиться бутблок, с помощью которого уже в родной плате всё можно будет банально восстановить "с дискетки".
  
 
===Прошивка флэшек с различными напряжениями перепрограммирования.===
 
===Прошивка флэшек с различными напряжениями перепрограммирования.===
Различные типы флэшей рассчитаны на разные
 
вольтажи программирования. Самые распространённые
 
- это 12V/5V для старых плат, для современных,
 
это 3.3V/3V/2.7V и меньше. Теоретически, для
 
каждого типа нужно выставлять нужное конкретной
 
флэшке напряжение с помощью перемычек на матплате
 
(если такие, конечно, имеются). Практически
 
же получается, что флэшки с более меньшим
 
напряжением программирования совершенно благополучно
 
шьются более высоким напряжением.
 
Т.е. если на матери стоит 5V-овая флэшка
 
(например, большинство серии 29xxxx), то флэшки
 
с более низким уровнем перепрошивки тоже на
 
ней прошьются на ура без всяких претензий
 
по его завышенному значению. И без хоть какой-то
 
вероятности повреждения более низковольтных
 
клиентов.
 
В случае обратного соотношения - перешивка
 
12V-овых флэшек на 5V-овых матерях (или с
 
перемычками установленными на 5V) тоже часто
 
имеет благополучный исход. Хотя здесь он уже
 
и не является правилом - поэтому при программировании
 
микросхем серии 28xxxx (большинство которых
 
- 12V) - будьте бдительны по поводу правильно
 
выставленных перемычек и не стоит пытаться
 
их перешивать хотсвопом на современных платах
 
(т.к. 12V-ые были лишь P1-P2), т.е. чем древней,
 
тем больше шансов на корректную перешивку.
 
Если перемычки на плате не подписаны - можете
 
просто померять напряжение на <em>pin32</em>
 
(справа сразу от ключа, если смотреть ключом
 
вверх). В самом крайнем случае, если на плате
 
нет перемычек - можно отогнуть эту ногу из
 
сокета и подать на неё 12V &quot;вручную&quot;
 
(например прямо от разъёма БП).
 
  
 +
Различные типы флэшей рассчитаны на разные вольтажи программирования. Самые распространённые - это 12V/5V для старых плат, для современных, это 3.3V/3V/2.7V и меньше. Теоретически, для каждого типа нужно выставлять нужное конкретной флэшке напряжение с помощью перемычек на матплате (если такие, конечно, имеются). Практически же получается, что флэшки с более меньшим напряжением программирования совершенно '''благополучно''' шьются более высоким напряжением.
 +
 +
Т.е. если на матери стоит 5V-овая флэшка (например, большинство серии 29xxxx), то флэшки с более низким уровнем перепрошивки тоже на ней прошьются на ура без всяких претензий по его завышенному значению. И без хоть какой-то вероятности повреждения более низковольтных клиентов.
 +
 +
В случае обратного соотношения - перешивка 12V-овых флэшек на 5V-овых матерях (или с перемычками установленными на 5V) тоже часто имеет благополучный исход. Хотя здесь он уже и не является правилом - поэтому при программировании микросхем серии 28xxxx (большинство которых - 12V) - будьте бдительны по поводу правильно выставленных перемычек и не стоит пытаться их перешивать хотсвопом на современных платах (т.к. 12V-ые были лишь P1-P2), т.е. чем древней, тем больше шансов на корректную перешивку.
 +
 +
Если перемычки на плате не подписаны - можете просто померять напряжение на ''pin32'' (справа сразу от ключа, если смотреть ключом вверх). В самом крайнем случае, если на плате нет перемычек - можно отогнуть эту ногу из сокета и подать на неё 12V "вручную" (например, прямо от разъёма БП).
 +
 +
== Восстановление запаянных биосов БЕЗ их выпаивания ==
 +
 +
Как уже говорилось в "азах", для прошивки флэшек, которые впаяны в плату, можно использовать метод "порчи CRC" - это когда "искусственно" нарушается BIOS-CRC, точней (и правильней) - её подсчёт в процессе POST.
 +
 +
Обычно данный метод применим к случаям, когда в биос "случайно" был зашит "не совсем тот" биос, либо когда в процессе работы плата в один прекрасный момент перестала загружаться, зависая на распространённом "Building DMI Pool" и т.п. Т.е. главным условием является - "живой" бутблок, который и вызывается при некорректной CRC, запуская процедуру "аварийного" восстановления биос (обычно - с дискеты).
 +
 +
=== PP ===
 +
 +
Для "обычных" флэшей, как уже было указано в [#Немного о принципах работы. | "азах"], всё достаточно просто - коротим '''A15''' и '''A16''', что "не заденет" работу бутблока, однако точно испортит CRC. Далее - дело техники, подготавливаем дискетку (винчестер, CD-ROM...) и восстанавливаем.
 +
 +
=== FWH/LPC ===
 +
 +
Для интерфейсов [[FWH]]/[[LPC]] такой трюк (закорачивание адресных линий) не пройдёт, т.к., во-первых, из-за их мультиплексирования (в режиме '''PP'''), во-вторых, из-за того, что в "обычном" режиме работы они (интерфейсы) используют лишь четыре линии - '''FWH0-3'''/'''LPC0-3'''. И тут уже не получится разделить на "используемые" и "не используемые" (бутблоком).
 +
 +
Здесь придётся использовать "временной" фактор. Процедура подсчёта CRC биоса занимает некоторое конечное и "относительно длительное" время (десятые доли секунды). И если в этот момент (подсчёта CRC) "что-то нехорошее" произойдёт с любым из '''xAD0-3''' выводов - CRC будет подсчитана неверно. Потому алгоритм следующий:
 +
 +
1. Ищем флэшку на плате, находим у неё контакты '''15'''-'''16'''-'''17'''. ('''DQ2'''-'''Vss'''-'''DQ3''').
 +
 +
2. Заготавливаем "устройство корочения" (например, пинцет) и "прицеливаемся" так, чтобы закоротить '''15'''-'''16''' либо '''16'''-'''17'''.
 +
 +
3. Включаем компьютер и через 1-3 секунды (зависит от платы-биоса-процессора) делаем ''однократное'' [[короткое]] '''замыкание'''.
 +
 +
4. В зависимости от "времени" замыкания:
 +
* Если сделать это "зарано" - биос еще "не дошёл" до этапа подсчёта CRC, а потому, понятно, просто зависнет и ничего не выдаст на экран.
 +
* Если сделать это "запоздно" - биос уже проверил (успешно) CRC и был скопирован в '''Shadow''', потому он никак "не отреагирует" на корочение (ЮМ "отключил" флэшку - POST работает в ОЗУ) - т.е. поведёт себя также, как без "корочения", выдаст те же сообщения и/или зависнет (там же).
 +
В любом из таких случаев - делаете рестарт (RESET) и повторяете попытку с небольшим "сдвигом" по времени корочения в ту или иную сторону. Обычно, в зависимости от опыта, фазы Луны и везения - это не больше 10-20 попыток (может просто последовательно "перебирать" интервалы от нуля секунд и дальше :).
 +
Если у вас есть [[POST-карта]] - коротить нужно сразу же после появления посткода '''C3''' (для [[Award]]).
 +
 +
 +
 +
 +
Статья в '''бета'''-версии, добавления/изменения ''обязательно_последуют'', все поправки/пожелания - ''вносите'' сюда '''самостоятельно'''.
 +
 +
Севко Роман, 11.26.03. (Первая версия)
 +
А также другие пользователи rom.by (см. "история" данной страницы).
  
Статья в <b>бета</b>-версии, добавления/изменения
+
Перепечатка без согласования
<i>обязательно_последуют</i>, все поправки/пожелания
+
с администрацией ROM.by - <font color="#FF0000">не допускается.</font>
- в форум.
+
Севко Роман, 11.26.03.
+
<font color="#FF0000">Перепечатка без согласования
+
с автором не допускается.</font>
+

Текущая версия на 16:29, 28 декабря 2007

Содержание


Процесс перешивки BIOS в руках опытного - банальность, профессионала - искусство, а начинающего - трагедия.

Часть первая. Для тех, кому лень читать, а хочется побыстрей прошить и забыть.

Мифы.

Не буду акцентировать вопрос на том, что такое биос, какие они бывают и зачем. Раз вы это читаете, значит, вам что-то уже известно. Потому начнём с обратного - развеем самые стандартные, почему-то непотопляемые мифы и заблуждения.

  1. Шить биос нужно (лучше) только "своим" прошивальщиком (пример: Award - с помощью AwdFlash, AMI - AMIFlash).

Бред. Однако некоторым сложно это понять и поверить - ведь на сайте производителя платы много всяческих грозных непонятных предупреждений (да ещё и на нерусском). Почему же так? Интересно - тогда дочитайте эту и прочитайте следующую часть. :)

  1. Шить биос "на горячую" (Hot Swap - "хотсвапом") нужно (можно) только на точно такой же матери (таком же чипсете, с точно такой же флэшкой т.п.)

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

Прошивальщики.

Самыми популярными являются AwdFlash, AMIFlash и UniFlash. Остальные являются специфичными для конкретной фирмы (например, для "родных" матерей от Intel либо Asus - свой, ибо другие могут не сработать).

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

ВНИМАНИЕ: запуск флэшера БЕЗ КЛЮЧЕЙ (т.е., соответственно, с оными по умолчанию) может привести к ПОВРЕЖДЕНИЮ биоса, даже если вы не собирались его перешивать, а лишь полюбопытствовали либо хотели сохранить текущую версию. Это крайне редкое явление и в основном касается некоторых версий amiflash, но оно точно имеет место (сам попадался и не раз:).

ДОПОЛНЕНИЕ: запуск различных утилит (например, типа DMICFG), имеющихся на компактах прилагаемых к матплате (для "настройки" биоса) часто приводят к ситуации аналогичной предыдущему абзацу - повреждение биоса, даже если вы не собирались ничего делать, а лишь полюбопытствовали и ничего не перешивали.

AWDFLASH.

Самый популярный, но не самый лучший. Запускать с ключиками:

awdflash имя_прошивки /cd/cp/py/sn/f/r

В этом случае биос перешьётся без лишних вопросов (/py - Program=Y, /sn - Save=No, /f - не проверять от той ли платы это биос и биос ли это вообще:) и после окончания прошивки комп сразу перезагрузится (ключик /r - Reset, ежели не нужно - не писать). Ключи /cd/cp (Clear DMI, Clear PNP) настоятельно рекомендуются к ним можно добавить автоматический сброс CMOS (по умолчанию) - /cc. Если прошиваем не award bios (например ami), используем ещё и ключик nab: Work with not Award BIOS

AMIFLASH.

Не такой популярный как awdflash, но в отличие от оного - самый лучший (даже несмотря на вышеупомянутые проблемы с некоторыми версиями при запуске без ключиков). Запускать с ключиками:

amiflash имя_прошивки /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g

Если нужно сохранить старый биос, запускать с ключиками:

amiflash /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g/sимя_прошивки
После ключика /s - пробела быть не должно!

Чтоб не набирать такую кучу ключей - не поленитесь, сделайте один раз .bat-файлик с содержимым типа:

c:\vc\utils\amf.exe %1 /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g

(или можно скачать его с этого сайта).

Uniflash.

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

Особенности перешивки биосов на платах от Asus.

Для перешивки асусовских плат не подойдут "стандартные" прошивальщики, т.к. ВСЕ асусовские биосы (начиная с самых древних Pentium1) блокируют обычные способы перешивки. Для перешивки на таких матплатах придётся использовать фирменные_асусовские_утилиты. Для самых старых плат - это pflash, для более современных - aflash (хотя во многих случаях aflash подходит и для очень старых), для совсем новых - придётся использовать утилиты под винду. В случае pflash/aflash выражение "придётся использовать" не совсем корректно, т.к., во-первых, они крайне удобны, понятны, достаточно универсальны и, главное, не пристают с вопросами, прошивая "всё, что шьётся". :) Во-вторых, амифлэш всё-таки можно использовать, хоть он и заканчивает работу с ошибками (точней не он, а dos4gw). В любом случае, всем счастливым обладателям асусовских плат к перешивке нужно подходить с особым вниманием ибо восстановление при ошибке дело непростое, а иногда очень даже сложное. И если вы даже имеете опыт и даже немалый - повторюсь, будьте бдительны, асусовские инженеры используют в своих творениях крайне изощрённые меры для защиты биосов, обратной стороной медали которых являются иногда возникающие серьёзные проблемы с "оживлением" - плата может "прикидываться" дохлой ("00" на POST-карте), флэшка - аналогично (при попытках перешивки на других платах), хотя реально и один и другой будут совершенно живыми, что может подтвердится установкой оных в другие точно такие же, только исправные... Если вы боретесь(-лись) с подобными глюками - внимательно прочтите главу о LPC-интерфейсе (асусовцы его давно применяли, в то время как другие стали его использовать совсем недавно)... п.с. подобное в определённой степени (желательность и/или обязательность использования "родных" фирменных прошивальщиков) касается и некоторых других производителей (как правило - известных). Например, многие платы от Abit также имеют тонкости при программировании - тот же Uniflash, вообще, предупреждает, что не дружит с этой фирмой...

Основные проблемы и сообщения об ошибках.

Объём файла прошивки не сопадает с объёмом флэшки.

Распространённая проблема. Как правило является результатом того, что производитель использовал в разных версиях (матплат) разные флэшки (по объёму). Например, первые платы какой-то модели шли с мегабитными, а все следующие - с двухмегабитными. В некоторых случаях, если производитель не признаётся, что выпускал платы с биосы разных объёмов, это может быть свидетельством того, что плата "левая" (т.е., например, в подделке используется более дешёвая флэшка большего объёма - 4Mbit вместо 2Mbit).

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

Ещё более распространённая вещь. Однако с вышеуказанными "секретными" ключиками вас больше не будут посылать… почитать даташиты. :)

Прошивальщик не может определить тип флэшк и потому не прошивает её.

Это тоже частое явление. Причин тому может быть несколько:

  • стоит защита от перезаписи (именно это обычно и предлагают проверить матюгающиеся прошивальщики). На древних платах защита ставилась перемычками, в современных - как правило, выбирается в BIOS Setup (пунктик типа BIOS Flash Protection = En./Dis.).
  • данная версия прошивальщика не знает данный тип флэшки. Редкое явление - обычно возникает при попытке шить древние флэши новыми версиями либо наоборот.
  • всунутая хотсвапом флэшка (тип) не поддерживается самой матерью - см. дальше по FWH/LPC интерфейсам...
  • просто битая флэшка - убедитесь ещё раз, что Вы вставили её правильно... ;)
  • флэшка - вовсе и не флэшка, а "однократной записи" либо вообще - с УФ-стиранием (с окошком). Верно, как правило, лишь для самых древних плат (до Pentium1) и можно определить по маркировке - она будет начинасть с цифр 27ххх .

Всё прошло благополучно, без видимых проблем и… тишина.

Для восстанавления вам придётся всё ж почитать подробней - см. дальше.


Часть вторая. Для тех, кому это нужно/интересно, либо было лень читать первую, а теперь надо восстановить "как было"...

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

Прошивка на программаторе.

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

Хотсвоп (на горячую).

Берётся другая РАБОЧАЯ плата. Как уже говорилось, она не обязательно должна быть "точно такая же", "на таком же чипсете", "той же фирмы". Главное, на что стоит ориентироваться - тип/маркировка флэшки. Есть две основные "совместимые" группы:

  • "обычные" (в частности, именно к ним относятся все "прямоугольные" флэшки - в DIP32 корпусе) - 28xxxx, 29xxxx, 39xxxx, некоторые 49xxxx
  • "хабовые" (все они только "квадратные в корпусе PLCC32) - большинство серии 49xxxx и "родные" интеловские 82802xx

Соответственно, если на плате для восстановления будет "совместимая" флэшка того же (или большего) объёма - всё должно пройти.

Как сделать.

Extractor6.jpg
Вариант промышленного "ухвата" для DIP32

Проявите фантазию - главное "во время процесса" не ронять на работающую плату чужеродные токопроводящие детали (и не проливать жидкости). Для микрушек в корпусе DIP32 - попроще. Обычно рекомендуют обвязать их нитками, чтоб выдернуть можно было полегче. Я же порекомендую найти что-нибудь типа шлейфика от старенького COM-порта и подложить его под микросхему - так и схватиться удобней и ширина как раз на микросхему и толщина кабеля не даст сильно застрять флэшке в разъёме.


Для "квадратных" (PLCC32) - чуть сложней. Можно продолжить мучаться с нитками. Если есть неплохой доступ и руки не дрожат - можно банально подковырнуть иголкой в соответствующих уголках и аккуратно вынуть. Если же постоянно занимаетесь этим (перешивкой подобных) или просто хотите "чтоб наверняка" - приклейте к "спине" флэшки какую-нибудь штуку, чтоб можно было удобно вынимать/вставлять: подойдёт кусок пластмассы или даже растопить часть стержня для клеевого пистолета… В общем - это уже дело техники, в крайнем случае вы можете пойти и купить специальный "экстрактор" для PLCC32.


Варианты "ухватов" для PLCC32
Extractor2.jpg
Extractor3.gif
Extractor5.jpg

С дискеты (для современных - в том числе с винчестера/CD-ROM-а).

В случае, когда компьютер умер не полностью и при загрузке противно хрустит дисководом и/или выдаёт надпись "BIOS checksum error" можно попытаться восстановить биос без походов к товарищу.

ВНИМАНИЕ: Если у вас стоит AGP/PCI видеокарта - Вы можете не увидить этого сообщения (биос чексум еррор). Для этого потребуется ISA-карточка для P1-P3-компьютеров, PCI-карта для более современных, не имеющих ISA-слотов. Хотя в большинстве современных плат бутблок (а именно он сообщает об этом грустном факте, пытаясь восстановить биос с дисковода) поддерживает вывод и на AGP-карточки.

ДОПОЛНЕНИЕ: Если у вас есть POST-карта (например, встроенная в матплату), то "BIOS checksum error" просто отслеживается по ошибке "41" в самом "начале" POST-а (если вы не способны оценить "начало", то это где-то 5-6 код из тех, что вы успеет разглядеть:). Код "41" в Аварде - это обращение к FDD (попытка загрузиться с дискеты), в случае AMI "бутблочные" коды попыток загрузиться с авариной дискеты - "F0-FE".

В большинстве случаев для этого нужно сделать чистую системную дискету (т.е. только файлы io.sys, msdos.sys и command.com) и записать на неё файл с прошивкой (bios.bin), сам прошивальщик (awdflash.exe) и autoexec.bat с соответствующей командной строкой внутри:

"awdflash bios.bin /cd/cp/py/sn/f/r"
"amiflash amibios.rom /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g"

При чём не рекомендую использовать свои имена прошивок/прошивальщиков (т.е. стоит использовать только вышеуказанные стандартные названия) - некоторые биосы (бутблоки) могут просто проигнорировать такой диск, выдавая всё то же сообщение о несистемной дискете в дисководе.

Однако единого "стандарта" на процесс восстановления с дисковода всё же нет. Большинство "брэндовых" компов (т.е. фирменные Intel, HP/Compaq, Dell, IBM, Fujitsu etc) могут быть оживлены дискеткой, содержимое которой можно слить с их собственного сайта (там же должно быть подробное описание).

В зависимости от современности конкретной платы/биоса (Award/AMI) на дискетке может потребоваться наличие ЛИШЬ (т.е. она, наоборот, не должна быть системной) файлов прошивальщика и прошивки или даже, вообще, только самой прошивки (когда прошивальщик встроен в биос).

Короче имеются различные вариации и если к ним добавить возможность просто аппаратного сбоя самого бутблока и/или железа, то восстановление прошивки данным методом становится не самым надёжным и "многовероятным" способом (это же подтверждает и статистика). Однако, всё равно, начинать лучше именно с него - авось, повезёт и свинка уцелеет… ;)

Часть третья. Для тех, кому, всё же, нужно разобраться. Азы.

Что ж, если дочитали досель - значит начнём с самого начала. Которое я пропустил из-за того, что очень многие его не читают :) , предпочитая середину или даже сразу конец.

Немного о принципах работы.

PP-тип интерфейс FlashBIOS

"Обычная" флэшка имеет следующие сигналы:

  • 8 линий данных DQ0-DQ7
  • 17-18 линий адреса A00-A16/17 (в зависимости от объёма: 1Mbit - 17, 2Mbit - 18)
  • CE# (ChipEnable) - "чипселект" (разрешение на работу с микросхемой)
  • OE# (OutputEnable)
  • RE (возможность считать байт данных)
  • WE# (WriteEnable)
  • WE (возможность записать байт данных)

Короче, достаточно примитивно и понятно, даже если Вы не обладаете особыми познаниями в электронике. И уже из этого видно, что уже только из-за 8-битной шины данных (в современных Nforce2 - она 128-bit) скорость выборки данных из флэшки (которая к тому же ещё больше ухудшается из-за больших задержек самой флэшпамяти) превратила бы загрузку даже самого быстрого компьютера в мучительное ожидание. Поэтому флэшка подключена особым способом к южному мосту, что позволяет "отображать" ("Shadow") её содержимое на "реальную" память, эмулируя при этом память ReadOnly (ПЗУ по-нашенски) и снимая ограничение по скорости.

Опять же, из сказанного ещё один вывод: ежели Вы засунули совсем нездоровую флэшку либо вставили её неправильно - пострадать может не только сама микросхема (что обычно и случается при вставлении "задом наперёд"), но и напрямую_подключённый_южный_мост (из неоднократного :( личного опыта). В адресном пространстве флэшка занимает самые верхние адреса E0000-FFFFF (верно для 1Mbit, для остальных аналогично, потому разберём на примере именно 1Mbit/AwardBIOS). После включения компьютера и окончании сигнала RESET# процессор выполняет свою первую команду по адресу F000:FFF0. После самой первичной инициализации происходит проверка различных контрольных сумм (их много в биосе), главная из которых - контрольная сумма E000:0-FFFF+F000:0-BFFC. Если она нарушена происходит запуск бутблока, расположенного по "самым" верхним адресам (F000:C000/E000-FFFF - последние 8/16kB), который производит инициализацию дисковода и пытается считать с него систему и/или запустить прошивальщик с прошивкой.

Отсюда ещё один интересный вывод: если вы хотите принудительно запустить бутблок (для перешивки) можно испортить CRC "вручную" - закоротив адресные линии "выше" бутблочных. Например, я обычно корочу рядом расположенные A15 и A16 (pin 2 и 3). Объём бутблока = 16kB = 2^14, в результате чего он никак не пострадает, а контрольная сумма "остального", понятно, собъётся. Если вам не совсем понятно, зачем это может быть нужно, то когда столкнётесь с запаянной флэшкой, в которую залили "похожую" прошивку - поймёте. ;) И, кстати, для линий адреса это (корочение) совершенно безопасно. После проверки CRC биос "шадовится" (операция Shadow), т.е. происходит копирование содержимого флэшки в "реальную" память, сама флэшка отключается (южным мостом), а для того, чтоб программы поверили, что обращаются к ПЗУ на область адресов биос вешаются атрибуты ReadOnly посредством программирования регистров SB (и/или MSR процессора для AMD K7/K8). Вся дальнейшая работа происходит только с "зашадовленным" образом флэшки.

Вывод: Именно по этим причинам мы можем беспрепятственно вытаскивать флэшку, сразу же, как только увидим строчку "Starting Windows/DOS/linux". Если же потребуется работа именно с самой флэшкой (например, запись в неё ESCD/DMI), то для этого используются соответствующие процедуры, специфичные для каждого чипсета - нужно будет опять подключить флэшку к шине и снова отключить после окончания операции. Вывод: из-за различных способов программирования подключения/отключения флэшки (для различных чипсетов) прошивальщик должен уметь это делать, т.е. "знать" чипсет, на котором происходит перешивка.

Особенности программирования микросхем Intel 28Fxxx.

Если в вашей плате стоит флэшка от Intel - будьте трижды осторожны при прошивке. Дело в том, что интельные микросхемы используют аппаратную защиту бутблока. Что это значит? А это значит, что в них присутствует ещё один сигнал - RP# (pin 30) - разрешение на программирование бутблока. В двухмегабитках - это A17, 1Mbit - NC (NotConnected, не используется). Т.е. для того, чтоб корректно прошилась вся_область_флэшки на ножке RP# должно присутствовать +12V. Именно это задают распространённые на многих Socket7-матерях перемычки с названием Flash Type: Intel / Non-Intel.

Вывод: Если в плате стоит 'Intel 28Fxxx, а разводка платы не предусматривала правильную коммутацию для программирования Intel-флэшей (что является очень распространённым явлением) - BIOS погибнет при первой же попытке перешивки без особых шансов на восстановление (на этой плате). Для перешивки Intel 28Fxxx на таких платах (без разводки RP#) нужно подать на pin30 вручную +12V, но так, чтоб оно не пошло на саму плату (а это A17) - для это можно просто отогнуть эту лапку, т.е. чтоб она не втыкалась в сам разъём.

Программные особенности программирования флэшек.

Главный аспект, на который хотелось бы обратить внимание - флэшка не перепрограммируется "зараз" (сразу одним блоком) и, наоборот, нельзя перезаписать один отдельно взятый байт. Флэшка поддерживает лишь "блочную" запись (секторизация). У разных типов флэшек разная секторная организация. Например у распространённой Intel 28F001BX есть следующие блоки:

  1. Первый блок, в начале, самый большой, "главный" - 112kB. В нём обычно располагается всё "тело" упакованного биоса (поэтому самый большой).
  2. Дальше два одинаковых блока по 4kB - в этих адресах обычно хранятся изменяемые данные типа ESCD/DMI/CMOS/пароли и т.п.
  3. Последний блок - 8kB - бутблок. Т.е. говоря техническим языком - i28F001BX имеет организацию 112+4x2+8. Достаточно понятная и логичная организация: самый большой блок в 112kB, всё равно, переписывается лишь при обновлении биоса, дальше - постоянно изменяемые данные, потому сделаны два маленьких блока (чтоб легче и быстрей было перезаписывать эти "куски") и в конце - неизменяемый обычно бутблок (специально отдельно от других - для защиты биоса в смысле возможности запуска аварийного восстановления с дисковода) - он всегда сделан отдельно, что его "не трогали" при обычных перезаписях других блоков.

Некоторые флэшки имеют очень мелкую секторизацию, например, та же SST 29EE020 (2Mbit) имеет целых 2048 одинаковых секторов по 128 байт. Однако большинство, всё ж, придерживается организации схожей с вышеприведенной, потому как маленький блок имеет и свои отрицательные стороны (например, в плане более сложной защиты от перезаписи).

Часть четвёртая. "Хабовые" флэши.

Как всё было просто в старые добрые времена - шина адреса, шина данных, CE/WE/OE… ;) Но прогресс (особенно в отдельно взятой фирме ;) не стоял на месте и с появлением чипсетных наборов i8xx получило распространение это страшное и многим малопонятное название - "хабовые" флэшки.

LPC-интерфейс.

В конце 97-го года Intel решила, что у мощного процессора обязательно должен быть баальшой биос (4-8MBit и больше, хотя большинство фирм до сих пор используют в основном лишь 2Mbit), а для этого никак не хватит ног (для линий адреса) на широкораспространённых "обычных" PLCC32-флэшках. Сказано - сделано, так появился стандарт LPC (LowPinCount - "малоколичественноножное" соединение, хотя корпус по понятным причинам оставили прежним - PLCC32). Кроме возможности использования больших (до 4Gb!) объёмов флэшей одной из самых главных причин называлась скорая погибель ISA-шной шины, отстутствие которой снимало потребность разводить линии адреса/данных и позволяло ограничиться меньшим количеством линий для общения, в первую очередь, "мультика" (SuperIO) и южного моста (очевидная возможность же интеграции SIO в сам SB скромно умалчивалась;). В LPC для этого используется лишь пять проводов: LAD0-LAD3 + LFRAME# (поэтому "lowpin…"). Применительно к флэшам (т.к. использовать LPC-интерфейс могут разные устройства) этот стандарт вылился в следующее воплощение:

LPC/FWH interface

() - в скобках - значение ножки в режиме LPC или FWH

Как видно, такая флэшка может работать сразу в двух различных режимах - LPC-mode и PP-mode (Parallel-Programming). Режим работы выбирается уровнем на ножке IC (Interface Configuration Pin) во время старта компьютера- "0" - LPC-mode, "1" - PP-mode. Режим PP наиболее близок к "обычным" флэшкам и совместим с ними по многим (но не по всем) ножкам, с учётом только того, что линий адресов всего 11 (0-10), но зато они мультиплексируются, т.е. сначала выдаётся/считывается значение A00-A10, а затем A11-A21. С учётом этого (мультиплексирования адресов) и "пропажи" сигнала CE всё остальное полностью аналогично "обычным" флэшкам. В режиме LPC общение между мостом и флэшкой происходит лишь по четырёхбитной шине, а пятый LFRAME# служит в качестве стартового (для начала операции по обмену данными). Плюс LRESET# и LCLK#, которые полностью аналогичны своим собратьям на материской плате - вот и весь набор нужных проводов (остальные - опционально). В общем, это есть попытка максимально упростить интерфейс, но не скатиться до "абсолютно последовательного", типа I2C, оставив возможность использования даже режимов DMA и BusMaster-инга (которые могут использоваться, например, в устройствах типа DiskOnChip/LPC). Режим PP используется при "заводской" прошивке флэшки (он, ведь, понятно - быстрей, что и важно при массовом производстве) , а LPC - при работе в составе плат. Только вот для работы с такими флэшами нужно, чтоб южный мост умел это делать - в результате такой стандарт стал реально популярен лишь с приходом популярного nForce2 (потому как он никогда и не слышал про ISA-шину… :)

FWH-интерфейс.

В результате достигнутых высот в области стандартизации ;) , компания Intel, с выходом чипсетных наборов i8xx продолжила нести знамя родителя новых стандартов. Так появился ещё один режим работы - FWH (FirmWareHub, от которого, собственно, и пошло название "хабовые"). Он был полностью аналогичен LPC электрически (по ножкам/разъёму), но (дальше сами догадаетесь;) - абсолютно _несовместим_ по протоколу передачи данных. Как можно прочитать в некоторых документах, это было сделано для возможности поставить в систему кроме LPC-устройства ещё и FWH, повесив их на одну и ту же шину (ведь они электрически совместимы, но при передаче пакетов данных каждый будет брать свой из-за разных протоколов), при чём "хабовых" флэшей можно было навешать до шестнадцати штук, т.к. в них появились дополнительные ID0-ID3 сигналы. (прим. автора: все мои уколы в сторону родителя x86 просьба воспринимать как шутку, хотя как известно - в каждой шутке есть доля шутки… ;) см. рис. выше. Как видно, картина совершенно аналогично LPC, только названия LAD0-3 + LFRAME# заменены на FWH0-3 + FWH4. Режим PP совершенно тот же. FWH отличается от LPC протоколом, т.е. все команды для операций имеют совершенно другие кодовые значения в полях обмена данными. Плюс возможность использовать несколько (до 16) FWH-устройств, благодаря введению новых "идентификационных" сигналов ID0-3. По умолчанию для работы в качестве флэшки на матплате принимается ID=0000 (что и запросто можно проверить, прозвонив соответсвующие ножки (9-12) на вашей интеловской плате (они все "на земле"). Вообще, универсальным способом отличить флэшку по типу хабовая/обычная можно просто прозвонив ножку pin28 - в хабовой она будет строго на земле, в то время как в "обычной" будет что-то в районе килоома ("звонить" надо в колодке самой матплаты, хотя некоторые флэшки тоже "звонятся" - для этого используйте pin16/28).


Собственный "перешивочный" комплекс.

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

Для перешивки 99.9% флэшек (к матплатам, конечно) вам понадобятся три платы:

  1. Что-нибудь подревнее, под Pentium1 - для перешивки очень распространённых Intel-флэшей 1Mbit.
  2. Что-нибудь под P2 с 2Mbit-ным биосом - для перешивки остальных "обычных" 1- и 2Mbit флэшек.
  3. Что-нибудь под P3 из серии i8xx - для перешивки "хабовых" флэшек.
  4. (Добавлен в последней версии статьи - прим.ред.) Что-нибудь на nForce (1/2/3).

В качестве п.1 я использую Asus на i430HX (конкретно - P55T2P4). Для таких случаев (1Mbit и /или Intel-флэшки) рекомендуется именно Asus по причине возможности использовать исключительно удобный асусовский прошивальщик - старый pflash или поновее aflash - элементарные в использовании, не пристают с глупыми вопросами и показывают адрес повреждённой области микросхемы в случае ошибки.

В качестве п.2 я использую плату на i440BX (конкретно - PCPartner-928). Она 2Mbit-ная, что позволяет шить и 1- и 2Mbit-ные "обычные" флэшки. Тип разъёма на ней DIP32, для перешивки PLCC32 используется переходничок PLCC32->DIP32, сделанный из старой неисправной платы с PLCC32 колодкой (см. фото).

Cамодельный переходник PLCC32->DIP32
Сделан путём фигурной резьбы лобзиком по неисправным материнским платам;) плюс допаянные вручную ножки)
Cамодельный переходник PLCC32->DIP32 - вид снизу

В качестве п.3 я использую плату на i820 (конкретно - Chaintech 6CTA2). На ней стоит i82802AB (4Mbit), что позволяет шить как сами интеловские "хабы" так и "хабовые" 2- и 4Mbit-ные флэшки.

В качестве п.4 я использую плату на nForce (первый который, но не принципиально) - Abit NV7-133R. Она предназначена для самых тяжёлых случаев - для перешивки "чисто" LPC-шных флэшек. /Просто многие (даже, видимо - большинство) производители плат на nForce1/2/3 (а LPC стал использоваться именно на них) обычно используют флэшки с поддержкой и LPC и FWH, что позволяет шить их на п.3)/.

Вообще никаких особых условий по выбору конкретной модели или фирмы (кроме случая с Асус для Intel-флэшей) нет. Не нужно стремится брать для такой цели "крутые" и "навороченные" платы. Нужно строго наоборот - чем "безвестнее" и примитивнее плата - тем более лучший получится из неё "программатор". Т.е. для этого просто идеальны всякие Акорпы да PCPartner-ы, а вот любые платы даже с минимальными "претензиями" всегда ухудшают "универсальность". Плюс, конечно, другим важным условием является хороший и удобный доступ к гнезду флэшки.

В качестве главного программного обеспечения используются amiflash (конкретно - версия 8.37, только с ключами). Он знает большинство чипсетов/флэшей и очень удобен в работе благодаря удобной коммандной строке (батфайлик для него прилагался выше).

Для редких случаев, когда не справляется amiflash (некоторые типы флэшек и/или экзотные чипсеты) - используется awdflash (обязательно с ключом /f).

Для тяжёлых случаев (как правило очень экзотные флэши/биосы/чипсеты, очень старые, либо, наоборот, самые новые матплаты) используется Uniflash. Он же может быть использован с целью визуальной проверки места проблем во флэшке. Плюс особенно стоит обратить на него внимание счастливым обладателям современных плат на nForce2, использующие LPC-флэшки типа PMC (как правило - Epox/Gigabyte).

PMC-шки умеют работать сразу во всех трёх режимах (LPC/FWH/PP) и, может быть, из-за этого часто "стандартные" прошивальщики некорректно их перешивают (а то и зависают в процессе перешивки) - uniflash же это делает исключительно корректно.

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

Экстремальные способы перешивки/восстановления

В некоторых сложных случаях приходится прибегать к использованию сразу двух прошивальщиков. Обычно это uniflash + awdflash (но не обязательно). Например, прошиваете сначала с помощью amiflash, а после этого сразу же с помощью uniflash. После первой попытки амифлэш ругнётся, что прошил некорректно, а uniflash перешьёт уже корректно.

Рекомендуемой "связкой" является awdflash + uniflash. Конкретно технология использования подобной "сладкой парочки" следующая:

  1. Запускаем awdflash с "родной" флэшкой (той, с которой запускался компьютер) и выходим без прошивки. Например, можно запустить его (awdflash) с ключиками "/pn/sy 111.bin" - записав ненужный биос (просто для проверки :) ).
  2. Ставим (hotswap) нужную для прошивки флэшку, запускаем uniflash и радуемся :) (должно прошиться нормально).
  3. Ежели, все-таки, не радуемся (прошивается некорректно) - еще раз "просто" запускаем awdflash (без прошивки и уже на "прошиваемой" флэшке) и снова пробуем uniflash - уж точно должно помочь (с поправкой на то, что uniflash "знает" данный тип флэшек).

"Скрытый смысл" использования подобного метода следующий. При запуске awdflash (равно как и любого другого прошивальщика) производится "размапливание" чипсета - для определения типа флэшки и последующей перешивки. При выходе - обычно, как бы, должно происходить "замапливание", однако на практике выясняется, что "оно никому не должно" :). Чем и удается воспользоваться uniflash-у, который по разным причинам (обычно - незнание современного железа) сам не может правильно и до конца корректно "размапить" чипсет. Кроме того, помимо размапливания чипсета на предмет физического доступа в область памяти флэшки, awdflash умеет (в случае Award BIOS) снимать различные "защиты от записи", о которых не в курсе uniflash в силу своей, так сказать, "классичности" - авторы оного ("по незнанию" ;) ) использовали в его движке в подавляющем большинстве исключительно "классические" методы работы с железом (плата-чипсет/флэш-биос). В общем, в "примитивном" описании действенности данного метода, можно сказать следующее. awdflash, как более "умный", знающий всяческие "специфичности" для всевозможных (особенно новых) плат - начинает работу (прошивку). Однако из-за "избытка ума" умудряется оступаться на простых вещах.А по "простым вещам" - нет лучше юнифлеша. В результате чего их симбиоз и становится удачным (иногда - единственным) решением для прошивки некоторых типов флэшек на некоторых чипсетах (так, например, Winbond W39V040AP (LPC) на nForce2 - прекрасно шьется описанным методом).

Когда у вас есть под рукой только "одномегабитная" плата, а нужно прошить двухмегабитку ("обычную") можно сначала прошить первую половину (1Mbit), а потом "отдельно", вторую половину. Для этого разбиваете файл биоса на две части (по 1Mbit=128kB) с помощью любого hex-редактора и прошиваете сперва последнюю часть. После этого коротите ножку 30 (A17 в 2Mbit и NC в 1Mbit) на землю и заливаете "начальную" половину.

(п.с. Ограничение данного способа может возникнуть, если флэшка не будет поддерживать нужную для такого случая секторизацию записи)

Другим развитием (вариантом) предыдущей ситуации может быть заливка лишь "конечной" части (по сути нам нужен лишь бутблок). После этого таким образом "недошитая" микросхема вставляется в родную плату, где автоматически из-за несоответствия CRC начнёт грузиться бутблок, с помощью которого уже в родной плате всё можно будет банально восстановить "с дискетки".

Прошивка флэшек с различными напряжениями перепрограммирования.

Различные типы флэшей рассчитаны на разные вольтажи программирования. Самые распространённые - это 12V/5V для старых плат, для современных, это 3.3V/3V/2.7V и меньше. Теоретически, для каждого типа нужно выставлять нужное конкретной флэшке напряжение с помощью перемычек на матплате (если такие, конечно, имеются). Практически же получается, что флэшки с более меньшим напряжением программирования совершенно благополучно шьются более высоким напряжением.

Т.е. если на матери стоит 5V-овая флэшка (например, большинство серии 29xxxx), то флэшки с более низким уровнем перепрошивки тоже на ней прошьются на ура без всяких претензий по его завышенному значению. И без хоть какой-то вероятности повреждения более низковольтных клиентов.

В случае обратного соотношения - перешивка 12V-овых флэшек на 5V-овых матерях (или с перемычками установленными на 5V) тоже часто имеет благополучный исход. Хотя здесь он уже и не является правилом - поэтому при программировании микросхем серии 28xxxx (большинство которых - 12V) - будьте бдительны по поводу правильно выставленных перемычек и не стоит пытаться их перешивать хотсвопом на современных платах (т.к. 12V-ые были лишь P1-P2), т.е. чем древней, тем больше шансов на корректную перешивку.

Если перемычки на плате не подписаны - можете просто померять напряжение на pin32 (справа сразу от ключа, если смотреть ключом вверх). В самом крайнем случае, если на плате нет перемычек - можно отогнуть эту ногу из сокета и подать на неё 12V "вручную" (например, прямо от разъёма БП).

Восстановление запаянных биосов БЕЗ их выпаивания

Как уже говорилось в "азах", для прошивки флэшек, которые впаяны в плату, можно использовать метод "порчи CRC" - это когда "искусственно" нарушается BIOS-CRC, точней (и правильней) - её подсчёт в процессе POST.

Обычно данный метод применим к случаям, когда в биос "случайно" был зашит "не совсем тот" биос, либо когда в процессе работы плата в один прекрасный момент перестала загружаться, зависая на распространённом "Building DMI Pool" и т.п. Т.е. главным условием является - "живой" бутблок, который и вызывается при некорректной CRC, запуская процедуру "аварийного" восстановления биос (обычно - с дискеты).

PP

Для "обычных" флэшей, как уже было указано в [#Немного о принципах работы. | "азах"], всё достаточно просто - коротим A15 и A16, что "не заденет" работу бутблока, однако точно испортит CRC. Далее - дело техники, подготавливаем дискетку (винчестер, CD-ROM...) и восстанавливаем.

FWH/LPC

Для интерфейсов FWH/LPC такой трюк (закорачивание адресных линий) не пройдёт, т.к., во-первых, из-за их мультиплексирования (в режиме PP), во-вторых, из-за того, что в "обычном" режиме работы они (интерфейсы) используют лишь четыре линии - FWH0-3/LPC0-3. И тут уже не получится разделить на "используемые" и "не используемые" (бутблоком).

Здесь придётся использовать "временной" фактор. Процедура подсчёта CRC биоса занимает некоторое конечное и "относительно длительное" время (десятые доли секунды). И если в этот момент (подсчёта CRC) "что-то нехорошее" произойдёт с любым из xAD0-3 выводов - CRC будет подсчитана неверно. Потому алгоритм следующий:

1. Ищем флэшку на плате, находим у неё контакты 15-16-17. (DQ2-Vss-DQ3).

2. Заготавливаем "устройство корочения" (например, пинцет) и "прицеливаемся" так, чтобы закоротить 15-16 либо 16-17.

3. Включаем компьютер и через 1-3 секунды (зависит от платы-биоса-процессора) делаем однократное короткое замыкание.

4. В зависимости от "времени" замыкания:

  • Если сделать это "зарано" - биос еще "не дошёл" до этапа подсчёта CRC, а потому, понятно, просто зависнет и ничего не выдаст на экран.
  • Если сделать это "запоздно" - биос уже проверил (успешно) CRC и был скопирован в Shadow, потому он никак "не отреагирует" на корочение (ЮМ "отключил" флэшку - POST работает в ОЗУ) - т.е. поведёт себя также, как без "корочения", выдаст те же сообщения и/или зависнет (там же).

В любом из таких случаев - делаете рестарт (RESET) и повторяете попытку с небольшим "сдвигом" по времени корочения в ту или иную сторону. Обычно, в зависимости от опыта, фазы Луны и везения - это не больше 10-20 попыток (может просто последовательно "перебирать" интервалы от нуля секунд и дальше :).

Если у вас есть POST-карта - коротить нужно сразу же после появления посткода C3 (для Award).



Статья в бета-версии, добавления/изменения обязательно_последуют, все поправки/пожелания - вносите сюда самостоятельно.

Севко Роман, 11.26.03. (Первая версия) А также другие пользователи rom.by (см. "история" данной страницы).

Перепечатка без согласования с администрацией ROM.by - не допускается.


Персональные инструменты
Google