今天开始学习LED,和按键驱动,遇到了点问题。写下来备忘:
(1) fd = open("/dev/KEY_driver", O_RDWR);
这个O_RDWR,是指明文件的属性,如果写成0,后面的write()函数会出现不执行的现象。
(2)在测试程序中应尽量减少使用驱动模块使用的次数,在做按键驱动测试时,
while(1)
{
read(fd,key_val,sizeof(key_val));
if(!key_val[0]||!key_val[1] || !key_val[2] ||!key_val[3])
{
printf("key is pressed %d,%d,%d,%d\n",key_val[0],key_val[1],key_val[2],key_val[3]);
}
}
执行这个驱动测试占用CPU资源非常多,另外如果运行了这个驱动测试后,卸载这个模块会卸载不掉。
会出现
rmmod: remove 'KEY_driver': Resource temporarily unavailable
另外加载驱动模块的
应该执行insmod 【模块的绝对路径】模块名.ko
卸载模块时:
直接执行rmmod 模块名
模块尽量放在/lib/modules文件夹下,如果不在此文件夹下,在卸载模块时出现:
exit module
rmmod: module 模块名 not found
这样虽然可以卸载模块,但是看着不爽,还是放在/lib/modules下吧!