阐述Linux驱动程序“Hello world!”


学习Linux,你可能会遇到嵌入式Linux问题,下面介绍第一个Linux驱动程序“Hello world!”,“Hello world”也许是第一个程序员写的程序吧,这里我也从写它开始,尽管它很简单,但它记录了学习Linux驱动程序的过程。

  1. /*hello_module.c*/  
  2. #include <linux/module.h> 
  3. #include <linux/init.h> 
  4. static int __init mini2440_hello_module_init(void)  
  5. {  
  6.     printk("Hello, Mini2440 module is installed !\n");  
  7.     return 0;  
  8. }  
  9. static void __exit mini2440_hello_module_cleanup(void)  
  10. {  
  11.     printk("Good-bye, Mini2440 module was removed!\n");  
  12. }  
  13. module_init(mini2440_hello_module_init);  
  14. module_exit(mini2440_hello_module_cleanup);  
  15. MODULE_LICENSE("GPL"); 

简单的分析:本程序中所用到的头文件“linux/module.h”和“linux/init.h”在所有的模块代码中都应该包含。MODULE_LICENSE("GPL");是内核模块所遵循的许可证。函数用__init来修饰,标明函数仅在初始化期间使用,当模块被装载后将该初始化函数扔掉,把函数占用的内存释放出来。初始化函数也可以不加__init修饰,只是占用一部分内存而已,并且该初始化函数还可以被其它函数调用。__exit修饰词标记该代码用于模块卸载,其它的任何时候调用该函数将出错。

模块的Makefile文件如下:

  1. obj-m:=hello_module.o  
  2. CURRENT_PATH:=$(shell pwd)  
  3. ARM_LINUX_KERNEL:=/opt/linux-2.6.29.1  
  4. all:  
  5. $(MAKE) -C $(ARM_LINUX_KERNEL) SUBDIRS=$(CURRENT_PATH) modules  
  6. clean:  
  7. rm -RF *.cmd *.o *.ko *.mod.c *.symvers *.order 

以上就是Linux驱动程序“Hello world!”的介绍。

  1. 轻松掌握Linux关机命令
  2. 讲解Linux操作系统进入与退出系统方法
  3. 阐述Linux操作系统不足和发展趋势
  4. 关于Linux应用范围的介绍
  5. 让你深入了解Linux常用软件

相关内容

    暂无相关文章