Разработка драйверов без информации - PullRequest
2 голосов
/ 12 сентября 2008

Как сообщество с открытым исходным кодом / бесплатное программное обеспечение разрабатывает драйверы для продуктов, которые не предоставляют никакой документации?

Ответы [ 3 ]

7 голосов
/ 12 сентября 2008

Как вы что-то перепроектируете?

  • Вы наблюдаете за вводом и выводом и разрабатываете набор правил или моделей, описывающих работу объекта.

Пример:

Допустим, вы хотите разработать драйвер USB-камеры. «Черный ящик» - это программный драйвер.

  1. Разработка хуков в ОС и / или драйвере, чтобы вы могли видеть входы и выходы драйвера
  2. Генерация типовых входов и запись выходов
  3. Анализ выходов и синтез модели, которая описывает отношения между входом и выходом
  4. Протестируйте модель - поместите ее вместо драйвера черного ящика и запустите ваши тесты
  5. Если он делает все, что вам нужно, все готово, если не полоскать и повторять

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

Этот метод несколько безопаснее (юридически), чем обратный инжиниринг в чистых помещениях, где кто-то фактически декомпилирует код или разбирает продукт, тщательно анализирует его и создает модель на основе увиденного. Затем модель ( И НИЧЕГО ДРУГОГО ) передается разработчикам, копирующим функциональность продукта. Инженер, который разобрал оригинал, однако, не может участвовать, потому что он может принести защищенные авторским правом части кода / дизайна и случайно добавить их в новый код.

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

-Adam

2 голосов
/ 12 сентября 2008
0 голосов
/ 12 сентября 2008

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

...