![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 13.03.2012
Сообщений: 4
|
![]()
Доброго времени суток.
Разбираюсь, каким образом процессор определяет наличие оборудования. В качестве примера беру такую материнскую плату (признаюсь честно - выбрал свою модель ![]() ![]() На материнской плате присутствует множество различных слотов, а так же вот такая гроздь радостей: ![]() Дополнительная информация об указанной мною материнской плате здесь, а более подробные фотографии здесь (если эта информация потребуется). В свете того, что я прочитал в книгах, у меня сложилось некоторое "понимание" по указанному вопросу. Однако я не уверен, что это самое "понимание" верно и прошу меня поправить там где я ошибся. ![]() Суть "понимания" такова, что любая материнская плата покрыта паутиной проводов, подобно кровеносной системе. Вся эта кровеносная система тянется к процессору от слотов, внешних портов (USB2, PS/2 и т.д.) размещённых на материнской плате и именуется "системной шиной". Слоты и порты стыкуются с материнской платой так же посредством своих "шин" (что создаёт некоторую путаницу в системе наименований). Тут где-то должны фигурировать некие "контроллеры", но я пока не понял их места в обозначенной мною схеме. ![]() Процессор имеет множество "лапок". Доступное адресное пространство процессора равно двум, возведённым в степень, равную количеству "лапок". Т.о. адресное пространство включает в себя и оперативную память и адреса всех слотов/портов, имеющихся на плате. Я так понял, что существует некий СТАНДАРТ, которому следуют все производители материнских плат. Суть этого стандарта заключается в том, что в любом процессоре по зараннее известным адресам (однозначно определённым в стандарте) хранится информация о том, какой адрес имеет каждый слот и каждый порт, размещённые на этой плате. Для того, чтобы отправить байты в порт/слот, следует: 1. Получить адрес этого порта/слота (из ячейки памяти, определённой стандартом для порта/слота этого типа). 2. В ячейки этого адреса поместить байты, которые нужно передать. 3. Вызвать нужную команду ассемблера, которая отправит эти байты на этот порт/слот, обнулив содержимое указанных в п.2 ячеек памяти. Для того, чтобы прочитать байты из порта/слота следует: 1. Получить адрес этого порта/слота (из ячейки памяти, определённой стандартом для порта/слота этого типа). 2. Из ячеек этого адреса прочитать байты, которые появились в этих ячейках. Это подобно тому, как работают с видеосистемой в DOS - чтобы вывести символ на экран, его нужно поместить в определённую ячейку памяти. Если на материнской плате отсутствует порт/слот, то ячейки памяти, в которых должен размещаться адрес этого порта/слота, в качестве значения будут размещаться нули... Прошу поправить меня, если я что-то напутал. Фотографии платы показываю для того, чтобы в замечаниях к моему текущему "восприятию" можно было указать физические аспекты взаимодействия компонентов материнской платы. Спасибо |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
![]()
есть два способа общения с устройствами. через память и через порты ввода вывода. При общении через порты вводы/вывода используются команды in/out, эта форма взаимодействия используется в старых устройствам и постепенно устаревает (в новых устройствах не используется). При общении в через память, достаточно записать командой MOV некоторые данные по определённому адресу памяти и эти данные будут переданы устройству.
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оборудование | VinT_Ivanovich | Общие вопросы по Java, Java SE, Kotlin | 1 | 30.12.2010 07:56 |
Неизвестное оборудование | Rembo | Свободное общение | 7 | 06.11.2008 18:41 |