首页 > 技术文章 > Linux 驱动程序入门 一

dl04301201 2018-12-09 19:58 原文

Linux 驱动程序运行原理(简化版)

用户态                        APP  
   
内核态                      驱动程序  
   
硬件层        设备/外围芯片  
   

 

 

 

 

 

 

 

 

 

看到上面的运行原理图,也许会产生一点疑问,APP是什么?驱动程序是什么?驱动/外围芯片时什么?它们之间存在一种什么样的关系?

APP是什么呢?在生活中不乏各种各样的手机APP,究其本质就是人机交流的程序。

驱动程序是什么呢?见字也许可以猜想到是可以驱动XX的一种程序。事实上,驱动程序就是驱动硬件,与硬件(设备/外围芯片)交流的程序。

总结一下:APP与驱动程序交流,而驱动驱动程序与设备/外围芯片交流,那么APP是否可以间接与设备/外围芯片交流呢? 

答案是可以的! 具体细节,下一篇再详细写!

驱动设备主要分为字符设备(character device)、块设备(block device)和 网络设备(net device)

其中,最主要的是字符设备,写驱动的入口在于字符设备驱动。以下是驱动程序最基础的框架。

最基础的LInux驱动框架:

 1 #include <linux/init.h>
 2 
 3 #include <linux/module.h>
 4 
 5 
 6 
 7 static int  __init driver_module_init(void)    //内核入口程序初始化
 8 
 9 {
10 
11   return 0;
12 
13 }
14 
15 static void __exit driver_module_exit(void)   //内核卸载程序初始化
16 
17 {
18 
19 }
20 
21 
22 
23 module_init(driver_module_init);      //内核初始化接口
24 
25 module_exit(driver_module_exit);     //内核卸载接口
26 
27 
28 
29 MODULE_LICENSE("GPL");
30 
31 MODULE_AUTHOR("stromeli<qq:1275763609>")//有兴趣于驱动编程的,可以加此QQ,互相探讨。
32 
33 MODULE_DESCRIPTION("module driver");

 

推荐阅读