字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、ioctl等系统调用。字符终端(/dev/console)和串口(/dev/ttyS0)就是两个字符设备,它们能很好的说明"流"这种抽象概念。字符设备可以通过文件节点来访问,比如(/dev/ttyS0)和(/dev/fb0)等。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。然而,也存在具有数据区特性的字符设备,访问它们时可前后移动访问位置。例如framebuffer就是这样的一个设备,应用层可以用mmap访问抓取整个图像。

2020年12月18日 14篇SylixOS字符设备驱动开发已关闭评论 4,551
SylixOS

SylixOS字符设备驱动开发(十三)

SylixOS设备操作之mmap 有些外设控制器可能带有DMA功能,这类外设的驱动一般都需要使用物理连续的内存,而且只需要物理内存即可,在驱动层并不需要进行映射访问,这时可以通过下面接口申请物理内存:...
阅读全文
SylixOS

SylixOS字符设备驱动开发(十一)

SylixOS设备操作之非阻塞read和write 上一节学习了阻塞方式对驱动进行读写,但是在某些情况下,我们需要非阻塞地读写驱动,如果数据没准备好,read或write调用需要立即返回以进行后续的业...
阅读全文
SylixOS

SylixOS字符设备驱动开发(十)

SylixOS设备操作之阻塞read和write 在实际的外设驱动中,如果需要读取设备数据,设备都需要一定的准备时间,比如读硬盘扇区数据,硬盘需要一段时间准备好数据后,通过中断来通知cpu数据准备好。...
阅读全文
SylixOS

SylixOS字符设备驱动开发(九)

SylixOS设备操作之read和write 有些设备可能会和应用层有大量的数据进行传输,比如网卡、硬盘等等,这时候用ioctl来和应用层传输数据就显得不怎么适合了,因为ioctl一般是用来进行对设备...
阅读全文
SylixOS

SylixOS字符设备驱动开发(七)

SylixOS驱动创建多个设备文件 在前面几节教程中我们在驱动中是直接定义一个设备实例的全局变量,但是实际项目中我们有时候需要定义自己的数据结构,用来将一些私有数据保存在其中,这时就可以按如下方式定义...
阅读全文
SylixOS

SylixOS字符设备驱动开发(五)

SylixOS驱动使用和信息查询 在上一节我们学习了如何注册驱动和创建设备文件,现在我们来学习驱动注册后如何在应用层使用驱动和如何查询驱动在系统中的相关信息。 应用层使用设备文件很简单,就是先使用op...
阅读全文
SylixOS

SylixOS字符设备驱动开发(四)

SylixOS注册驱动和创建设备文件 上一节我们完成了驱动中的open和close函数功能,并使用这两个函数初始化了demo_fops 这个数据结构,现在我们将驱动注册到系统中,在SylixOS中这是...
阅读全文
SylixOS

SylixOS字符设备驱动开发(三)

SylixOS字符设备操作之open和close 在第一节我们学习过在应用层如何操作普通的文件,就是通过open、close、read、write这些接口,普通文件是存放在具体的存储设备上的,所以从某...
阅读全文