Как драйверы работают "из коробки" в x86, а не во встроенных компьютерах, таких как телефон Android - PullRequest
0 голосов
/ 06 ноября 2019

Мне любопытно, как драйверы работают из коробки на материнских платах x86, таких как дисплей, контроллеры USB и т. Д.

Например: загрузка игрушечного собственного ядра в x86 может выводить на экран без каких-либо действийдополнительная работа в области драйверов, однако для телефона Android, который является встроенной системой, кажется, что практически невозможно отобразить на экране с моим собственным игрушечным кастомным ядром (поскольку есть информация о карте памяти устройства и о том, какдисплей взаимодействует с устройством).

Почему этот ввод / вывод работает из коробки на материнских платах x86, а не на встроенных компьютерах?

1 Ответ

1 голос
/ 06 ноября 2019

x86 ПК прошивка имеет стандартные программные интерфейсы (во многом как системные вызовы), либо современный UEFI, либо устаревший BIOS int 0x10 и другие прерывания.

Ключевым моментом является то, что это не просто голый x86, он совместим с IBM PC, что означает программное обеспечение и даже эмулируемое устаревшее оборудование, такое как порт PS / 2, VGA и даже устаревший контроллер прерываний.

Если вы этого не сделалиЕсли бы у вас не было всей этой помощи от встроенного программного обеспечения (в пользу загрузчиков и игрушечных ОС), вам пришлось бы выполнять гораздо более сложную работу, например, требовать хотя бы базового драйвера USB-hid и USB-контроллера хоста для получения ввода с клавиатуры. Функция самого низкого уровня для обработки пользовательского ввода

Почему ввод / вывод работает из коробки на материнских платах x86, а не на встроенных компьютерах?

Это не ваш настоящий вопрос. Встроенные машины имеют работающее оборудование ввода-вывода, они просто не поставляются с переносимыми программными API / ABI, обернутыми вокруг драйверов, как часть прошивки.

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


Встроенный не нуждается в этом в прошивке, потому что ожидается, что ядро ​​будет настроено для аппаратного обеспечения.

Willn 'Разве лучше иметь BIOS или UEFI для максимальной переносимости? Есть ли у него недостатки, чтобы включить один?

Да: размер кода в загрузочном ПЗУ, и кто-то должен написать + отладить этот код. Это стоит времени и заработной платы разработчика.

Нет смысла загружать почти операционную систему (среду UEFI) только для загрузки ядра, которое в любом случае займет HW.

ТакжеНедостаток времени загрузки: любой код, который запускается, кроме загрузки ядра, где он хочет быть, тратит впустую процессорное время, которое замедляет загрузку. Имея очень легкий интерфейс, который всего позволяет загружать ваше ядро, и оставляя все операции ввода / вывода, имеет смысл для этого.


В отличие от компьютеров x86, здесь нетожидание того, что вы можете использовать это оборудование с установочным диском ОС / загруженным вами образом, который не специально настроен для этого оборудования.

Для любителей не легко играть с использованиемAPI-интерфейсы учебных колес. Реальные ОС на этом оборудовании не будут использовать такие API, так зачем вообще их предоставлять?

...