2013-10-27 3 views
0

Когда ЦП находится в защищенном режиме, он ожидает, что все адреса будут виртуальными. Ядро находится в физической памяти и использует физические адреса для своих внутренних целей. При разработке подпрограмм Framework драйвера драйвер должен обращаться к некоторым ячейкам памяти с определенным физическим адресом (относительно адресов сопоставления памяти для этого устройства). Итак, какой механизм позволяет использовать физический адрес в защищенном режиме?Защищенный режим и физические адреса

+0

Я спросил немного не так. Я имел в виду аппаратный аспект этого вопроса, не обращая внимания на специфику некоторых драйверов. Процессор не может использовать физические адреса в защищенном режиме, поэтому он отправляет команды контроллеру DMA для передачи данных? Если DMA использует физические адреса, он оправдывает свое существование (с тем фактом, что CPU может выполнять некоторые вычисления, тогда как DMA управляет ОЗУ и доступом к порту). Есть ли какая-либо документация об использовании DMA, кроме источника ядра Linux? – igntec

ответ

0

Рамка драйвера или API расскажут об этом вам. Я использовал windriver (http://www.jungo.com/), чтобы написать драйвер PCI. Когда вы распределяете память с помощью этого API, она даст вам два адреса: один виртуальный, действительный для приложения, и физический, который вы передаете устройству. Другие рамки/apis, скорее всего, сделают это аналогичным образом.

Смежные вопросы