Интерфейсы блока питания PC
Блок питания PC обеспечивает напряжениями постоянного тока системный блок со всеми его сложными и часто «привередливыми» устройствами.
Гальваническая развязка
Гальваническая развязка сигнальных цепей - это отсутствие связи по постоянному току между ними, «схемной землей» и другими питающими шинами.
О здоровом питании
Все внутренние устройства ПК, включая и интерфейсные адаптеры, получают напряжение от блока питания системного блока и связаны общей «схемной землей» - шиной GND. Часть внешних устройств получают питание от того же блока питания, пользуясь штатными и нештатными способами. Штатное питание выводится на интерфейсные разъемы клавиатуры и мыши PS/2 (+5 В), USB (+5 В) и Fire Wire (8-40 В). «Нештатным» способом питание можно получить от сигнальных линий LPT-порта (менее 5 В) и СОМ-порта (двуполярное, около 12 В), но лишь с небольшим током нагрузки и некоторыми аппаратными и программными ухищрениями. Питание от сигнальных цепей интерфейса используется мышью, электронными ключами защиты и иными устройствами с малым потреблением. Остальные внешние устройства питаются от собственных источников питания со своей «схемной землей» и цепями заземления, и при их стыковке с системным блоком (и между собой) могут возникать проблемы заземления, о которых речь пойдет ниже. Проблемы заземления радикально решаются применением гальванической развязки сигнальных цепей от «схемной земли», но эту развязку имеют далеко не все интерфейсы.
Expansion ROM карт PCI
Для содержимого ПЗУ расширения BIOS, установленных на картах PCI, принят стандарт, несколько отличающийся от традиционных дополнительных модулей ROM BIOS.
ROM BIOS карт ISA PnP
Для поддержки технологии PnP и расширения возможностей управления начальной загрузкой в спецификации PnP BIOS ввели дополнительный указатель на структуру расширенного заголовка (Expansion Header Structure).
Расширения ROM BIOS
В микросхеме ROM BIOS, установленной на системной плате, поддерживаются только стандартные (по назначению и реализации) устройства.
PCI BIOS
Функции PCI BIOS используются только для поиска и конфигурирования устройств PCI - процедур, требующих доступа к их конфигурационному пространству.
Int 1Ah и Int 15h—поддержка таймеров
Сервисы BIOS Int I Ah позволяют считывать и модифицировать значения системного таймера, даты и времени, а также установки будильника часов реального времени CMOS RTC. Перечисленные ниже номера функций указываются при вызове в регистре АН.
Int17 h — поддержка принтера
Сервисы BIOS I n t 17 h: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера, подключенного к LPT-порту.
int 10h — видеосервис
Int 10h - видеосервис - предназначен для работы с графическим адаптером. Его первичной задачей является управление видеорежимом (BIOS Video Mode), определяющим формат экрана. BIOS адаптера должна выполнять программирование всех стандартных и специфических управляющих регистров для установки (смены) требуемого видеорежима и выбранных параметров развертки - кроме нее о способах этих переключений остальное ПО может и не знать. В пределах возможностей установленного видеорежима видеосервис предоставляет возможности отображения информации на различных уровнях. Простейший для программиста телетайпный режим позволяет посылать поток символов, которые будут построчно отображаться на экране с отработкой символов возврата каретки, перевода строки, обеспечивая «прокрутку» изображения при заполнении экрана. Есть функции и для полноэкранной работы с текстом, при которой доступны и атрибуты символа. В графическом режиме имеется возможность чтения и записи пиксела с указанными координатами. Однако видеосервисом Int 10h программисты пользуются далеко не всегда, поскольку работает он довольно медленно. Подробно рассматривать функции видеосервиса не будем (этому посвящены отдель-ные книги), отметим особо лишь функцию телетайпного вывода Int 10h(0Eh). При вызове AH=OEh, в AL - код выводимого символа, в BL - цвет (только для графического режима). Символ выводится в текущую позицию курсора, и курсор сдвигается на следующую, переходя на новую строку после конца предыдущей и прокручивая экран при его заполнении. Специальные символы вызывают возврат на начало строки (CR, код ODh), перевод строки (LF, OAh) и короткий гудок (BEL, 07h). Этой функцией часто пользуются для вывода сообщений программами, работающими на нижнем уровне (например, модули инициализации ПЗУ расширений BIOS, загрузчики и другие, не имеющие еще доступа к сервисам операционных систем). Программа вывода получается простейшей, работает на всех адаптерах и во всех режимах, но довольно медленно.
Сервисы и прерывания BIOS
Системная BIOS предоставляет ряд сервисов низкого уровня, в основном предназначенных для обслуживания ввода-вывода и имеющих отношения к стандартным аппаратным интерфейсам.
Способы запуска программ
радиционным способом запуска программ является загрузка их с какого-либо устройства хранения (диска) в оперативную память и исполнение в ОЗУ.
Аппаратные средства измерения времени
В IBM PC/AT имеются аппаратные средства для измерения времени. Трехканальный счетчик-таймер, программно совместимый с 18254 (в XT - 8253), выполняет следующие функции:
Прерывания
В процессорах х86 используются аппаратные прерывания, программные прерывания и исключения.
Инструкции ввода-вывода
Для обращения программы к пространству ввода-вывода предназначены всего четыре инструкции процессора: IN (ввод из порта в регистр процессора), OUT (вывод в порт из регистра процессора), INS (ввод из порта в элемент строки памяти) и OUTS (вывод элемента из строки памяти в порт).
Проблемы страничной переадресации
В реальном режиме (при отключенной страничной переадресации) логический адрес, формируемый прикладной программой, совпадает с физическим адресом, фигурирующим на шинах расширения. Тут все просто, правда, в стандартном (а не большом) реальном режиме доступен только первый мегабайт адресов (только устройства в области UMA).
Процессоры х86
Все программы в IBM PC-совместимом компьютере исполняются центральным процессором, принадлежащим к семейству х86. Любое устройство для процессора представляет собой лишь набор регистров (ячеек), отображенных в пространство памяти и (или) ввода-вывода, и необязательно источник аппаратных прерываний. Современные процессоры х86, работающие в защищенном режиме, имеют довольно сложные механизмы виртуализации памяти, ввода-вывода и прерываний, из-за которых приходится различать физические и логические пространства (адреса памяти и ввода-вывода) и события (операции ввода-вывода, прерывания). Физический адрес ячейки памяти или порта ввода-вывода - это адрес, формируемый для обращения к данной ячейке на физических шинах компьютера (системной шине процессора, шине PCI, ISA). Логический адрес - это тот адрес, который формируется исполняемой программой (по замыслу программиста) для доступа к требуемой ячейке. Физическая операция ввода-вывода или обращения к памяти - это процесс (шинный цикл), во время которого генерируются электрические сигналы, обеспечивающие доступ к данной ячейке (порту). Логическая операция - это исполнение программной инструкции (команды) обращения к интересующей ячейке. Логическая операция не всегда порождает ожидаемую физическую операцию: при определенных условиях она может блокироваться средствами защиты процессора, вызывая даже принудительное завершение программы, или же эмулироваться, создавая иллюзию физического исполнения.
Безопасность в защищенном режиме базируется на 4-уровневой системе привилегий. В большинстве современных ОС ради упрощения и экономии процессорного времени используются только два крайних уровня - нулевой (supervisor), с неограниченными возможностями, и третий (user), с самыми жесткими ограничениями. Смена уровней привилегий при исполнении программы занимает много тактов процессора, но это вынужденная плата за реализацию защиты, без которой устойчивую ОС не построить. Более подробно механизмы защиты и виртуализации памяти, ввода-вывода и прерываний в процессорах х86 описаны в литературе [6, 7], здесь же изложены лишь некоторые прикладные аспекты их работы.
Контроллер прямого доступа 8237А
Микросхема 8237А, применявшаяся в PC вплоть до первых моделей AT, представляет собой четырехканальный контроллер прямого доступа к памяти, допускающий каскадирование.
Прямой доступ к памяти — DMA
Прямой доступ к памяти (Direct Memory Access, DMA) позволяет выполнять пересылку данных между регистрами устройств и памятью, минуя центральный процессор. Для устройств, использующих DMA, различают два типа доступа.
Совместное использование прерываний
Линии запросов прерываний в компьютере, насыщенном дополнительными адаптерами, являются самым дефицитным ресурсом, поэтому возникает желание использовать эти линии совместно, то есть применять разделяемые прерывания между несколькими устройствами (shared interrupts).
Аппаратные прерывания
Аппаратные прерывания обеспечивают реакцию процессора на события, происходящие асинхронно по отношению к исполняемому программному коду.
Пространство физической памяти
Основную часть физического адресного пространства PC занимает оперативная память (ОЗУ), начинающаяся с нулевого адреса. В нее вклинивается область адресов AOOOOh-FFFFFh - Upper Memory Area (UMA), 384 Кбайт - верхняя память, зарезервированная со времен IBM PC для системных нужд.
Программно-управляемая реализация последовательных интерфейсов
Рассмотренные выше интерфейсы - PC, SMBus, SMI, SPI и JTAG - имеют общее свойство: они управляются и синхронизируются контроллером и не требуют фиксированной частоты синхронизации. Это позволяет для многих применений программно реализовать их на любом компьютере или микроконтроллере.
Интерфейс JTAG
Интерфейс JTAG (Joint Test Action Group) предназначен для тестирования сложных логических схем, установленных в целевое устройство.