之前寫Linux驅動都是在純文字下完成的,最近發現原來可以使用Eclipse來開發,於是搗鼓了半天終於編譯成功,感覺還不錯。下面以Hello World驅動為例說一下使用Eclipse開發ARM-Linux驅動的過程。
關於Eclipse和CDT的安裝就不說了。安裝完Eclipse和CDT後,運行Eclipse,file->New->project選擇C/C++裡面的C Project,如:
然後點擊Next,填寫工程名為hello和設定工程路徑,設定如下:
點擊Next後再點擊Next,填寫交叉編譯器首碼和交叉編譯器路徑,如下:
然後點擊finish,此時的工程結構如所示,自動包含了幾個與交叉編譯器相關的標頭檔路徑:
右鍵工程->Propertise,選擇C/C++ General裡的Paths and Symbols,選中在includes選項卡裡的GNU C,然後點擊右邊的Add按鈕,添加核心(必須事先已經用交叉編譯器編譯過)標頭檔目錄,如下:
勾選Add to all configurations ,然後點擊OK,在Symbols選項卡裡添加一個Symbols,Name為__KERNEL__,Value為1,如下:
勾選Add to all configurations,然後點擊OK。再點擊OK,此時會彈出一個框,如下,選擇YES。
編寫hello.c檔案:
1 #include <linux/module.h> /* Needed by all modules */ 2 #include <linux/kernel.h> /* Needed for KERN_INFO */ 3 #include <linux/init.h> /* Needed for the macros */ 4 5 6 static int __init hello_init(void) 7 { 8 printk(KERN_INFO "Hello, world\n"); 9 return 0;10 }11 12 static void __exit hello_exit(void)13 {14 printk(KERN_INFO "Goodbye, world\n");15 }16 17 module_init(hello_init);18 module_exit(hello_exit);19 MODULE_LICENSE("GPL");
編寫Makefile檔案:
1 obj-m += hello.o2 3 PWD = $(shell pwd)4 5 all:6 make -C /GT2440/kernel/linux-2.6.34.12 M=$(PWD) modules7 8 clean:9 rm -f *.o *.ko
完成後,如:
最後,右鍵工程->Properties->C/C++ Build,在Builder Settings選項卡裡取消勾選Generate Makefiles automatically,如下:
然後單擊OK。右鍵工程->Build Project編譯工程,成功編譯效果如下:
已經產生hello.ko檔案,並且可以看到Console的輸出和在終端下編譯的輸出是一樣的。
附:
要匯入原來的C工程的方法是,File->Import,選在General下的Existing Projects into Workspace,如下:
然後點擊Next,點擊Browse選擇要匯入的工程的根目錄,然後點擊Finish。