Написание «Hello World & rdquo; Драйвер устройства для ядра 2.6 с использованием Eclipse

Вам не нужно указывать исходный файл ~/.bash_alieases в файле ~/.bashrc. Если вы посмотрите с вниманием в файле ~/.bashrc, вы найдете где-нибудь после строки 100 следующие строки:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Это означает: если файл ~/.bash_aliases существует и является обычным файлом, затем выполните файл. source ~/.bash_aliases и . ~/.bash_aliases являются синонимами в bash (см. раздел «Какая разница между« источником »и«. »в bash?).

Только если по какой-либо ошибке у вас нет вы должны добавить их снова в свой файл ~/.bashrc.

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

source ~/<filename>

или, просто:

. ~/<filename>
9
задан 1 October 2011 в 05:30

15 ответов

Я почти в том же положении с тобой. Следуя этим инструкциям, я добился успеха в создании самого ядра и одного модуля.

Я добавил три основные статьи (40 ~ 42) в главную статью, чтобы заставить Eclipse скомпилировать определенный драйвер, а не целое ядро.

Загрузите и установите Eclipse plus CDT. Настройте и постройте ядро ​​для определения CONFIG_* и сгенерируйте autoconf.h. Это можно сделать до или после загрузки и установки Eclipse. Убедитесь, что у вас есть правильный источник ядра (например, убедитесь, что вы находитесь в правой ветке git). Если вы проверите еще одну ветку позже, это нормально, но вам нужно будет переиндексировать источник, и это занимает около 20 минут. Запустите Eclipse. Нажмите File -> New -> C Project Заполните имя проекта, например my_kernel Снимите флажок Использовать местоположение по умолчанию и введите корневой каталог вашего ядра в поле «Место». В области «Тип проекта: панель» щелкните проект Makefile и выберите «Пустой проект». Справа выберите Linux GCC. Нажмите Advanced settings ... и появится диалоговое окно «Свойства». Выберите «Ресурс» слева, а затем в разделе «Кодировка текстового файла» выберите «Другие» и ISO-8859-1 в поле, затем нажмите «Применить». Откройте вкладку C/C++ General слева. Нажмите Preprocessor Include Paths Выберите GNU C в списке «Языки». Выберите CDT User Setting Entries в списке «Записи настроек». Нажмите Add. ... Выберите «Файл макросов препроцессора» в раскрывающемся списке «Верхний левый», «Путь к проекту» в раскрывающемся списке вверху справа и введите include/generated/autoconf.h в текстовое поле Файл. (Примечание: для старых ядер [pre-2.6.36?] Расположение autoconf.h равно include/linux/autoconf.h). Также добавьте любые другие файлы макросов, которые вы используете. Нажмите на флажок Indexer Checkmark в поле Enable project specific settings. Снимите флажок Исходные файлы индекса, не включенные в сборку. Удалите файлы для индексации переднего окна. Нажмите «Пути» и «Символы» слева. Перейдите на вкладку «Включает», затем выберите GNU C. Нажмите Add ... Нажмите Workspace ... затем выберите каталог включений ядра. Сделайте еще одно добавление, рабочее пространство и добавьте arch/architecture/include, например, arch/powerpc/include Нажмите кнопку # Symbols Нажмите Add ... Установите имя на __KERNEL__ Установите значение на 1 и нажмите OK. Нажмите вкладку «Расположение источника». Нажмите на твист для вашего проекта. Выберите элемент «Фильтр» и нажмите «Редактировать фильтр» ... Нажмите «Добавить несколько ...» и затем выберите все каталоги arch / * в исходном коде ядра, которые не будут использоваться (т.е. все те, которые не используются для используемой архитектуры ) Нажмите OK и OK еще раз, чтобы закрыть это диалоговое окно. Нажмите «ОК» в диалоговом окне «Свойства». Нажмите «Готово» в диалоговом окне «Проект». Щелкните правой кнопкой мыши по проекту и выберите «Индекс», затем «Перестроить». Для завершения потребуется около 20 минут. Откройте настройку вашего проекта, перейдите к C/C++ build -> Behaviour (tab) Установите флажок Build (Incremental buil) и добавьте путь к модулю в текстовое поле (в моем случае M=drivers/servo/dynamixel). Когда вы будете готовы к модулю и хотите скомпилировать ядро, повторите 41 и замените M=.. на all.
5
ответ дан 25 May 2018 в 18:31

Я почти в том же положении с тобой. Следуя , это istructions, я имел успех с самим построением ядра и одним модулем.

