Обнаружение совместимого оборудования - PullRequest
1 голос
/ 23 сентября 2010

Будучи софтином, я в настоящее время борюсь с некоторыми аппаратными специалистами по механизму обнаружения оборудования.

Я чувствую, что должна быть возможность создать механизм обнаружения / обнаружения, который будет «ориентирован на будущее» таким образом, чтобы программное обеспечение для обнаружения, созданное сегодня, могло распознавать ограниченный набор свойств всех разработанных версий оборудования. в будущем.

Аргумент против: текущий (dsp) чип может устареть в ближайшем будущем; следовательно, мы не можем гарантировать, что будущие платы будут совместимы с текущим протоколом обнаружения.

Как это сделать, например, USB, PnP, а есть ли другие примеры?

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

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

1 голос
/ 23 сентября 2010

Ключ к ответу находится в протоколе, как вы намекаете. Это может быть не всегда красиво, и иногда вы замыкаетесь в дизайне.

Однако сама архитектура ПК является доказательством возможности прямого обнаружения.

Часто вполне возможно загрузить ядро ​​Linux, скомпилированное, скажем, в 1996 году, на системе, купленной сегодня. Система Linux, возможно, не сможет использовать большую часть аппаратного обеспечения в этой системе, но обнаружит, что все подмножество остается тем же.

Требуется, однако, либо очень разумная схема обнаружения оборудования, либо готовность жить с ключами (см. Настройку линии A20 на ПК, изначально использующих контроллер клавиатуры) или и то и другое одновременно. (Например, сегодня почти все ПК имеют внутреннюю шину ISA для поддержки клавиатуры PS / 2, но также имеют протокол PCI.)

Для работы я разработал формат ID ROM для дочерних плат. У них была компактная двоичная XML или Lisp-подобная структура с несколькими обязательными полями, несколькими необязательными и номером версии. Любое совершенно новое оборудование может увеличивать номер версии и добавлять любые данные, необходимые для нового программного обеспечения, и в то же время сообщать старому программному обеспечению, что уместно в старых полях.

Так что, по крайней мере, старое программное обеспечение может определить идентификатор платы, назначение и затем сдаться. Вот как работают устройства USB. Все старое программное обеспечение может перечислять новые устройства, но далеко не очевидно, что старое программное обеспечение может управлять новым оборудованием любым значимым способом. Исключение составляют клавиатуры, мыши и карты памяти, где все придерживаются старого, так сказать, уровня приложений, протоколов.

...