Все эти ссылки (точней - много больше) у

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

Добавлено спустя 2 часа 36 минут 37 секунд:

Итак, главная часть - размапливание южников.

{Chipset southbridge stuff}
 Case Hi( SouthFunc ) of
  $01 : Begin {Intel method}
         If Map then
          Begin
           Mask := $00440000;                    {write & 128k enable}
           If ( SouthFunc and 1 ) <> 0 then Mask := Mask or $800000;  {512k enable}
           If ( SouthFunc and 2 ) <> 0 then Mask := Mask or $2000000; {1M enable}
           If ( SouthFunc and 4 ) <> 0 then Mask := $C00000; {v1.29}

           PIIXReg := GetPCIRegD( $00, SouthPos shr 3, SouthPos and $7, $4C );
           LogWrite('Intel method: reg $4C = '+Hl(PIIXReg)); {v1.23}
           SetPCIRegD( $00, SouthPos shr 3, SouthPos and $7, $4C, PIIXReg or Mask );
           LogWrite('Intel method: reg $4C changed to '+Hl(GetPCIRegD( $00, SouthPos shr 3, SouthPos and $7, $4C ))); {v1.23}

Итак, подробненько разберем, чего здесь понаписано.:)

Код реально шибко неудобный, но мы решили от него отталкиваться, потому и на будущее не будем возмущаться и предлагать все переписать, а просто "переведем на нормальный".


Одна из главных неудобностей следующая.
Например, у нас в коде фигурирует Rx4C. И если мы глянем даташит на старенькие нехабовые южники (например, PIIX4 от i430TX/i440LX), как известно, флешка "сидит" на функции "PCI to ISA Bridge", в которой регистр 4С
обозначает "IORT—ISA I/O RECOVERY TIMER REGISTER" --- в результате мы долго будем чесать тыковку, каким боком он тут затесался.
А ларчик открывается просто - нужно учитывать факт работы юнифлешных функций с 32-битными данными для общения по PCI. В результате, если обратить внимание, то видно, что в маске идет работа только с двумя старшими байтами. С учетом 32-битных обращений 00440000h обозначает работу с регистром 4С плюс два байта (пропускаем два младших, что не используются - к ним всегда операция "OR 0"): 4Ch + 2 = 4Eh и 4Dh. Смотрим в даташите:

Rx 4E-4F: X-BUS CHIP SELECT REGISTER (FUNCTION 0)
This register enables or disables accesses to an external RTC, keyboard controller, I/O APIC, a secondary controller, and BIOS. Disabling any of these bits prevents the device’s chip select and X-Bus output enable control signal (XOE#) from being generated. This register also provides coprocessor error and mouse functions.

То что нам и нужно. Потому размапливание для нехабовых интелов осуществляется работой с этими двумя регистрами (Rx4E и Rx4F), устанавливая биты:
bit 2: BIOSCS# Write Protect Enable (от маски 00440000), при установке в 1 снимается защита от записи.
bit 6: Lower BIOS Enable. (от маски 00440000), при установке в 1 разрешается доступ к 1Мбитным биосам (объем флэши = 1Мбит = 128кБайт).
bit 7: Extended BIOS Enable. (от Mask or $800000;), при установке в 1 разрешается доступ к 2-4Мбитным биосам (объем флэши = 2Мбит и 4Мбит = 256кБайт и 512кБайт).
bit 9: 1-Meg Extended BIOS Enable. (от Mask or $С00000;), при установке в 1 разрешается доступ к 8Мбитным биосам (объем флэши = 8Мбит = 1МБайт).

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

runiflash
  • "Массивчик" данных SPD находится в ЕПРОМ на модуле
  • Привет всем runiflash `ерам! Тема интересная, но
  • 2 Cyrix. Вот темка Выручает:)
  • Господа, подскажите почему Uniflash не хочет нормально шить
  • Root да, в реале.
  • обнаружил серьезную багу в Uniflash 1.40&URE1.41/1.42: на MSI K7D
  • Тема интереснейшая...
  • savely_s Скинул...
  • Кстати - у ivp есть KT7A.
  • То есть снимать лучше самим UniFlash? Тестить уже
  • Uniflash не пашет на KT7A & Co
  • Все понял, модели напишу/анкноун уберу (едит)
  • Мои выкладки были не совсем правильно
  • В копилку (если надо): Материнская плата ASUS A8N-E (чипсет
  • Можно внести посильный вклад в общее дело?
  • ECS RS482-M RS482 (CPU-PCI от ATI, остальные -
  • Просьба не воспринимать етот пост как "понт сцылками"
  • VIA c3m266-l: VT8623 Rev. 00 VEN_1106 DEV_3123 SUBSYS_00000000
  • вспомнил что же за матери Uniflash - не
  • Подсоединил тут Jetway K8T8AS (K8T800Pro/VT8237). U1.40 опознает чипсет
  • и про MSI не забудьте
  • apple_rom там надо будет в специфических типах
  • >Uniflash 1.40 при запуске выдает "PCI chipset: (1022,1100,00)+(10DE,0261,A2)" Отлично,
  • А подружите с 6100, плз! :) Имеется Foxconn
  • rd480 интересен? :)
  • Все эти ссылки (точней - много больше) у
  • по поводу PCI ID: http://pciids.sourceforge.net/ http://members.datafast.net.au/~dft0802/downloads/pcidevs.txt в этих ресурсах уже есть
  • Далее идет кусок не относящийся конкретно к прошивке,
  • apple_rom, к сожалению, виндовс уже давно не пользуюсь. Гм.
  • Продолжим. Дальше идет детект южников. Смысл последовательности понятен
  • По сему поводу имеется такое: HiNT HB1 Zero-Clock-Latency
  • Смотреть можно чем угодно, даже в свойствах винды
  • P.S. apple_rom , спасибо что начал эту
  • За название респект :) run I flash -
  • apple_rom - Подскажи пожалуйста, "поделиться айдишниками вашего железа"