說明:原先的test鍵盤驅動做為實驗材料,要求是通過insmod動態加載到系統中思考:要動態加載,必須先在文件系統裡放入test.ko文件,.ko文件是專門的模塊加載文件,那麼如何生成.ko文件呢?方法就是在編譯的時候生成。當然,不能把test文件單獨拿到隨意的地方用arm-linux-gcc -o test.ko test.c這樣的語法編譯,那麼該怎麼做呢?分析如下:
1. 把test.c文件放到YLP2440的根目錄下,(和板子裡用的內核相同的內核版本),YLP2440是這個內核再PC中的文件目錄2. 然後修改YLP2440根目錄的Makefile文件,在頭部添加如下代碼:
obj-m := test.o
KERNELDIR := /root/test/YLP2440
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
3. make 4. make結束後生成test.ko文件,然後把它放到文件系統中,新做一個cramfs文件系統,下載到板子裡5. 啟動板子,然後在test.ko文件目錄下輸入:insmod test.ko 6. 完成
上述代碼中,modules和modules_install為什麼要取這個名字我也不知道,另一種代碼寫法是這樣的:
obj-m := test.o
KERNELDIR := /root/test/YLP2440
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
此寫法不會出現modules被覆蓋這樣的提示