В основной статье я добавил три шага (40 ~ 42), чтобы сделать Eclipse компилятором определенного драйвера, а не целого ядра.

  1. Загрузите и установите Eclipse plus CDT.
  2. Настроить и построить ваше ядро ​​для определения CONFIG_* и сгенерировать autoconf.h. Это можно сделать до или после загрузки и установки Eclipse.
  3. Убедитесь, что у вас есть правильный источник ядра (например, убедитесь, что вы находитесь в правой ветке git). Если вы проверите другую ветку позже, это нормально, но вам нужно будет переиндексировать источник, и это займет около 20 минут.
  4. Запустите Eclipse.
  5. Нажмите File -> New -> C Project
  6. Заполните имя проекта, например my_kernel
  7. Снимите флажок Использовать местоположение по умолчанию и введите корневой каталог вашего ядра в поле ввода.
  8. На панели «Тип проекта» щелкните проект Makefile и выберите «Пустое проект»
  9. . Справа выберите Linux GCC
  10. Нажмите Advanced settings ... и появится диалоговое окно «Свойства».
  11. Выберите «Ресурс» слева, а затем в разделе «Кодировка текстового файла» выберите «Другие» и ISO-8859-1 в поле, затем нажмите «Применить»
  12. Откройте вкладку C/C++ General слева.
  13. Нажмите Preprocessor Include Paths
  14. Выберите GNU C в списке Языки
  15. Выберите CDT User Setting Entries в списке «Записи настроек»
  16. Нажмите Add .... Выберите «Файл макросов препроцессора» в раскрывающемся списке верхнего левого меню, «Путь к проекту» в раскрывающемся списке вверху справа и введите include/generated/autoconf.h в Файл текстовое окно. (Примечание: для старых ядер [pre-2.6.36?] Расположение autoconf.h равно include/linux/autoconf.h)
  17. Также добавьте любые другие файлы макросов, которые вы используете.
  18. Нажмите на Indexer
  19. Установите флажок «Включить специальные настройки проекта».
  20. Снимите флажок Исходные файлы индекса, не включенные в сборку
  21. Удалите файлы для индексации вверх
  22. Нажмите «Пути и символы слева».
  23. Выберите вкладку «Включает», а затем выберите GNU C
  24. Нажмите Add ...
  25. Нажмите Workspace ... затем выберите каталог include вашего ядра
  26. Сделайте еще одно добавление, рабочее пространство и добавьте arch/architecture/include, например, arch/powerpc/include
  27. Нажмите вкладка # Symbols
  28. Нажмите Add ...
  29. Установите имя на __KERNEL__
  30. Установите значение на 1 и нажмите OK.
  31. Нажмите вкладку «Расположение источника»
  32. Нажмите твист для вашего проекта.
  33. Выберите элемент «Фильтр» и нажмите «Изменить фильтр ...»
  34. Нажмите «Добавить несколько ...» и затем выберите все каталоги arch / * в исходном коде ядра, которые l не использовать (т. все, что не для используемой архитектуры)
  35. Нажмите «ОК» и «ОК» еще раз, чтобы закрыть это диалоговое окно.
  36. Нажмите «ОК» в диалоговом окне «Свойства».
  37. Нажмите «Готово» в диалоговом окне «C Project».
  38. Щелкните правой кнопкой мыши по проекту и выберите «Индекс», затем выберите «Восстановить»
  39. . Для завершения потребуется около 20 минут.
  40. Откройте настройку вашего проекта, перейдите к C/C++ build -> Behaviour (tab)
  41. Установите флажок Build (Incremental buil) и добавьте путь к модулю в текстовое поле (в моем случае M=drivers/servo/dynamixel).
  42. Когда вы готовы к модулю и хотите скомпилировать ядро, повторите 41 и замените M=.. на all.
5
ответ дан 31 July 2018 в 11:01

Я почти в том же положении с тобой. Следуя , это istructions, я имел успех с самим построением ядра и одним модулем.

