网站上传后打不开,centos网站开发,海外营销推广方式,wordpress实例linux驱动简单介绍 驱动基本介绍 驱动。顾名思义就是“驱使硬件设备行动”。设备驱动与底层硬件之间打交道#xff0c;按照硬件设备的具体操作方式来读写设备寄存器#xff0c;最终完成一系列操作。 设备 驱动充当了应用程序和应用软件直接的纽带#xff0c;它使得应用软件只… linux驱动简单介绍 驱动基本介绍 驱动。顾名思义就是“驱使硬件设备行动”。设备驱动与底层硬件之间打交道按照硬件设备的具体操作方式来读写设备寄存器最终完成一系列操作。 设备 驱动充当了应用程序和应用软件直接的纽带它使得应用软件只需要调用系统软件的应用编程接口就可以让硬件完成响应的操作。 硬件、设备驱动和应用软件的关系 无操作系统 有操作系统 linux设备驱动与整个软硬件的关系 Linux下设备驱动一般分为三大类字符设备驱动块设备驱动网络设备驱动。除了网络设备驱动以外字符设备和块设备都是通过linux虚拟文件系统进行管理(VFS)。 抽象出简单的调用关系图如下 内核空间和用户空间 对于一个32位操作系统它的寻址空间虚拟地址空间为4G2^32。也会是说每个进程的虚拟地址空间为4G。操作系统的核心是内核它独立于普通的应用程序可以访问受保护的应用程序也有访问底层硬件设备的所有权限。为保护内核安全现代操作系统一般都强制用户进程不能直接操作内核具体实现由操作系统将虚拟地址空间划分为两部分内核空间和用户空间 用户空间0x00000000-0xBFFFFFFF内核空间0xC0000000-0xFFFFFFFF总结最高的1G内核空间是被所有进程共享 如下图所示应用程序一般处于用户空间而系统调用和驱动处于内核空间故当应用程序需要和驱动进行数据交互时需进行地址转换。不能直接访问。 linux设备驱动提供两个接口函数copy_from_user()与copy_to_user() copy_from_user()从用户空间拷贝到内核空间一般用于write向内核写之前先转换copy_to_user()从内核空间拷贝到用户空间一般用于read从内核读取后在转换 1 unsigned long copy_to_user(void _ _user *to, const void *from, unsigned long count);
2 unsigned long copy_from_user(void *to, const void _ _user *from, unsigned long count) 参考 Linux 内核空间与用户空间 Linux 设备驱动开发详解第二版.宋宝华 转载于:https://www.cnblogs.com/ywx123/p/10463189.html