準備移植驅動【內核模塊】,從hello開始,
摘:Linux設備驅動屬於內核的一部分,Linux內核的一個模塊可以以兩種方式被編譯和加載:
(1)直接編譯進Linux內核,隨同Linux啓動時加載;
(2)編譯成一個可加載和刪除的模塊,使用insmod加載(modprobe和insmod命令類似,但依賴於相關的配置文件),rmmod刪除。這種方式控制了內核的大小,而模塊一旦被插入內核,它就和內核其他部分一樣。
摘:最近開始搞內核模塊的交叉編譯,意思是在pc機上面編寫能在arm上面insmod的模塊,以下是注意點:
1)打開2440開發板自帶的光盤,把開發板操作系統的內核拷貝到電腦linux系統下面,名稱爲linux-2.6.32.2-mini2440-20110413.tar,解壓,發現裏面有config_mini2440_w35將這個文件重命名爲.config
2)轉到交叉編譯鏈目錄下,創建硬鏈接ln arm—angstrom——gnueabi-objdump arm-linux-objdump
ln arm—angstrom——gnueabi-objcopy arm-linux-objcopy ln arm—angstrom——gnueabi-nm arm-linux-nm
下一步make要用到這個
3)轉回mini2440的內核目錄,make
這個時候應該就沒有問題了,必須要編譯這個內核,因爲編譯內核模塊代碼的時候,需要用到此編譯過程中的.o文件,如果不編譯,會出現很多找不到文件的錯誤,及其鬱悶!!
現在就可以寫arm內核模塊了。
Kconfig產生menuconfig上面的選項
make menuconfig產生./config文件,make 產生vmlinuz文件。