【嵌入式】驱动程序

2019-07-12 19:08发布

用户态驱动
1、什么是驱动,驱动程序与一般程序有什么特点?
由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 – 用户态 和 内核态,
内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序
用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取
设备驱动程序一个最基本的作用是将用户隔离起来,阻止它们随意访问关键的内核数据结构与硬件设备。同时向用户隐藏硬件设备的复杂性与多样性,提供一个统一定义良好的访问方式。
Linux允许在运行时添加与删除内核组件,嵌入式上可加载模块提升系统升级能力。
静态编译,直接编译到内核镜像中
动态编译可加载模块为 按需加载—ramdisk
驱动程度运行在内核, 驱动程序的任务是把这些标准化调用映射到实际硬件的设备特有操作上。
编写访问硬件的内核代码时,不要给用户强加任何特定策略,驱动只负责实现最基本的硬件功能,而谁使用此硬件,怎么使用,一般都不做考虑.
设备驱动程序是一种特殊的二进制模块,不能直接执行,二进制文件名包含一个ko后缀。 驱动程序的加载,卸载
insmod lsmod modprobe depmod modinfo rmmod 字符设备与块设备的区别:1、字符设备是面向流的,最小访问单位是字节;而块设备是面向块的,最小访问单位是512字节或2的更高次幂。2、字符设备只能顺序按字节访问,而块设备可随机访问。3、块设备上可容纳文件系统,访问形式上,字符设备通过设备节点访问,而块设备虽然也可通过设备节点访问,但一般是通过文件系统来访问数据的。