驱动
qq_1213701132
这个作者很懒,什么都没留下…
展开
-
vivi驱动
摄像头驱动程序必需的11个ioctl// 表示它是一个摄像头设备 .vidioc_querycap = vidioc_querycap,// 用于列举、获得、测试、设置摄像头的数据的格式 .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap, .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap, .vidioc_try_fmt_vid_cap = vidioc_tr原创 2020-09-18 10:03:04 · 365 阅读 · 0 评论 -
cmos摄像头-ov7740驱动
ov7740摄像头模块cmos摄像头驱动基于I2C驱动框架实现,在probe函数里基于V4L2框架写摄像头驱动程序。dev函数设备地址:写 – 0x42(01000010)读 – 0x43(01000011)8bit的地址 = 7bit设备地址 + 1bit的读/写控制位设备地址 = 0100001 = 0x21static struct i2c_board_info cmos_ov7740_info = { I2C_BOARD_INFO("cmos_ov7740", 0x21),原创 2020-08-28 14:33:37 · 1298 阅读 · 0 评论 -
IIC驱动3.4.2
IIC硬件原理原创 2020-08-27 11:02:51 · 213 阅读 · 0 评论 -
移植DM9000C驱动
内核自带的DM9000驱动程序不能用于DM9000C上,把厂家提供的驱动程序移植到开发板上。DM9000 是一个内存接口的芯片,两个同样接有 DM9000 的开发板,最小差异:基地址、位宽和中断引脚。1,基地址地址线和数据线上挂有网卡芯片、内存和 NORFLASH。如何访问一个网卡设备而不被其他诸如“内存”或“NORFLASH”影响,则是将每个设备选中再访问。让“nGCS4”片选信号为低电平。当只要 CPU 发出的物理地址是“0x2000_0000 - 0x2800_0000”之间时,引脚“(nG.原创 2020-07-25 15:05:35 · 191 阅读 · 0 评论 -
网卡驱动程序
只要把上层的数据发给网卡,从网卡来的数据构造成包给上层即可。网卡只需要“socket”编程,不需要打开某设备。“sk_buff”结构是纽带,运用“hard_start_xmit()”和“netif_rx()”:应用层构造好一个包后,放到“skb_buff”结构交给网卡驱动,调用“hard_start_xmit()”来发送。网卡在中断程序中收到数据后,从芯片里把数据读出来构造一个“skb_buff”结构数据,调用“netif_rx()”上报数据给应用层。怎么写网卡驱动程序?1 分配一个net_de.原创 2020-07-25 10:58:26 · 623 阅读 · 0 评论 -
Nandflash驱动
前面介绍过块设备驱动程序分析内核自带的nand flash驱动程序s3c2410.c (drivers\mtd\nand)。从入口函数s3c2410_nand_init开始看,根据总线设备驱动模型,注册一个平台drv,platform_driver_register(&s3c2440_nand_driver);内核里如果有同名的平台dev,就会调用.probe函数s3c24xx_nand_probe,如下。s3c2410_nand_inithw //初始化硬件s3c2410_nand原创 2020-07-24 21:11:15 · 311 阅读 · 0 评论 -
Norflash驱动
NOR 中有个协议层,发出“解锁命令”等,也是内核做好的。NOR 可以像内存一样读。两个开发板之间,内存的差别就是内存基地址和位宽。MTD层知道怎么优化;nor flash协议层分为jedec和cif两种规范,知道往某地址写某数据来识别、擦除、写;硬件相关层知道基地址和位宽。Nand和Nor都会提供“mtd_info 结构”给“MTD层”,里面有擦除,读写函数struct map_info { char *name; //名字 unsigned long size; //大小 reso.原创 2020-07-24 17:12:44 · 372 阅读 · 0 评论 -
块设备驱动
引入若块设备驱动程序也按以下字符设备驱动程序的简单思想来写:APP : open, read, write. ----> 对应提供驱动程序的读写等函数················································································块设备驱动:drv_open, drv_read, drv_write························································原创 2020-07-24 14:11:18 · 162 阅读 · 0 评论 -
电阻触摸屏驱动
触摸屏硬件原理触摸屏就是 2 层很薄的膜,引出 4 条线。上面一层膜:XP 边(P 表示正极的意思),XM 边(M 表示负极的意思)。下面一层膜:YP 边,YM 边平时这两层膜接触不到,当有触摸时,即按压时,上下两层膜就会粘在一起。基于欧姆定律测试 x,y 坐标:A,测试 X 坐标:①,XP 接 3.3V②,XM 接地-0V。③,YP 与 YM 都不接。这样上面一层相当于个电阻了。④,测试 YP 电压。B,测试 Y 坐标:①,YP 接 3.3V②,YM 接地-0V。③,XP 与原创 2020-07-23 20:21:27 · 2173 阅读 · 0 评论 -
输入子系统
input_init > err = register_chrdev(INPUT_MAJOR, "input", &input_fops);static const struct file_operations input_fops = { .owner = THIS_MODULE, .open = input_open_file, // input_fops只有一个.open};input.c中注册了字符设备,但input_fops只有一个open。问:只有一个open没有r.原创 2020-07-23 11:45:12 · 341 阅读 · 0 评论 -
LCD驱动
fbmem.c是内核自带的LCD驱动程序,它是抽象出来的,依赖于底层提供的fb_info结构体。fbmem_init(void){ create_proc_read_entry("fb", 0, NULL, fbmem_read_proc, NULL); if (register_chrdev(FB_MAJOR,"fb",&fb_fops)) printk("unable to get major %d for fb devs\n", FB_MAJOR); fb_class原创 2020-07-23 10:51:50 · 504 阅读 · 0 评论 -
USB驱动程序
概念现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" ,提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序问2. USB设备种类非常多,为什么一接入电脑,就能识别出来?答2原创 2020-07-22 22:13:48 · 2282 阅读 · 0 评论 -
总线驱动设备模型
platform_driver_register(struct platform_driver *drv)注册平台driver,它的总线是平台总线drv->driver.bus = &platform_bus_type。这是一个虚拟总线,里面有.match函数.match = platform_match。怎么决定左右两边怎么支持呢?通过比较平台dev和drv的名字,如果名字相同就能够匹配,就会调用platform_driver里的.probe函数。static int platfor.原创 2020-07-22 19:31:30 · 144 阅读 · 0 评论