摘要: 一、协议栈层次对比 设备无关层到驱动层的体系结构 1)、网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。这一层的存在使得上层协议独立于具体的设备。2)、网络设备接口层向协 阅读全文
posted @ 2016-11-09 16:57 叶念西风 阅读(2843) 评论(0) 推荐(0)
摘要: Nor Flash和Nand Flash的不同: 使用uboot来体验nor Flash操作。(Nor的A0接到Soc的A1上。所以地址应该左移1位。) 1. 读数据(NOR Flash可以像内存一样直接来读) md.b <address> 2. 读ID NOR手册上 往地址555H写入AA。往2A 阅读全文
posted @ 2016-11-08 13:26 叶念西风 阅读(906) 评论(0) 推荐(0)
摘要: NAND FLASH是一个存储芯片。 在芯片上的DATA0~DATA7上既能传输数据也能传输地址。 当ALE为高电平时传输的是地址。 当CLE为高电平时传输的是命令。 当ALE和CLE都为低电平时传输的是数据。 将数据发给nand Flash后,在发送第二次数据之前还要判断芯片是否处于空闲状态。一般 阅读全文
posted @ 2016-11-07 23:13 叶念西风 阅读(3490) 评论(0) 推荐(0)
摘要: 安装驱动后,可在/dev/目录下发现已经生成了相应的设备文件。 格式化设备:mkdosfs /dev/ramblock。 挂载设备。 读写设备 。 驱动程序代码: sd 阅读全文
posted @ 2016-11-05 22:51 叶念西风 阅读(830) 评论(0) 推荐(0)
摘要: 字符设备驱动程序 应用程序是调用C库中的open read write等函数。而为了操作硬件,所以引入了驱动模块。 构建一个简单的驱动,有一下步骤。 1. 创建file_operations 2. 申请设备号 3. 注册字符设备驱动, 4. 驱动入口 5. 驱动出口 检查数据是否到来的方式: 1. 阅读全文
posted @ 2016-11-05 16:42 叶念西风 阅读(1036) 评论(0) 推荐(0)
摘要: USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID。 在主机端,D+和D-都是下拉接地的。而设备端的D-接上拉时,表明此设备为高速设备:12M/s。 D+接上拉时则是全速设备:480M/S。 PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平。 而设 阅读全文
posted @ 2016-11-04 16:29 叶念西风 阅读(4249) 评论(0) 推荐(0)
摘要: 爱壁纸 http://www.lovebizhi.com/ 阅读全文
posted @ 2016-11-04 16:29 叶念西风 阅读(787) 评论(0) 推荐(0)
摘要: 触摸屏使用流程: 1. 按下产生中断。 2.在中断处理程序中启动AD转换XY坐标。 3.AD转换结束并产生AD中断。 4. 在AD的中断处理函数中上报信息,启动定时器。 5. 定时器时间到后进入中断,处理长按滑动。跳转到第二步 6. 松开。 驱动程序代码: 使用TSLIB-1.4测试: 上述步骤操作 阅读全文
posted @ 2016-11-03 22:09 叶念西风 阅读(2912) 评论(0) 推荐(0)
摘要: 驱动代码: 注:这是240*320寸的屏幕。 需要在配置内核的时候不要把lcd驱动编译到内核中。 在安装驱动时会提示某些函数找不到。需要安装cfg*.ko等驱动模块。 也可以将触摸屏和按键做为控制终端。需要在 /etc/inittab中添加 tty1::askfirst:-/bin/sh即可! sd 阅读全文
posted @ 2016-11-03 21:01 叶念西风 阅读(1544) 评论(0) 推荐(0)
摘要: 平台设备驱动: 包含BUS(总线)、DEVICE、DRIVER。 DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表。 ①把device放入bus的device链表中 ②从bus的drv链表中取出每一个drv,用bus的match函数判断drv 阅读全文
posted @ 2016-10-31 09:08 叶念西风 阅读(736) 评论(0) 推荐(0)
摘要: 以前写的一些输入设备的驱动都是采用字符设备处理的。问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的、不同类别的输入设备进行统一的驱动,所以才出现了输入子系统。 输入子系统引入的好处: (1)统一了物理形态各异的相似的输入设备的处理功能。例 阅读全文
posted @ 2016-10-27 09:38 叶念西风 阅读(650) 评论(0) 推荐(1)
摘要: 在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开。而程序有时候会显示是两次按下,一次松开。这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定的波动,会让程序进行两次中断,如何解决这个问题呢? 我们可以在发生一次中断之后等待一段时间再去判断按 阅读全文
posted @ 2016-10-27 09:19 叶念西风 阅读(1154) 评论(0) 推荐(0)
摘要: 目的:同一个时刻,只能有一个应用程序打开我们的驱动程序。 ①原子操作: v = ATOMIC_INIT( i ) 定义原子变量v并初始化为i atomic_read(v) 返回原子变量的值atomic_set(v,i) 设置原子变量的值 atomic_inc_and_test(v) 自加后和测试是否 阅读全文
posted @ 2016-10-26 15:41 叶念西风 阅读(524) 评论(0) 推荐(0)
摘要: 之前的按键方式: 查询: 极度占用CPU资源 中断: 在读的时候产生休眠,在没有信号的时候永远不会返回。 poll机制: 在中断的基础上加上超时时间。 异步通知就是通过信号来传送。 首先在应用程序中有一个信号处理函数,在应用程序接收到信号时会自动调用信号处理函数。 驱动程序为应用程序提供设置信号量的 阅读全文
posted @ 2016-10-26 13:10 叶念西风 阅读(529) 评论(0) 推荐(0)
摘要: 实现的功能是在读取按键信息的时候,如果没有产生按键,则程序休眠在read函数中,利用poll机制,可以在没有退出的情况下让程序自动退出。 下面的程序就是在读取按键信息的时候,如果5000ms内没有按键信息,则自己退出。 首先应用程序执行poll函数 kernel中的sys_poll do_sys_p 阅读全文
posted @ 2016-10-26 12:44 叶念西风 阅读(906) 评论(0) 推荐(0)
叶念西风 - 个人博客