发新帖我要提问
12
返回列表
打印

关于input输入子系统的设备节点的问题

[复制链接]
楼主: huzhiyang
手机看帖
扫描二维码
随时随地手机跟帖
21
huzhiyang|  楼主 | 2012-10-25 11:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
mknod /dev/input/event1 c 13 65
cat /dev/input/event1
试试,还不行就只能慢慢搞了,呵呵
jlass 发表于 2012-10-25 11:28
按照刚才的那种做法 ,我试了下mknod /dev/input/enent0 c  13 65 也不行   那我再试试你的这种方法

使用特权

评论回复
22
huzhiyang|  楼主 | 2012-10-25 12:04 | 只看该作者
mknod /dev/input/event1 c 13 65
cat /dev/input/event1
试试,还不行就只能慢慢搞了,呵呵
jlass 发表于 2012-10-25 11:28
试了,呵呵  还是一样 不行

使用特权

评论回复
23
阿南| | 2012-10-25 22:50 | 只看该作者
试试我上一楼的方法吧,找到定义

使用特权

评论回复
24
huzhiyang|  楼主 | 2012-10-26 08:25 | 只看该作者
试试我上一楼的方法吧,找到定义
阿南 发表于 2012-10-25 22:50
为什么在程序中找不到呢

使用特权

评论回复
25
阿南| | 2012-10-26 09:46 | 只看该作者
摘自《ARM Linux入门与实践》一书的P281页:
11.2.3 将驱动编译进内核
当在实际项目的量产中,不可能一台台的将一堆驱动一个个的安装,一定要将它们编译进内核。而且当为CRAMFS只读文件系统时,一掉电,刚安装的模块及驱动也就丢了,所以也必须要求编译进内核。
1.在内核配置选项中增加该驱动的选项
#cd /linuette/target/box/kernel
#vi ./drivers/char/Config.in
增加内容:
if [ “$CONFIG_ARCH_S3C2410” = “y” ]; then
tristate ‘S3C2410 LED Driver example’ CONFIG_S3C2410_LED
fi
#make menuconfig
选中“Character devices->S3C2410 LED Driver example”项。
2.在内核的Makefile中增加该驱动的编译内容
#vi ./driver/char/Makefile
增加内容:
obj-$(CONFIG_S3C2410_LED) += leds.o
将led.c复制到kernel/driver/char目录下,然后重新编译更新内核。
3.出现的问题
问题1:make zImage后出现__this_modules无定义的错误
原因:在驱动程序中有下述的定义项
#ifndef MODULE
#define MODULE
#endif
问题2:不能编译进内核,即/proc/devices文件和/dev目录下都没有出leds
原因:在驱动程序中有下述的定义项
#ifndef MODULE
#define MODULE
#endif
问题3:在/dev目录下找不到leds设备文件
解决方法:可以使用设备文件系统devfs。将原驱动程序中的初始化和退出程序修改成如下:
static devfs_handle_t devfs_handle;
static int __init leds_init(void){
    int ret;
    int i;
    ret = register_chrdev(LED_MAJOR,DEVICE_NAME,&leds_fops);
    if (ret < 0){
        printk(DEVICE_NAME "can't register major number");
        return ret;
    }
    devfs_handle = devfs_register(NULL,DEVICE_NAME,DEVFS_FL_DEFAULT,LED_MAJOR,0,S_IFCHR | S_IRUSR | S_IWUSR,&leds_fops,NULL);
    for (i=0;i<4;i++){
        set_gpio_ctrl(led_table[i] | GPIO_PULLUP_EN | GPIO_MODE_OUT);
        write_gpio_bit(led_table[i],1);
    }
    printk(DEVICE_NAME "initialized\n");
    return 0;
}
static void __exit leds_exit(void){
    devfs_unregister(devfs_handle);
    unregister_chrdev(LED_MAJOR,DEVICE_NAME);
}

使用特权

评论回复
26
a570928249| | 2014-5-10 14:55 | 只看该作者
阿南 发表于 2012-10-19 18:50
要楼主在内核启动过程中是否有发现如下的提示:
input: gpio-keys as /class/input/input0 ...

如果出现了这句话,还是找不到设备节点,怎么办?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则