1、应用程序的执行是依赖于操作系统的
2、应用程序需要调用linux OS的库函数来实现
3、驱动程序是连接OS和硬件之间的桥梁
4、应用程序不能直接操作硬件
拿Linux举例,linux既可以跑在pc上,也可以跑在arm开发板上,跑在开发板上,那么驱动就要适配开发板,不同的硬件架构都可以跑linux,linux源码也是一样的,唯一不一样的是对应的驱动程序;
移植的概念:OS移植到不同的硬件上面;
二、linux驱动的分类:
1、字符设备驱动(例如开发板的led、蜂鸣器等GPIO的控制占大部分)
2、块设备驱动(和存储设备相关的都是块设备,比如tf卡、emmc等)
3、网络设备驱动(WiFi、以太网等)
理解掌握字符设备驱动概念最重要,工作中遇到的大部分都是字符设备;
三、驱动分为四个部分:
头文件
驱动模块的入口和出口
声明信息
功能实现
四、字符驱动程序框架
模块是linux内核进行组件管理的一种方式,驱动时基于模块进行注册和注销的;