随笔分类 - 驱动调试笔记
摘要:原本的字符设备只能有255个驱动程序,原因是一个主设备号占用了0~255的次设备号 把register_chrdev展开可得到一下几个部分:register_chrdev_region/alloc_chrdev_region,cdev_init,cdev_add 参照register_chrdev的
阅读全文
摘要:1 分析i2c设备的识别过程i2c_add_driver i2c_register_driver driver->driver.bus = &i2c_bus_type; driver_register(&driver->driver); list_for_each_entry(adapter, &a
阅读全文
摘要:1 确定相异性 1.1 选中网卡芯片nGCS4 1.2 确定相异性:基地址,中断号,设置时序(内存控制器BWSCON,BANKCONn) 1.3 修改相应的部分 2 测试DM9000C驱动程序:2.1 把dm9dev9000c.c放到内核的drivers/net目录下2.2 修改drivers/ne
阅读全文
摘要:1 网络传输的简介 (1)接收过程,如上图,网络上的数据包到达网卡后,网卡产生中断,然后设备驱动层收到中断后,开始进行网络包的接收,接收完之后调用一个netif_rx函数交给网络协议层(层次结构上图一),然后就是一层一层的网上传到用户空间了。 (2)发送过程,从用户空间过来的数据包,经过层层穿越之后
阅读全文
摘要:1 比较nor/nand flash NOR NAND接口: RAM-Like,引脚多 引脚少,复用容量: 小 1M 2M 3M 大:128M 256M G读: 简单 复杂写: 发出特定命令 慢 发出特定命令 快价格: 贵 便宜特点: 无位反转、坏块 位反转、坏块 关键重要的程序 大数据、容忍可以出
阅读全文
摘要:1 nand flash的操作 目的:读地址A的数据,把数据B写到地址A。 问1. 原理图上NAND FLASH和S3C2440之间只有数据线,怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址,当ALE为高电平时传输的是地址。 问2. 从NAND FLASH芯片手册可知,要操作N
阅读全文
摘要:1 块设备的概述 linux支持的两种重要的设备类型分别是字符设备和块设备,块设备可以随机地以固定大小的块传送数据。与字符设备相比,块设备有以下几个特殊之处: (1)块设备可以从数据的任何位置进行访问 (2)块数据总是以固定长度进行传输,即便请求的这是一个字节 (3)对块设备的访问有大量的缓存。当进
阅读全文
摘要:1 了解USB识别的过程 eg:在Windows系统下的一个现象:把手机的USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB
阅读全文
摘要:1.触摸屏的简介 触摸屏是标准的输入设备,在写驱动程序时采用的之前讲过的输入子系统那套框架。我们无需关心对设备文件的操作,只需关心对硬件寄存器的操作和上报事件即可。 触摸屏是附在LCD上的一层薄膜,并不是我们平时认识的触摸屏,它只是起到确定坐标的作用。 S3C2440提供的触摸屏接口有4种处理模式,
阅读全文
摘要:参考s3c2410fb.c总结出框架 1.代码分析 1.1 入口函数 注册一个platform_driver结构体,如果存在同名的设备dev时,将调用probe函数。 搜索s3c2410-lcd可得下面的s3c_device_lcd结构体 1.2 probe函数(只列出关键性代码) 由此可知,其主要
阅读全文
摘要:1 平台总线的简介 平台总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver。总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 我们可以把一个驱
阅读全文
摘要:之前我们做的按键驱动程序都是应用程序主动open设备/dev/buttons而现实情况不能来打开这个设备甚至不知道这个设备的存在。 解决方案:变成通用的驱动程序。接下来我们引入的输入子系统可以完成该任务。 1.输入子系统的简介 1.1 引入输入子系统的好处: (1)统一了物理形态各异的相似的输入设备
阅读全文
摘要:一.以查询方式实现 1.写出驱动框架 1.1 仿照其他程序加一些必要的头文件 1.2 构造一个结构体file_operations 1.3 根据file_operations的所选项写出所需的函数,并构建出来 1.4 入口函数、出口函数的注册和卸载 1.5 修饰入口函数和出口函数 1.6 给sysf
阅读全文
摘要:1.写出leds_open,leds_write函数2.1告诉内核这几个函数的存在?定义一个结构体file_operations2.2把这个结构体告诉内核?用register_chrdev(major,name,file_operations) //将主设备号与file_operations结构一起
阅读全文
摘要:1、以4.3.2版本的编译器为例 将arm-linux-gcc-4.3.2.tar.bz2放在/work目录下 解压缩: sudo tar jxvf /work/arm-linux-gcc-4.3.2.tar.bz2 -C / 添加环境变量: sudo vi /etc/environment 注释掉
阅读全文