和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信科技

您的当前位置: 和记娱乐主页 > 通信科技 >

学习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平台官网