1_5.5.5_字符设备驱动程序之查询方式的按键驱动程序_P
2021-08-21 来源:eefocus
目的:按键驱动,通过查询的方式获取按键值。
写出框架:
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一直就在执行这一个进程。
这样做明显是不行的,但是按键的按下经常是不可以预测。使用轮询的方式来查询按键是否按下是很糟糕的做法,正常的做法是在中断中进行判断和操作。
相关文章