Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


BIOS ROM c интерфейсом SPI.

 

BIOS ROM c интерфейсом SPI 

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

Рис. 1. ICH10

Рис. 2. ПЗУ BIOS

 

                Flash ROM SPI. На смену интерфейсу LPC пришел интерфейс SPI (Serial Peripheral Interface). Начиная с чипсета Intel 945, в состав "Южного моста" (рис. 1) включен контроллер последовательной шины SPI, который для передачи адреса/данных/управления и статусной информации, использует 1-битный канал на повышенной частоте (50 МГц вместо 33, и даже 80 МГц  для  SST25VF080B-80). Это позволило уменьшить габариты и чип стал 8-контактным (вместо 32). В качестве носителя BIOS, например, часто используется микросхема SST25VF080B (2.7 - 3.6V). Эта микросхема (рис. 2, 3) имеет объем 8 Мегабит (1 Мегабайт) и подключается к интерфейсу SPI (Mode 0 and Mode 3). Интерфейс LPC, как и прежде, поддерживается современными чипсетами и разработчик может подключить чип ПЗУ BIOS как LPC, так и SPI интерфейсу. Сфера применения SPI не ограничивается системными платами ПК, он успешно используется в TV и другой микропроцессорной аппаратуре.

                    Интерфейс SPI. Основная архитектура шины SPI для базового варианта интерфейса. В ней один веду­щий управляет несколькими ведомыми. Все ведомые подключены параллельно на линиях SCLK, MISO и MOSI шины SPI. Выборка ведомо­го происходит с помощью одной из линий портов ввода/вывода, которая соединяется с входом CE (CS) соответству­ющего ведомого. Обычно такая архи­тектура используется для построения систем с одним микроконтроллером, исполняющим роль ведущего, и рядом периферийных микросхем, исполня­ющих роль ведомых. В качестве пе­риферийных микросхем может быть использован ряд современных микро­схем, оснащенных интерфейсом SPI, например, таймеры реального времени RTC, аналого-цифровые преобразователи ADC, цифро-аналоговые преобразо­ватели DAC, различные микросхемы памяти Flash-ПЗУ и т. п.

При обмене данными по интерфейсу SPI контроллер может работать как в режиме Master, так и в режиме Slave. При этом пользователь может задать следующие параметры:

 - скорость передачи (четыре программируемых значения);

 - формат передачи (от младшего разряда к старшему или наоборот).

Дополнительной возможностью подсистемы SPI является «пробужде­ние» микроконтроллера из режима Idle при поступлении данных. Модуль SPI использует четыре внешних вывода микроконтроллера. Как и для большинства периферийных устройств микроконтроллера, эти выводы являются ли­ниями порта ввода/вывода общего назначения. В ряде случаев пользователь должен само­стоятельно задать режим работы вывода, используемого модулем SPI, в со­ответствии с его назначением, причем возможность управления внутренними подтягивающими резисторами выводов, работа­ющих как входы, сохраняется независимо от способа управления их режи­мом работы.

Обмен данными осуществляется (передаваемые данные записываются, а принимаемые данные считываются) через регистр данных (SPDR). Запись в этот регистр инициирует начало передачи, а при его чтении считывается содержимое приемного буфера сдвигового регистра. Поэтому этот регистр можно назвать буфером между регистровым файлом микроконтроллера и сдвиговым регистром модуля SPI. Перед началом выполнения обмена необходимо разрешить рабо­ту модуля SPI. При подключении к ведущему устройству нескольких ведомых, что разрешено спецификацией SPI, выбор конкретного ведомого устройст­ва осуществляется подачей на его вход CS сигнала «низкого уровня» (спецификация интерфейса SPI предусматривает 4 режима передачи данных). Производители микро­схем в своей документации могут использовать и другие обозначения этих сигналов, например:

С - вход синхронизации (соответствует сигналу SCK);

D - входные последовательные данные (соответствует сигналу MOSI);

Q - выходные последовательные данные (соответствует сигналу MISO);

SS# - Slave Select, (или CS# - Chip Select) - сигнал выбора ве­домого устройства.

При обозначении способа передачи данных могут использоваться раз­личные обозначения режимов обмена: SPI Mode 0, 1, 2, 3. Все эти режимы различаются фазой и уровнем активности («полярностью») синхросигналов.

Микросхемы SPI-Flash (в том числе и SST25VF080B), используют только 3 сигнала для приема/передачи данных: SCK (Serial Clock) – вход тактовой частоты; SI (Serial Input) – вход данных (побитно адрес/данные/коды команд); SO (Serial Output) – выход данных (побитно данные/состояние микросхемы). Для защиты от записи используется cигнал WP#, защита от записи программного обеспечения осуществляется через биты защиты блока в регистре статуса, сигнал HOLD# приостанавливает последовательность обращения к памяти (не отбрасывая устройство), используется гибкая система  стирания (однородными 4-килобайтными секторами, 32- килобайтными оверлейными блоками, однородными 64- килобайтными оверлейными блоками).

