Разработка драйверов устройств в Linux

Я планирую изучить встроенный Linux и писать драйверы устройств Linux. Прочитав о драйверах устройств и ознакомившись с некоторыми учебными пособиями, я немного запутался в исходном коде ядра, который будет использоваться для компиляции.

Я использую Ubuntu 11.04, и в моем /usr/src/ я нахожу следующее:

tijin@tijin-Vostro-460:/usr/src$ ls

gcc-4.4 linux-headers-2.6.38-10-generic-pae linux-headers-2.6.38-10 linux-headers-2.6.38-8

мои вопросы:

1)нужен ли исходный код ядра для компиляции кода драйвера или достаточно заголовков?

2) где я могу получить исходный код ядра и какова процедура установки исходного кода. Пожалуйста, дайте мне знать подробности.


person tijin    schedule 08.02.2012    source источник


Ответы (3)


  1. Заголовков достаточно
  2. с kernel.org, а для конкретных ядер Ubuntu следуйте документация

Инструкции по компиляции модуля см. в этом вопросе.

person Kimvais    schedule 08.02.2012
comment
спасибо за Ваш ответ. не могли бы вы добавить шаги для компиляции примера кода драйвера с заголовками? - person tijin; 08.02.2012
comment
модуль hello world успешно загружен. но я пытался посмотреть журналы в /var/log/messages, но получаю: такого файла или каталога нет. где я могу увидеть журналы, вы можете мне помочь? заранее спасибо. - person tijin; 15.02.2012
comment
да..работает. я нашел другой способ посмотреть журналы: $tail -f /var/log/kern.log //Журналы ядра. Спасибо за вашу помощь. - person tijin; 15.02.2012

  1. да. Вам нужен не только исходный код, но и исходный код make (скомпилированный исходный код ядра).

  2. Основное место для получения исходного кода ядра: http://www.kernel.org.

Поскольку вы используете Ubuntu, вы можете просто загрузить исходный код из репозиториев. Вот страница, указанная в справке Ubuntu в качестве руководства по компиляции ядра из исходников на Natty (11.04): http://blog.avirtualhome.com/2011/08/03/how-to-compile-a-new-ubuntu-11-04-natty-kernel/

person DallaRosa    schedule 08.02.2012

Для более свежего кодирования драйвера устройства ссылка на код драйвера «hello world» находится здесь:

http://www.linuxquestions.org/questions/linux-kernel-70/simple-makefile-error-all-nothing-need-to-be-done-600403/ . Эта ссылка также обсуждает вопросы, связанные с Makefile. Важная идея, которую я получил из ссылки: никогда не копируйте и не вставляйте содержимое документа для создания Makefile.

Если у вас возникли проблемы с просмотром журналов, перейдите по ссылке:

http://www.cyberciti.biz/faq/linux-log-files-location-and-how-do-i-view-logs-files/

благодаря.

person tijin    schedule 15.02.2012