В основной статье я добавил три шага (40 ~ 42), чтобы сделать Eclipse компилятором определенного драйвера, а не целого ядра.

  1. Загрузите и установите Eclipse plus CDT.
  2. Настроить и построить ваше ядро ​​для определения CONFIG_* и сгенерировать autoconf.h. Это можно сделать до или после загрузки и установки Eclipse.
  3. Убедитесь, что у вас есть правильный источник ядра (например, убедитесь, что вы находитесь в правой ветке git). Если вы проверите другую ветку позже, это нормально, но вам нужно будет переиндексировать источник, и это займет около 20 минут.
  4. Запустите Eclipse.
  5. Нажмите File -> New -> C Project
  6. Заполните имя проекта, например my_kernel
  7. Снимите флажок Использовать местоположение по умолчанию и введите корневой каталог вашего ядра в поле ввода.
  8. На панели «Тип проекта» щелкните проект Makefile и выберите «Пустое проект»
  9. . Справа выберите Linux GCC
  10. Нажмите Advanced settings ... и появится диалоговое окно «Свойства».
  11. Выберите «Ресурс» слева, а затем в разделе «Кодировка текстового файла» выберите «Другие» и ISO-8859-1 в поле, затем нажмите «Применить»
  12. Откройте вкладку C/C++ General слева.
  13. Нажмите Preprocessor Include Paths
  14. Выберите GNU C в списке Языки
  15. Выберите CDT User Setting Entries в списке «Записи настроек»
  16. Нажмите Add .... Выберите «Файл макросов препроцессора» в раскрывающемся списке верхнего левого меню, «Путь к проекту» в раскрывающемся списке вверху справа и введите include/generated/autoconf.h в Файл текстовое окно. (Примечание: для старых ядер [pre-2.6.36?] Расположение autoconf.h равно include/linux/autoconf.h)
  17. Также добавьте любые другие файлы макросов, которые вы используете.
  18. Нажмите на Indexer
  19. Установите флажок «Включить специальные настройки проекта».
  20. Снимите флажок Исходные файлы индекса, не включенные в сборку
  21. Удалите файлы для индексации вверх
  22. Нажмите «Пути и символы слева».
  23. Выберите вкладку «Включает», а затем выберите GNU C
  24. Нажмите Add ...
  25. Нажмите Workspace ... затем выберите каталог include вашего ядра
  26. Сделайте еще одно добавление, рабочее пространство и добавьте arch/architecture/include, например, arch/powerpc/include
  27. Нажмите вкладка # Symbols
  28. Нажмите Add ...
  29. Установите имя на __KERNEL__
  30. Установите значение на 1 и нажмите OK.
  31. Нажмите вкладку «Расположение источника»
  32. Нажмите твист для вашего проекта.
  33. Выберите элемент «Фильтр» и нажмите «Изменить фильтр ...»
  34. Нажмите «Добавить несколько ...» и затем выберите все каталоги arch / * в исходном коде ядра, которые l не использовать (т. все, что не для используемой архитектуры)
  35. Нажмите «ОК» и «ОК» еще раз, чтобы закрыть это диалоговое окно.
  36. Нажмите «ОК» в диалоговом окне «Свойства».
  37. Нажмите «Готово» в диалоговом окне «C Project».
  38. Щелкните правой кнопкой мыши по проекту и выберите «Индекс», затем выберите «Восстановить»
  39. . Для завершения потребуется около 20 минут.
  40. Откройте настройку вашего проекта, перейдите к C/C++ build -> Behaviour (tab)
  41. Установите флажок Build (Incremental buil) и добавьте путь к модулю в текстовое поле (в моем случае M=drivers/servo/dynamixel).
  42. Когда вы готовы к модулю и хотите скомпилировать ядро, повторите 41 и замените M=.. на all.
5
ответ дан 2 August 2018 в 02:55

Если вы хотите сделать разработку драйвера с помощью eclipse, вам придется делать это наоборот.

Вам нужно будет догнать automake, autogen, pkg-config и т. д., создать проект autotools и импортировать его в eclipse. Eclipse-cdt должен предложить это, иначе вы пропустили установку «autotools-plugin» (не знаете точное имя, записывая это из памяти).

Просто откажитесь от идеи, что eclipse-cdt может управлять приличным Makefile , C не является Java, к сожалению или к счастью.

1
ответ дан 25 May 2018 в 18:31
  • 1
    Благодарю. Я скоро проверю плагин autotools. Знаете ли вы, что лучше IDE для программирования драйверов? Вы думаете, что я (ленивый пользователь VS, у которого нет опыта работы в Linux) может управлять makefile? Действительно ли makefile s управляется в больших проектах? – Isaac 2 October 2011 в 01:10
  • 2
    Я тоже был ленивым пользователем VS, и я должен признать, что освоение autotools имеет крутую кривую обучения, но это очень полезно не только для Linux. Eclipse - одна из лучших IDE, но проекты autotools настолько разнообразны, что никакая среда IDE не может проанализировать все возможности. Попробуйте geany, если вы хотите сделать это правильно, попробуйте anjuta и codelite, если вам понравился VS6, но всегда разбирайтесь в компиляции командной строки. – aquaherd 5 October 2011 в 00:39

Я новичок в программировании драйверов Linux, я обнаружил, что есть новый способ развернуть модули ядра (которые не находятся в официальном дереве Linux) под названием DKMS. Модуль будет установлен как источник, и DKMS позаботится о его компиляции для каждого ядра. Это означает, что файл Makefile для модуля будет записан вручную, и его источник не будет включен для autotools.