Процессор после окончания «своего» сигнала «начального сброса» должен приступить к выборке первой исполняемой команды из ПЗУ BIOS, что должно подтверждаться присутствием цикла обращения к этой микросхеме через интерфейс SPI (Serial Peripheral Interface). Платформа, использующая интерфейс SPI, также поддерживает чтение содержимого микросхемы ПЗУ BIOS, но для передачи управляющей и статусной информации во время записи и стирания FlashROM, используется другой метод доступа. Информация для выполнения цикла на шине SPI (адрес и данные) записывается в специальные регистры контроллера SPI (Flash Address и Flash Data соответственно), затем в регистр Software Sequencing Flash Control передается команда на выполнение цикла обращения к Flash ROM (чтения или записи). Микросхемы SPI-Flash используют 3 сигнала для приема/передачи данных: SCK (Serial Clock) – вход тактовой частоты; SI (Serial Input) – вход данных (побитно адрес/данные/коды команд; SO (Serial Output) – выход данных (побитно данные/состояние микросхемы).  Обращение к ПЗУ BIOS начинается с выдачи активного низкого уровня сигнала на вход CE# (рис. 4).

Рис. 3. Микросхема SST 25VF080B - функциональная блок-схема, варианты корпуса, контакты: 1 - CS# (Chip Enable), 2 - DO  (Data Output), 3 - WP# (Write Protect), 4 - GND (Ground), 5 - DI  (Data Input),  6 - CLK (Clock Input), 7 - HOLD# (Hold Input),  8 - VCC (Supply Voltage 2.7-3.6v).

 Рис. 4. Пример протокола интерфейса SPI (код операции - 03H, операция «Чтение»)

 

                Для перезаписи содержимого микросхемы BIOS, программа должна взаимодействовать с двумя блоками регистров:

 - регистры интерфейса Flash ROM, расположенные в составе "южного моста" чипсета,

 - и регистры, входящие в состав самой микросхемы Flash ROM.

При переходе от интерфейса LPC к SPI, архитектура двух указанных блоков существенно изменилась (контроллер SPI, входящий, например, в состав "южного моста" Intel ICH8, содержит более 20 регистров управления и состояния). Регистры адресуются в пространстве памяти с использованием технологии memory-mapped I/O.      

                    Физический доступ к микросхеме BIOS (не надо путать с областью Shadow RAM) осуществляется посредством окна, примыкающего к верхней границе диапазона 0-4GB. Например, Flash ROM размером 1 Мбайт будет доступен в диапазоне FFF00000h-FFFFFFFFh. В платформах, использующих интерфейс LPC, через тот же диапазон, при выполнении операций стирания и записи выполняется передача команд и записываемых данных для микросхемы Flash ROM, а также чтение ее статуса.

                Информация для выполнения цикла на шине SPI (адрес и данные) записывается в специальные регистры контроллера SPI (FlashAddress и FlashData соответственно), затем в регистр SoftwareSequencing FlashControl передается команда на выполнение цикла обращения к Flash ROM (чтения или записи). После этого, через регистр SoftwareSequencingFlashStatus можно определить момент завершения операции и проконтролировать наличие ошибок. Данные, прочитанные из Flash ROM, находятся в регистре FlashData.

                Механизмы доступа к FlashROM и защита записи. В общем случае, для инициирования операций стирания или перезаписи микросхемы BIOS, программа должна выполнить четыре действия:

 - настроить регистры "южного моста" чипсета, управляющие размещением микросхемы BIOS в адресном пространстве для обеспечения доступа к полному объему микросхемы;

 - выключить режим защиты записи BIOS, реализуемый средствами "южного моста" чипсета;

 - выключить режим защиты записи BIOS, реализуемый средствами микросхемы Flash ROM;

 - передать команду стирания или записи микросхеме Flash ROM.

                    Доступом к микросхеме BIOS управляет 8-битный регистр BIOS_CNTL (его координаты в конфигурационном пространстве Bus=0, Device=1Fh, Function=0, Register=DCh). Бит 0 этого регистра (бит BIOSWE, BIOS Write Enable) управляет разрешением записи в микросхему BIOS, 0-запрещена, 1-разрешена. Бит 1 того же регистра (бит BLE, BIOS Lock Enable) обеспечивает перехват несанкционированного выключения защиты. Если бит BLE=1, то при попытке установить бит BIOSWE=1 будет генерироваться прерывание SMI (System Management Interrupt) с вызовом специальной процедуры, входящей в состав BIOS. Причем, если BIOS при старте установит бит BLE=1, программно обнулить его чипсет не позволяет, режим перехвата будет выключен только после аппаратного сброса (по сигналу RESET). Данный механизм "защиты от снятия защиты" обычно не активируется разработчиками BIOS. Во всех материнских платах обычно бит BLE=0, поэтому для снятия защиты записи достаточно установить бит BIOSWE=1, эта операция не будет перехвачена.

               Микросхемы начиная с Intel ICH8 также поддерживают защиту содержимого микросхемы BIOS, путем задания адресных диапазонов, защищенных от чтения и (или) записи.Теоретически, на базе данного механизма можно реализовать эффективную защиту, так как запрет программно включается процедурами BIOS при старте платформы, и может быть снят только при аппаратном сбросе. Но и этот механизм обычно не активируется разработчиками BIOS.

 


Лицензия