Всем привет.
Не пойму как именно ОС через firmware обращается к устройству (в моем случае wireless адаптер, через USB).
Читаю о firmware: это прошивка, которую устанавливают в само устройство. Но неужели при установки firmware каждый раз мой GNU/Linux или OpenBSD перезаписывают (перепрошивают) устройство? Т.е. после установки пакета с firmware (набор бинарников) и использовании этого устройства, мы имеем "другое устройство", т.е. перепрошитое?
Я явно чего-то не допопнимаю и хотел бы разобраться с этим вопросом.
С модулями ядра все понятно - функционал подключается к ядру (в случае модулей), я вижу этот модуль через lsmod (в GNU/Linux), а он, в свою очередь, знает как работать с устройством. Есть модуль - есть интерфейс, нет модуля - мы не знаем об устройсве и о том, как с ним работать. А как работает firmware, и как ядро узнает о его наличии, а точнее - о необходимости его использования для общения с устройством? Я сейчас в OpenBSD, было бы здорово, если бы кто-то хотя бы навел на мысль и показал на примере как ПО взаимодействует с устройством именно через firmware в этой ОС.
Заранее спасибо.
Как работает firmware? (обращение к устройству через usb)
Модератор: Модераторы разделов
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Как работает firmware?
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Как работает firmware?
Не обязательно. У прошивки может быть две части - одна в устройстве, которая запускается на собственном SoC, другая часть - в драйвере системы, это просто кусок кода, который преобразует вызовы какого-нибудь API в проприетарные сообщения для внутренней части прошивки.Stauffenberg писал(а): ↑28.02.2014 14:51Читаю о firmware: это прошивка, которую устанавливают в само устройство.
Т.е. это примерно как использование, скажем, клиентской библиотеки типа libmysql (firmware, которое загружает ядерный модуль устройства), который переправляет команды ядру MySQL (внутренней прошивке).
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Как работает firmware?
Получается, что драйвер в системе все же есть, но он не знает как работать с устройством. Он определяет лишь id-устройства и на основании этой информации знает какой firmware ему нужен. Если оно есть в системе (должно находиться только в определенном месте), то драйвер передает этот firmware устройству, и на его CPU запускается этот самый firmware (бинарник).
Значит на самом устройстве мы ничего не меняем, ничего на нем не перезаписываем. Firmware для каждой ОС, получается, должен быть свой, несмотря на то, что работает он на другом железе, чем сама ОС.
Чувствую, что придется все же поиграться с отладчиком и с исходниками полудрайвера (:
Значит на самом устройстве мы ничего не меняем, ничего на нем не перезаписываем. Firmware для каждой ОС, получается, должен быть свой, несмотря на то, что работает он на другом железе, чем сама ОС.
Чувствую, что придется все же поиграться с отладчиком и с исходниками полудрайвера (:
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Как работает firmware?
Думаю, что это зависит от железки. В некоторые железки можно/нужно заливать прошивку после каждого включения (например в тех самых ужасных принтерах HP 10xx). Как я понимаю, это сделано по тем же соображениям, по которым некоторые ядерные модули подгружают _в себя_ чужое проприетарное firmware. В случае с принтерами HP, вероятно, требуется, чтобы в его прошивку ещё и подгрузили блок постороннего проприетарного лицензированного кода ZJS.Stauffenberg писал(а): ↑28.02.2014 16:55Значит на самом устройстве мы ничего не меняем, ничего на нем не перезаписываем. Firmware для каждой ОС, получается, должен быть свой, несмотря на то, что работает он на другом железе, чем сама ОС.
В случае с видеокартами ATI/AMD требовалась загрузка в драйвер блоба, который, как понимаю, не удалось раскодировать или который нельзя включать по-умолчанию по соображениям лицензии.
Re: Как работает firmware?
О... спасибо. Сам ёще нуб в линуксе, но хочу асик-майнеры попробовать запустить через USB
Видеокарты для заработка