http://linux.dell.com/dkms/

обновлено ...

DKMS переместился на http://linux.dell.com/dkms/

Это руководство / краткое введение в DKMS (ссылки с страницы проекта Dell) : Статья журнала Linux, документ Power Solutions, документ Symposium Ottawa Linux

DKMS, используемый для быстрого развертывания драйверов. Например, модули ядра, использующие DKMS в моей машине Ubuntu:

dkms status

bcmwl, 6.20.155.1+bdcom, 3.5.0-41-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-42-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-43-generic, x86_64: installed
nvidia, 313.26, 3.5.0-42-generic, x86_64: installed
nvidia, 313.26, 3.5.0-43-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-42-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-43-generic, x86_64: installed

Это код, который я написал ранее, он может быть полезен как DKMS Hello World. Статья в Linux Journal

1
ответ дан 25 May 2018 в 18:31

1> вы можете попробовать с помощью этой команды

«make» -> «/ usr / bin / make»

/usr/bin/make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1

2> в каталоге сохранить ваше приветственное слово код, имя файла creat "Makefile"

obj-m := NameofyourHelloWold.o 

KDIR  := /lib/modules/2.6.38-8-generic/build

PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules
1
ответ дан 25 May 2018 в 18:31

Если вы хотите сделать разработку драйвера с помощью eclipse, вам придется делать это наоборот.

Вам нужно будет догнать automake, autogen, pkg-config и т. д., создать проект autotools и импортировать его в eclipse. Eclipse-cdt должен предложить это, иначе вы пропустили установку «autotools-plugin» (неуверенный о точном имени, записывая это из памяти).

Просто откажитесь от идеи, что eclipse-cdt может управлять приличным Makefile , C не является Java, к сожалению или к счастью.

1
ответ дан 31 July 2018 в 11:01

Я новичок в программировании драйверов Linux, я обнаружил, что есть новый способ развернуть модули ядра (которые не находятся в официальном дереве Linux) под названием DKMS. Модуль будет установлен как источник, и DKMS позаботится о его компиляции для каждого ядра. Это означает, что файл Makefile для модуля будет записан вручную, и его источник не будет включен для autotools.

http://linux.dell.com/dkms/

обновлено ...

DKMS переместился в http://en.community.dell.com/techcenter/os-applications/w/wiki/2463.linux-projects.aspx

Это руководство / краткое введение в DKMS (ссылки на странице проекта Dell): Статья в журнале Linux , Документ Power Solutions , Ottawa Linux Symposium paper

DKMS используется для быстрого развертывания драйверов. Например, модули ядра, использующие DKMS в моей машине Ubuntu:

dkms status

bcmwl, 6.20.155.1+bdcom, 3.5.0-41-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-42-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-43-generic, x86_64: installed
nvidia, 313.26, 3.5.0-42-generic, x86_64: installed
nvidia, 313.26, 3.5.0-43-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-42-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-43-generic, x86_64: installed

Это код, который я написал ранее, он может быть полезен как DKMS Hello World. https://github.com/sneetsher/RTD-DM5408-Driver-Port-for-Linux

1
ответ дан 31 July 2018 в 11:01

1> вы можете попробовать с помощью этой команды

«make» -> «/ usr / bin / make»

/usr/bin/make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1

2> в каталоге сохранить ваше приветственное слово код, имя файла creat "Makefile"

obj-m := NameofyourHelloWold.o 

KDIR  := /lib/modules/2.6.38-8-generic/build

PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules
1
ответ дан 31 July 2018 в 12:00

Я новичок в программировании драйверов Linux, я обнаружил, что есть новый способ развернуть модули ядра (которые не находятся в официальном дереве Linux) под названием DKMS. Модуль будет установлен как источник, и DKMS позаботится о его компиляции для каждого ядра. Это означает, что файл Makefile для модуля будет записан вручную, и его источник не будет включен для autotools.

http://linux.dell.com/dkms/

обновлено ...

DKMS переместился в http://en.community.dell.com/techcenter/os-applications/w/wiki/2463.linux-projects.aspx

Это руководство / краткое введение в DKMS (ссылки на странице проекта Dell): Статья в журнале Linux , Документ Power Solutions , Ottawa Linux Symposium paper

DKMS используется для быстрого развертывания драйверов. Например, модули ядра, использующие DKMS в моей машине Ubuntu:

dkms status

