目的:按键驱动,通过查询的方式获取按键值。
写出框架:
a.file_operation结构体;
b.入口函数中注册file_operation结构体,出口函数中卸载;
c.给sysfs提供更多的信息,用来给udev自动创建设备节点(创建一个class,在这个class下面创建class device);
硬件操作;
a.看原理图,引脚;
b.看2440的手册;
c.编程:单片机:使用物理地址;驱动:使用虚拟地址;(UA = ioremap(PA, size))
操作:在入口函数做地址映射,在open函数中配置引脚,在read函数中读取引脚状态。
内核态向用户态传数据,使用copy_to_user函数。
test函数中使用read函数进行读取,该函数最终调用内核中注册的second_drv_read函数。
使用./seconddrvtest & 让它在后台运行,然后用top指令查看,可以发现seconddrvtest 对CPU的占用率达到了99%,这是因为我们一直在while(1)中循环,所以CPU一直就在执行这一个进程。
这样做明显是不行的,但是按键的按下经常是不可以预测。使用轮询的方式来查询按键是否按下是很糟糕的做法,正常的做法是在中断中进行判断和操作。
关键字:字符设备 驱动程序 查询方式
引用地址:
1_5.5.5_字符设备驱动程序之查询方式的按键驱动程序_P
推荐阅读最新更新时间:2024-10-30 11:09
交流耦合视频驱动程序的直流恢复电路
简介 后视摄像头提供汽车后面区域的通畅视野。这些摄像头通常用于汽车应用,使驾驶员能够安全倒车。安装后视摄像头时,视频源信号和视频驱动电路是典型的交流耦合信号,以对器件提供隔直处理。视频信号的直流电平代表黑色的显示等级,该电平必须恒定才能适应视频处理电路。 本应用笔记说明恢复复合视频信号的正确直流电平的方法。 图1.使用ADA4433-1的直流恢复电路原理图 复合视频信号说明 复合视频信号也称为颜色、视频、消隐和同步(CVBS),是电子中最复杂的波形之一。亮度信息、颜色信息和同步信号组合形成复合视频信号。图2显示全白美国国家电视系统委员会(NTSC)复合视频信号的典型波形。 图2.全白NTSC复合视频波形 在图2中,视频
[嵌入式]
基于嵌入式的故障诊断专家系统驱动程序设计
电子设备的故障诊断系统大多采用由传感器、工业PC、工业以太网、远程专家组成的诊断模式。现有诊断现场仪器众多、连接复杂,使得系统可靠性和稳定性难以得到保证。另一方面,要求诊断人员具备专业知识,其中包括各类传感器的固定、连接与信号处理,难以实现“现场无人,远程诊断”目标。因此有必要从现有的硬件和软件组成模式的角度出发,探索一种新的诊断系统组成模式。本文设计了基于嵌入式的故障诊断专家系统,使得对电子设备的检测及维修变得更为方便有效。
本文根据实际需要选取Windows CE.Net作为本系统的操作系统平台。在Windows CE嵌入式系统的平台开发中,设备驱动程序的开发是其很重要的一部分,它们用于驱动嵌入式系统硬件平台上的各
[嵌入式]
基于单片机的AT2402的读写驱动程序
//此部分为AT2402的驱动程序使用I2C总线连接 #include Function.h //AT2402的功能函数 // 向有子地址器件发送多字节数据函数 //函数原型: bit ISendStr(UCHAR sla,UCHAR suba,ucahr /s,UCHAR no); //功能: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件 // 地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。 // 如果返回1表示操作成功,否则操作有误。 //注意: 使用前必须已结束总线。
[单片机]
Linux操作系统中触摸屏控制器驱动程序设计的编程方法
在便携式的电子类产品中,触摸屏由于其便、灵活、占用空间少等优点,已经逐渐取代键盘成为嵌入式计算机系统常选用的人机交互输入设备。触摸屏输入系统由触摸屏、触摸屏控制器、微控制器及其相应的驱动程序构成。本文从触摸屏控制器的驱动程序设计着手,介绍触摸屏控制器ADS7843的内部结构及工作原理和在嵌入式Linux操作系统中基于PXA255微处理器的ADS7843驱动程序设计 1、触摸屏控制器ADS7843的介绍 1.1 ADS7843的内部结构 ADS7843 内驻一个多路低导通电阻模拟开关组成的供电-测量电路网络、12bit逐次逼近A/D转换器和异步串行数据输入输出,ADS7843根据微控制器发来的不同测量命令导通相应
[单片机]
开发可统计单词个数的Android驱动程序(2)
五、指定与驱动相关的信息 虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息。一般需要为Linux驱动程序指定如下信息。 1. 模块作者:使用MODULE_AUTHOR宏指定。 2. 模块描述:使用MODULE_DESCRIPTION宏指定。 3. 模块别名:使用MODULE_ALIAS宏指定。 4. 开源协议:使用MODULE_LICENSE宏指定。 除了这些信息外,Linux驱动模块自己还会包含一些信息。读者可以执行下面的命令查看word_count.ko的信息。 # modinfo word_count.ko 执行上面的命令后,会输出如图6-6所示的信息。其中depends表示当前驱动
[单片机]
基于PCI总线的D/A数据输出板驱动程序的开发
PCI(Perip heral Component Interconnect )是一种先进的高性能32/64位局部总线,支持线性突发传输,数据最大传输率可达132MB/s。 同时,PCI总线存取延误小,采用总线主控和同步操作,不受处理器限制,具有自动配置功能,非常适合于高速外设。所以,它正迅速取代原先的ISA总线成为微型计算机系统的主流总线。
随着工业控制pci设备的增多,需要开发大量专用WDM驱动程序。鉴于直接用ddk开发驱动程序难度大,周期长,本文介绍了用DriverStudio套件开发WDM驱动程序的方法以及基于9052总线控制器的D/A数据输出板卡的硬件结构。
[嵌入式]
51学习之定时器中断的两种方式——查询和中断
定时器中断可用两种方式处理:查询和进入中断处理。 1.查询 void Init_T0 (void) 定时器初始化 { TMOD = 0x01; TH0 = (65536-65000) /256; TL0 = (65536-65000) %6; EA = 1; ET0 = 1; TR0 = 1; } void Main() 主函数 { Init_T0 (); Speak1 =1; if(TF0==1) 查询中断标志 { Speak1=~Speak1; //TH0 = (65536-65000) /256; //TL0 = (65536-65000) %6; TF0=0; } } 2.进入中断处理 void Init_T0 (void
[单片机]
stm32_19264液晶LCD驱动程序
编译器为:MDK4.0 注意:若显示出现乱码的现象请适当修改延时函数 /****************************lcd.h********************************************/ #ifndef __LCD_H #define __LCD_H #include sys.h #define LCD_RS PFout(0)// PF.0 #define LCD_E PFout(1)// PF.1 #define LCD_CS1 PFout(2)// PF.2 #define LCD_RST PFout(3)// PF.3 #define LCD_CS2 PFout(4)// PF.
[单片机]