随笔分类 - Linux驱动
摘要:Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。 换一种说法也就是,she
阅读全文
摘要:答案: 版本3.6.9: device_create -> device_register -> device_add -> device_add_attrs -> device_add_attributes(class->dev_attrs) 原文地址:http://bbs.chinaunix.n
阅读全文
摘要:Binder系统的C程序使用示例IPC : Inter-Process Communication, 进程间通信RPC : Remote Procedure Call, 远程过程调用 这里我们直接只用android系统中已经实现好的Bindrt系统。 具体源代码在 frameworks\native
阅读全文
摘要:ds18b20的时序图如下: 复位时序: 读写时序: 以下是程序代码:
阅读全文
摘要:MQ-2烟雾气敏传感器模块在X210v3开发板上的驱动。 现在需要一个MQ-2烟雾气敏传感器模块的驱动。其检测烟雾超过一定的标准后,会返回一个不同的电平,和按键驱动差不多。 但是在编写驱动的时候,需要用GPH2_3号引脚。但是在内核中先ioremap地址然后配置,发现无法控制gpio,也无法进入中断
阅读全文
摘要:我的嵌入式设备已经接入网络。能够ping局域网ip。可是为了实现能够ping通外网。比如 ping baidu.com 还是不行的。 当运行ping baidu.com这个命令时,提示 ping bad address baidu.com。 这是因为板子的dns服务还没有配置。 这里 新建/etc/
阅读全文
摘要:之前学习嵌入式没有做笔记,今天要出门一趟,带不了台式机,就新建了一个虚拟机,在安装交叉编译器的时候出了点儿小问题。 首先,我解压了交叉编译器,然后添加了环境变量。 方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)sudo gedit /etc/bash.bashrc在最后加
阅读全文
摘要:之前讲的字符设备驱动程序,只要有一个主设备号,那么次设备号无论是什么都会和同一个 struct file_operations 结构体对应。 而本节课讲的是如何在设备号相同的情况下,让不同的次设备号对应不同的 struct file_operations 结构体。 在本次的驱动程序中,打开/dev/
阅读全文
摘要:基于DM9000C的原厂代码修改dm9000c的驱动程序。 首先确认内存的基地址 iobase. 确定中断号码。 打开模块的初始化函数定义。 配置内存控制器的相应时序(结合DM9000C.C的手册). 程序代码: sd
阅读全文
摘要:一、协议栈层次对比 设备无关层到驱动层的体系结构 1)、网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。这一层的存在使得上层协议独立于具体的设备。2)、网络设备接口层向协
阅读全文
摘要:Nor Flash和Nand Flash的不同: 使用uboot来体验nor Flash操作。(Nor的A0接到Soc的A1上。所以地址应该左移1位。) 1. 读数据(NOR Flash可以像内存一样直接来读) md.b <address> 2. 读ID NOR手册上 往地址555H写入AA。往2A
阅读全文
摘要:NAND FLASH是一个存储芯片。 在芯片上的DATA0~DATA7上既能传输数据也能传输地址。 当ALE为高电平时传输的是地址。 当CLE为高电平时传输的是命令。 当ALE和CLE都为低电平时传输的是数据。 将数据发给nand Flash后,在发送第二次数据之前还要判断芯片是否处于空闲状态。一般
阅读全文
摘要:安装驱动后,可在/dev/目录下发现已经生成了相应的设备文件。 格式化设备:mkdosfs /dev/ramblock。 挂载设备。 读写设备 。 驱动程序代码: sd
阅读全文
摘要:字符设备驱动程序 应用程序是调用C库中的open read write等函数。而为了操作硬件,所以引入了驱动模块。 构建一个简单的驱动,有一下步骤。 1. 创建file_operations 2. 申请设备号 3. 注册字符设备驱动, 4. 驱动入口 5. 驱动出口 检查数据是否到来的方式: 1.
阅读全文
摘要:USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID。 在主机端,D+和D-都是下拉接地的。而设备端的D-接上拉时,表明此设备为高速设备:12M/s。 D+接上拉时则是全速设备:480M/S。 PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平。 而设
阅读全文
摘要:触摸屏使用流程: 1. 按下产生中断。 2.在中断处理程序中启动AD转换XY坐标。 3.AD转换结束并产生AD中断。 4. 在AD的中断处理函数中上报信息,启动定时器。 5. 定时器时间到后进入中断,处理长按滑动。跳转到第二步 6. 松开。 驱动程序代码: 使用TSLIB-1.4测试: 上述步骤操作
阅读全文
摘要:驱动代码: 注:这是240*320寸的屏幕。 需要在配置内核的时候不要把lcd驱动编译到内核中。 在安装驱动时会提示某些函数找不到。需要安装cfg*.ko等驱动模块。 也可以将触摸屏和按键做为控制终端。需要在 /etc/inittab中添加 tty1::askfirst:-/bin/sh即可! sd
阅读全文
摘要:平台设备驱动: 包含BUS(总线)、DEVICE、DRIVER。 DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表。 ①把device放入bus的device链表中 ②从bus的drv链表中取出每一个drv,用bus的match函数判断drv
阅读全文
摘要:以前写的一些输入设备的驱动都是采用字符设备处理的。问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的、不同类别的输入设备进行统一的驱动,所以才出现了输入子系统。 输入子系统引入的好处: (1)统一了物理形态各异的相似的输入设备的处理功能。例
阅读全文
摘要:在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开。而程序有时候会显示是两次按下,一次松开。这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定的波动,会让程序进行两次中断,如何解决这个问题呢? 我们可以在发生一次中断之后等待一段时间再去判断按
阅读全文