Получение драйверов устройств из ПЗУ - PullRequest
1 голос
/ 02 ноября 2019

Я бы хотел очистить установку встроенного Linux в смартфоне на базе ARM. Для этого мне понадобятся драйверы устройств, такие как флэш-память, дисплей и т. Д. Мне было интересно, можно ли извлечь драйверы устройств из ПЗУ, поставляемого этими поставщиками телефонов?

1 Ответ

2 голосов
/ 02 ноября 2019

Нет, это обычно невозможно. Одна трудность связана с линковкой. Драйверы будут вызывать функции и инфраструктуру в Linux. Например, даже если kmalloc() является одним и тем же источником, местоположение в адресном пространстве может быть другим. Чтобы извлечь код, вам нужно сопоставить извлеченные адреса Linux с вашими адресами назначения. Кроме того, для драйверов характерно использование inline функций, которые могут вызываться в другом модуле, например kfifo, и т. Д., Которые могут иметь функциональные изменения между версиями Linux. Еще более распространенным является то, что код kfifo будет встроен в драйвер. Если функциональность спин-блокировки изменяется между версиями ARM Linux, вам нужно извлечь и заменить эту информацию из драйвера новой версией. Наконец, есть функции Linux, которые не просто устарели, но полностью удалены и заменены какой-либо другой инфраструктурой.

Ваш вопрос очень похож на . Из некоторых приведенных выше причин и, возможно, более, вы можете видеть, что это очень трудно или невозможно реализовать. Вот почему люди сделали ядро ​​Linux GPL. Вы должны иметь возможность запросить исходный код и изменить его гораздо более эффективным (и функционально правильным) способом.

...