历史上的今天
今天是:2025年08月21日(星期四)
2021年08月21日 | 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一直就在执行这一个进程。
这样做明显是不行的,但是按键的按下经常是不可以预测。使用轮询的方式来查询按键是否按下是很糟糕的做法,正常的做法是在中断中进行判断和操作。
史海拾趣
|
功能说明: 1、 快速设置BRD各层的颜色,当然颜色是预设好的。为了适应各位的喜好,放送源码可以修改各层颜色。 2、目前最多可设置18层,要再加多层也很简单 3、 ...… 查看全部问答> |
|
白光LED属于电压敏感型的器件,在实际工作中是以20mA的电流为上限,但往往会由于在使用中的各种原因而造成电流增大,如果不采取保护措施,这种增大的电流超过一定的时间和幅度后LED就会损坏。 造成LED损坏的原因主要有: ①供电电压的突然升高。 ...… 查看全部问答> |
|
最近的工作需要驱动DS18B20读取温度,在看了DS18B20的文档后第一感觉就是麻烦,由于只用了一根线的原因对于时序的要求极为严格,所以做了3天了都还没采出温度来 很让人恼火!希望各位指点哈! 考虑到我使用的是VRTX平台调试的,而且不怎么熟悉C中 ...… 查看全部问答> |
|
上午11点,接到韵达快递的电话,说有快递到了。就去门口拿。 是从苏州来的快递。 取回来打开一看,是DIY活动的器件。 先给大家分享一下。 把主要部件,一字排开 [ 本帖最后由 exiao ...… 查看全部问答> |
|
有没有用过at90can128系列处理器的。。。。 没用过这款芯片,所以很多比较简单的都搞不好 比如判断一个引脚的电平高低 啊啊啊啊 困惑啊 求指点~~~~~… 查看全部问答> |
|
板子很新,没怎么用, 具体淘宝YC2440,是带10.2寸液晶套餐的。液晶带驱动电路,800*480分辨率,运行板上带的WINCE,看起来感觉很爽。 配件除了缺个5V电源适配器,其他都在,因为买时花了不少钱,现在单10.2寸液晶屏全新的网上买也得800+,所以暂 ...… 查看全部问答> |





