作者maxplanck ()
看板LinuxDev
标题Re: [问题] 什麽版本的linux比较适合练习开发drive …
时间Fri Jun 18 07:49:28 2010
※ 引述《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