准備記錄一下Linux驅動學習的點點滴滴!接觸一段時間了,但是沒有記錄,恰巧想把手頭的ARM11的板子整整!所以,准備從今天開始系統記錄一下,主要就是學習驅動的架構,然後編寫板子上面外設的驅動程序,並進行測試!
關於驅動學習最好的資料就是內核源碼了,但是也推薦一本書。
《Linux設備驅動開發詳解》 http://www.linuxidc.com/Linux/2011-07/38211.htm
今天是作為一個系列的開篇,保持優良傳統,寫一個Hello World!的驅動程序。
- #include <linux/init.h>
- #include <linux/module.h>
-
- static int hello_init(void)
- {
- printk(KERN_INFO "hello world!\n");
- return 0;
- }
-
- static void hello_exit(void)
- {
- printk(KERN_INFO "Goodbye!\n");
- }
-
- module_init(hello_init);
- module_exit(hello_exit);
-
- MODULE_LICENSE("Dual BSD/GPL");
Makefile文件如下:
- ifneq ($(KERNELRELEASE),)
- # call from kernel build system
-
- obj-m := helloworld.o
-
- else
-
- KERNELDIR ?= /lib/modules/$(shell uname -r)/build
- PWD := $(shell pwd)
-
- default:
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
-
- endif
輸入make命令進行編譯,可以看看終端上編譯的輸出信息,這有助於我們對編譯過程的了解: