Двоичный файл прошивки, идентифицированный устройством

Двоичный файл прошивки, идентифицированный устройством

Каким образом двоичный файл прошивки идентифицируется любым устройством, поскольку двоичный файл предназначен для этого устройства? Какова роль ядра в этом?

решение1

Аппаратное устройство не указывает имя файла прошивки; это делает драйвер устройства.

В общих чертах, ядро ​​может обнаружить оборудование на основе стандартизированных идентификаторов (например, идентификаторов поставщика/продукта на шинах PCI/PCIe или USB, или информации DMI), или оно может заранее знать, что устройство должно быть там (платформенные устройства; на основе информации о дереве устройств на некоторых архитектурах, таких как ARM), или скрипты запуска администратора или системы могут явно указать ядру загрузить определенный драйвер (все еще используемый с некоторыми устаревшими устройствами x86 на основе старой архитектуры ISA, которая не полностью автоматически определяется).

Затем драйвер попытается подтвердить, что устройство существует, и выяснить состояние устройства, используя какой-либо метод, который либо задокументирован поставщиком оборудования, либо получен путем обратного проектирования. Если устройству требуется прошивка, драйвер включит необходимые вызовы ядра для загрузки соответствующего файла прошивки. После загрузки данных прошивки в память драйвер отправит их на аппаратное устройство, используя любой метод, подходящий для этого конкретного оборудования.

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

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

Связанный контент