学习Linux驱动开发,先知道这些!
发布日期:2019-11-29 09:20 来源:和记h88 发布人:和记娱乐 点击:
字符设备:一种以字节为最小访问单位的设备,通常支持open,close,read,write系统调用。
块设备:大部分Unix系统中,以块(通常是512字节)为最小传输单位的设备,块设备不能按字节处理数据。
网络设备:可以是一个硬件设备,如网卡;也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网络接口负责发送和接受数据报文。
驱动程序控制设备,主要是通过访问设备内的寄存器来达到控制目的,因此我们讨论如何访问硬件,就成了如何访问这些寄存器了。
在Linux系统中,无论是内核程序还是应用程序,都只能使用虚拟地址,而芯片手册中给出的硬件寄存器地址或者RAM地址则是物理地址,无法直接使用,因此,我们读写寄存器的第1步就是将将它的物理地址映射为虚拟地址。
所谓动态映射,是指在驱动程序中采用ioremap函数将物理地址映射为虚拟地址。 原型:void * ioremap(physaddr, size) 参数: Physaddr:待映射的物理地址 Size: 映射的区域长度 返回值:映射后的虚拟地址
所谓静态映射,是指Linux系统根据用户事先指定的映射关系,在内核启动时,自动地将物理地址映射为虚拟地址。
1. 如何事先指定映射关系? 填充结构,告诉内核map_desc数组中 2. 内核启动时,在什么地方完成自动映射? lotable_init();
和记娱乐,和记h88,h88平台官网