LINUX.ORG.RU

как скомпилировать драйвер?


0

1

здравствуйте! есть платка с at91rm9200, на ней крутится линукс, по i2c подключен l3g4200 и надо чтоб в ядре был его драйвер... сам драйвер написан, ссылка вот http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/SW_DRIVER/l3g4... а как его внедрить в ядро? верней его надо скомпилировать, а потом через menuconfig подключить видимо и скомпилировать ядро(это я научился).

Перемещено JB из Development

Ответ на: комментарий от juk4windows

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

Brainiac
() автор топика
Ответ на: комментарий от Brainiac

Это обрезок какой-то, а не драйвера.

попробуйте сделать как /usr/src/kernels/linux-3.0/drivers/sfi

Makefile + Kconfig

juk4windows
()

Makefile

ifneq ($(KERNELRELEASE),)
obj-m += l3g4200d_gyr.o
else
KDIR := /lib/modules/`uname -r`/build

default:
        $(MAKE) -C $(KDIR) M=`pwd`
endif
tab перед $(MAKE), в KDIR пропиши путь к ядру, если не текущее хостовое

и замени

#include <linux/i2c/l3g4200d.h>

на

#include "l3g4200d.h"

Idle
()
Ответ на: комментарий от Idle

[code]brainiac@brainiac-laptop:~/ataman/kernel/drivers/l3g4200d$ make make -C ~/ataman/kernel `uname -r`/build M=`pwd` make[1]: Вход в каталог `/home/brainiac/ataman/kernel' make[1]: *** Нет правила для сборки цели `3.0.0-12-generic/build'. Останов. make[1]: Выход из каталога `/home/brainiac/ataman/kernel' make: *** [default] Ошибка 2 [/code]

или я опять что то не понял?

Brainiac
() автор топика
Ответ на: комментарий от Idle

brainiac@brainiac-laptop:~/ataman/kernel/drivers/l3g4200d$ make make -C /home/ataman/kernel/`uname -r`/build M=`pwd` make: *** /home/ataman/kernel/3.0.0-12-generic/build: Нет такого файла или каталога. Останов. make: *** [default] Ошибка 2 brainiac@brainiac-laptop:~/ataman/kernel/drivers/l3g4200d$

вообще я не понял... ядро у меня 2.6.30 стоит на проце, это на компьютере стоит 3.0.0-12... может это поможет, как изменить то?

кроме linux device drivers есть какие нибудь книги по данной тематике??? или еще надо читать документацию на ядро?

Brainiac
() автор топика
Ответ на: комментарий от Idle

все равно не работает... вообщем в топку, буду читать linux device drivers и писать с нуля

Brainiac
() автор топика
20 апреля 2012 г.
Ответ на: комментарий от Idle

Тоже машинка на этом проце и та же ИС гироскопа. Собрать драйвер удалось, делалось примерно таким же Makefile'ом, но с make указывались переменные ARCH=arm CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi- (поскольку кросс-компиляция).
Скопировал на целевую систему, в домашнюю папку, делаю:
%insmod l3g4200d.ko
%lsmod
Module Size Used by
l3g4200d 6456 0
%ls /sys/bus/i2c/drivers
ev_driver dummy l3g4200d rtc-ds1672
%ls /sys/bus/i2c/devices/
0-0068

Таким образом мы видим, что драйвер включился в ядро, появился в каталоге /sys/bus/i2c/drivers, но в каталоге /sys/bus/i2c/devices/, где он тоже по логике должен был быть, его нету (0-0068 это часы реального времени rtc-ds1672, драйвер был встроен в ядро).

Что значит вся эта картина? ИС либо драйвер работают некорректно? Или я что-то недонастраивал и эту ситуацию можно как-то поправить? Спасибо.

BrotherRabbit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.