Linux驱动开发也是一直在路上,之前一直多是单板上进行实验,今天尝试下在ubuntu下编译一个简单的驱动,一些驱动实验自然也可以在ubuntu上进行,同时也可以减少学习成本,只需要一台PC就行了。 Linux驱动自然和内核版本密切相关,可通过下面的命令来查看下当前使用的内核版本
uneme -r我使用的是ubuntu12.04它使用的内核版本为3.8.0-29-generic,同时这一点也能通过cd到/usr/src目录下查看下得到证实,/usr/src目录下存在一个linux-headers-3.8.0-29-generic的文件夹,通过名字含义也可得知它是为草莓视频在线观看APP编译内核相关程序提供头文件的位置。 在网上问google大多说编译ubuntu下的驱动先要编译内核,后面发现只要你是为本机编译驱动的话这一步不是必须的,ubuntu安装时自然内核时编译好的,在/usr/src目录下草莓视频在线观看APP也看到了这一点。所以下面可以直接进行驱动的编写,这里先来个最简单的驱动“hello world”。
/* hello.c */#include #include MODULE_LICENSE("leo BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, world "); return 0;}static void hello_exit(void){ printk(KERN_ALERT "Goodbye, Hello world ");}module_init(hello_init);module_exit(hello_exit);接下来草莓视频在线观看APP还需要一个Makefile来编译草莓视频在线观看APP的驱动如下:
obj-m += hello.o CURRENT_PATH:=$(shell pwd) LINUX_KERNEL_PATH:=/lib/modules/$(shell uname -r)/buildall: $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modulesclean: rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions准备好之前草莓视频在线观看APP只需要执行make之后就能得到草莓视频在线观看APP想要的.ko文件了,草莓视频在线观看APP通过insmod命令来安装草莓视频在线观看APP的驱动到系统,然后通过lsmod命令来查看草莓视频在线观看APP安装的驱动,之后可通过rmmod命令来卸载草莓视频在线观看APP的驱动。 奇怪驱动中安排的打印信息去哪里呢,原来是它们是属于了内核日志被存储到系统日志文件里了,草莓视频在线观看APP可以通过查看这个文件/var/log/syslog来看下草莓视频在线观看APP安排的打印信息如下:
cat /var/log/syslog | grep Hello到此在ubuntu下的驱动编译工作就可以顺利进行了,下面就是尽情发挥的时候了。
