|
最近实验室买了一个44B0的开发板,可是恶心的供货商竟然不提供键盘驱动,于是准备自己写,由于它自带的demo程序中有关于键盘测试的裸机程序,研究了一些,基本搞清了键盘的接口参数,接下来就是在具体的uclinux系统下写驱动了。
可是在研究了网上的很多资料后,我不禁头大了,总的来说遇到如下几个问题:
1、很多资料都是简单的扫描程序,根本不是驱动程序的结构,没法借鉴;
2、很多都是针对PS/2键盘的,而我的键盘是个4×4小键盘;
3、实现方法多种多样,但都没给出具体的函数实现;
在经过了N久的痛苦思索之后,我初步制定了自己的键盘驱动的算法流程:
1、初始化键盘,初始化一个等待队列;
2、open函数,实现对键盘的扫描,如果有键被按下,则将数据放入环形缓冲区,并唤醒read进程。
3、read函数,开始判断缓冲区是否为空,若是,则将自己阻塞,进入睡眠态;若不是,则直接读缓冲区中的数据;
上述是我的一个基本的想法,可是具体的我不知道怎么实践啊,我曾尝试编了一个用简单字符设备来模拟这个流程的模拟程序,可是根本没法工作。
哪位能帮忙指点一下啊,最近什么阻塞,等待,中断,搞的我头都大了,郁闷啊! |
|