Analytics

2010年1月6日 星期三

測試自己加入的kernel module

首先在build kernel時,
#make menuconfig
記得要到Device Drivers -> Generic Driver Options
將Userspace firmware loading support設為<*>,也就是built-in



接下來準備將自己的kernel module放進去

原本想用LKMP文件上講的方法去編譯.ko檔
但發現他是在一個運作中的kernel上去編譯的,例如我現在連上網的這台linux主機
就可以用來創建自己的kernel module,但是在只有kernel source code的情形下呢?

還是說我可以在運行embedded linux的板子上進行編譯?


另一個方法就是把kernel module的 source code place together with other char. device drivers,like under /drivers/char/
and then edit "Kconfig",add the compile information
then use #make menuconfig to setup to <M> state.

and then go to the "Makefile" in the same floder,and add:
obj-$(CONFIG_LED) += led.o

now just go to the kernel source tree,command #make modules
and you can find the .ko file.

but when I try to insert the module...

[root@(none) dma2443]# modprobe led.ko
modprobe: chdir(/lib/modules): No such file or directory

but use #insmod led.ko
it's work...

so,what's wrong?

好接下來來看看載入的模組能不能用

#mknod /dev/GPIO_L c 96 0
/dev/xxx取決於你的user space程式裡面設定開哪一個device名稱

沒有留言:

張貼留言