bcmwl, 6.20.155.1+bdcom, 3.5.0-41-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-42-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-43-generic, x86_64: installed
nvidia, 313.26, 3.5.0-42-generic, x86_64: installed
nvidia, 313.26, 3.5.0-43-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-42-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-43-generic, x86_64: installed

Это код, который я написал ранее, он может быть полезен как DKMS Hello World. https://github.com/sneetsher/RTD-DM5408-Driver-Port-for-Linux

1
ответ дан 31 July 2018 в 12:00

1> вы можете попробовать с помощью этой команды

«make» -> «/ usr / bin / make»

/usr/bin/make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1

2> в каталоге сохранить ваше приветственное слово код, имя файла creat "Makefile"

obj-m := NameofyourHelloWold.o 

KDIR  := /lib/modules/2.6.38-8-generic/build

PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules
1
ответ дан 2 August 2018 в 02:55

1> вы можете попробовать с помощью этой команды

«make» -> «/ usr / bin / make»

/usr/bin/make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1

2> в каталоге сохранить ваше приветственное слово код, имя файла creat "Makefile"

obj-m := NameofyourHelloWold.o 

KDIR  := /lib/modules/2.6.38-8-generic/build

PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules
1
ответ дан 4 August 2018 в 18:44

Я новичок в программировании драйверов Linux, я обнаружил, что есть новый способ развернуть модули ядра (которые не находятся в официальном дереве Linux) под названием DKMS. Модуль будет установлен как источник, и DKMS позаботится о его компиляции для каждого ядра. Это означает, что файл Makefile для модуля будет записан вручную, и его источник не будет включен для autotools.

http://linux.dell.com/dkms/

обновлено ...

DKMS переместился в http://en.community.dell.com/techcenter/os-applications/w/wiki/2463.linux-projects.aspx

Это руководство / краткое введение в DKMS (ссылки на странице проекта Dell): Статья в журнале Linux , Документ Power Solutions , Ottawa Linux Symposium paper

DKMS используется для быстрого развертывания драйверов. Например, модули ядра, использующие DKMS в моей машине Ubuntu:

dkms status

bcmwl, 6.20.155.1+bdcom, 3.5.0-41-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-42-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-43-generic, x86_64: installed
nvidia, 313.26, 3.5.0-42-generic, x86_64: installed
nvidia, 313.26, 3.5.0-43-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-42-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-43-generic, x86_64: installed

Это код, который я написал ранее, он может быть полезен как DKMS Hello World. https://github.com/sneetsher/RTD-DM5408-Driver-Port-for-Linux

1
ответ дан 4 August 2018 в 18:44

Я новичок в программировании драйверов Linux, я обнаружил, что есть новый способ развернуть модули ядра (которые не находятся в официальном дереве Linux) под названием DKMS. Модуль будет установлен как источник, и DKMS позаботится о его компиляции для каждого ядра. Это означает, что файл Makefile для модуля будет записан вручную, и его источник не будет включен для autotools.

http://linux.dell.com/dkms/

обновлено ...

DKMS переместился в http://en.community.dell.com/techcenter/os-applications/w/wiki/2463.linux-projects.aspx

Это руководство / краткое введение в DKMS (ссылки на странице проекта Dell): Статья в журнале Linux , Документ Power Solutions , Ottawa Linux Symposium paper

DKMS используется для быстрого развертывания драйверов. Например, модули ядра, использующие DKMS в моей машине Ubuntu:

dkms status

bcmwl, 6.20.155.1+bdcom, 3.5.0-41-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-42-generic, x86_64: installed
bcmwl, 6.20.155.1+bdcom, 3.5.0-43-generic, x86_64: installed
nvidia, 313.26, 3.5.0-42-generic, x86_64: installed
nvidia, 313.26, 3.5.0-43-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-42-generic, x86_64: installed
vboxhost, 4.3.0, 3.5.0-43-generic, x86_64: installed

Это код, который я написал ранее, он может быть полезен как DKMS Hello World. https://github.com/sneetsher/RTD-DM5408-Driver-Port-for-Linux

1
ответ дан 6 August 2018 в 03:08

Если вы хотите сделать разработку драйвера с помощью eclipse, вам придется делать это наоборот.

Вам нужно будет догнать automake, autogen, pkg-config и т. д., создать проект autotools и импортировать его в eclipse. Eclipse-cdt должен предложить это, иначе вы пропустили установку «autotools-plugin» (неуверенный о точном имени, записывая это из памяти).

Просто откажитесь от идеи, что eclipse-cdt может управлять приличным Makefile , C не является Java, к сожалению или к счастью.

1
ответ дан 7 August 2018 в 20:50

Другие вопросы по тегам:

Похожие вопросы: