※ 引述《Spig (Spig)》之銘言:
: ※ 引述《kafy ()》之銘言:
: : 我目的只是想練習開發簡單的module、driver而已,
: : 因為我原本用ubunt9.10,可是時在遇到很多問題沒辦法順利解決,
: : 現在連個簡單的helloworld module的環境都建不起來,
: : survey很多東西,每個東西一試,結果變得又要survey更多東西,
: : 現在連系統都搞爛了,在survey下去原本的正事就不用做了,
: : 有沒有比較適合開發、測試的版本呢?
: : 我知道這不是真正的辦法,但現在實在不太允許花太多時間在設定環境上,
: : 希望高手可以幫忙,謝謝!
開發Linux Device Driver的話使用目前有在維護的發行版都OK
目前我就使用Debian 5以及ubuntu10.04來開發Device Driver
如同之前幾篇的推文中所說的Linux Device Driver v3 真的是一本很好的教材
(2.4 kernel的driver的話請參考v2)
他最大的優點是,他可以免費取得^^
免費線上版:http://lwn.net/Kernel/LDD3/
範例程式下載:http://www.oreilly.com.cn/codeexample/ldd3/
LDD的學習過程入門真的比較辛苦,一開始跟著LDDv3這本書的範例走
下載一份發行版提供的kernel source code;裡面有很多driver的source code可以參考
學會使用find grep 搜尋程式碼
應該很快就會對LDD的架構有感覺了^^
: 好, 不要管 dkms 了, 請丟掉他 (丟遠一點)
: 先安裝一下 gcc
: # sudo apt-get install build-essential
: 開個目錄, 建二個檔案
: 先建 Makefile
: obj-m := hello.o
: KVERSION := $(shell uname -r)
: all:
: $(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
: clean:
: $(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
: 再建 hello.c
: #include <linux/kernel.h>
: #include <linux/init.h>
: static int __init hello_init(void)
: {
: pr_info("Hello world.\n");
: return 0;
: }
: static void __exit hello_exit(void)
: {
: pr_info("Goodbye world.\n");
: }
: module_init(hello_init);
: module_exit(hello_exit);
: 然後鍵入 make, 沒 error 的話應該可以看到 hello.ko
: 然後鍵入 sudo insmod ./hello.ko
: 都沒 error 的話 dmesg | tail -1 就會看到 hello world 了 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.166.2