随笔分类 - linux / 设备驱动
摘要:每个gpio内部有三种状态:上拉、下拉、不拉。 什么时候,需要选择上拉、下拉或不拉呢 1. 如果是output,那个一般选择no pull,这样,引脚才能根据你的output数据,进行正确输出。2. 如果是input,那么需要看具体应用的默认输入值是0还是1. 2.1 如果默认是输入0,则最好配置为
阅读全文
摘要:前面的博客已经分析了USB摄像头驱动程序的框架,我们知道了USB摄像头驱动程序的重点在于1)描述符的分析;2)属性的控制(通过VC来设置);3)格式的选择(通过VS来设置);4)数据的获得(通过VS的URB来获得)。后面的博客就会从这4个方面进行深入的分析,本篇博客首先来看一下UVC驱动程序的描述符
阅读全文
摘要:UVC是属于USB行业规范中的USB设备类规范,用于USB接口的视频设备的一个统一的数据交换规范。其中UVC官方协议文档 UVC 1.5 Class specification是对整个UVC协议的框架做了规范,USB_Video_Example则规定了描述符等的数据结构和相关的一些其他相关规定。 1
阅读全文
摘要:以前在写驱动程序的时候,需要把驱动分为平台device和平台driver两部分。在平台device中会放入硬件所使用的资源,使用C代码来指定platform_device,当需要修改硬件资源时,比如说想去修改led的引脚时,需要重新修改C文件,重新编译内核。再后来我们使用了设备树,可以在设备树中指定
阅读全文
摘要:1、回顾字符设备驱动程序: 字符设备驱动编写的一般步骤: 1)主设备号 2)构造file_operations结构体体 .open = xxxx .read = xxxxx 3)register_chrdev() 4)入口 5)出口 2、内核中是如何写字符设备驱动程序的呢? 内核中为lcd提供了一个
阅读全文
摘要:在前面的博客中,使用的像素格式都是16bpp,24bpp(24bpp实际实际上就是32bpp)?如果想使用8bpp时,就需要使用调色板。 在以前的博客中,曾经说过,在framebuffer中如果每个像素用8bpp表示,这8bpp怎么转换成lcd需要的16bpp的数据,需要引入一个调色板。 2的8次方
阅读全文
摘要:在上篇博客中,实现了画点操作,然后在画点的基础上实现了画线、画圆的操作。实际上显示文字也是在画点的基础上实现的。 文字是由点组成的,那么这些点阵是在哪里获得的呢? 随便打开一个内核文件,搜索font,会出来很多文件。在此,选择font_8*16.c。 字符A就显示出来了,这就是文字的显示原理。 首先
阅读全文
摘要:上篇博客中进行了lcd的简单测试,这篇博客将进行更加复杂的测试——画点、画线、画圆。画线和画圆是在画点的基础上实现的,因此本篇博客重点实现画点操作。 先抛出这样的一个问题,已知: (x,y)的坐标; bpp; xres; yres; 那么,如何在framebuffer中获得像素的地址呢? (x,y)
阅读全文
浙公网安备 33010602011771号