官方QQ群收藏本站

百问linux嵌入式论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 195|回复: 13

无法注册设备节点

[复制链接]

8

主题

33

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
发表于 2018-12-6 22:17:34 | 显示全部楼层 |阅读模式
描述如下:
内核-u-boot-文件系统等都是自己移植的,使用网络文件系统,可以正常启动内核,
情况一:但是insmod驱动.ko后,无法在/dev/下面发现自己注册的设备节点。
注:busybox已经开启了mdev,并且在/etc/init.d/rcS中添加上自动识别设备节点的mdev -s
情况二:修改/etc/init.d/rcS将mdev -s改为/sbin/mdev -s后内核一直输出can't open /dev/console: No such file or directory
实际中、网络文件系统中存在crwxrwxrwx 1 root root 5, 1 9月  29 13:54 dev/console(我手动修改过console的权限的,还是无效)


请问一下:这个该如何解决
谢谢
回复

使用道具 举报

23

主题

149

帖子

652

积分

超级版主

Rank: 8Rank: 8

积分
652
发表于 2018-12-7 14:51:08 | 显示全部楼层
那可能是你代码里本来就没有创建节点的操作
我是百问网www.100ask.org站长,有关站务问题请与我联系。
韦东山视频开发板购买店铺:https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

8

主题

33

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
 楼主| 发表于 2018-12-7 21:12:21 | 显示全部楼层
百问网-钟老师 发表于 2018-12-7 14:51
那可能是你代码里本来就没有创建节点的操作

代码里面确认创建设备节点的,妥妥的
回复 支持 反对

使用道具 举报

8

主题

33

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
 楼主| 发表于 2018-12-7 21:27:36 | 显示全部楼层
百问网-钟老师 发表于 2018-12-7 14:51
那可能是你代码里本来就没有创建节点的操作

我就写一个led的字符设备驱动都不行:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <linux/device.h>

//#include <asm/arch/regs-gpio.h>
//#include <asm/hardware.h>

static struct class *seconddrv_class;
static struct class_device        *seconddrv_class_dev;

volatile unsigned long *gpfcon;
volatile unsigned long *gpfdat;

volatile unsigned long *gpgcon;
volatile unsigned long *gpgdat;

static int second_drv_open(struct inode *inode, struct file *file)
{
        /* 配置GPF0,2为输入引脚 */
        *gpfcon &= ~((0x3<<(0*2)) | (0x3<<(2*2)));

        /* 配置GPG3,11为输入引脚 */
        *gpgcon &= ~((0x3<<(3*2)) | (0x3<<(11*2)));

        return 0;
}

ssize_t second_drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
{
        /* 返回4个引脚的电平 */
        unsigned char key_vals[4];
        int regval;

        if (size != sizeof(key_vals))
                return -EINVAL;

        /* 读GPF0,2 */
        regval = *gpfdat;
        key_vals[0] = (regval & (1<<0)) ? 1 : 0;
        key_vals[1] = (regval & (1<<2)) ? 1 : 0;
       

        /* 读GPG3,11 */
        regval = *gpgdat;
        key_vals[2] = (regval & (1<<3)) ? 1 : 0;
        key_vals[3] = (regval & (1<<11)) ? 1 : 0;

        copy_to_user(buf, key_vals, sizeof(key_vals));
       
        return sizeof(key_vals);
}


static struct file_operations sencod_drv_fops = {
    .owner  =   THIS_MODULE,    /* 这是一个宏,推向编译模块时自动创建的__this_module变量 */
    .open   =   second_drv_open,     
        .read        =        second_drv_read,          
};


int major;
static int second_drv_init(void)
{
        major = register_chrdev(0, "led_drv", &sencod_drv_fops);

        seconddrv_class = class_create(THIS_MODULE, "led_drv");

        seconddrv_class_dev = device_create(seconddrv_class, NULL, MKDEV(major, 0), NULL, "leds"); /* /dev/buttons */

        gpfcon = (volatile unsigned long *)ioremap(0x56000050, 16);
        gpfdat = gpfcon + 1;

        gpgcon = (volatile unsigned long *)ioremap(0x56000060, 16);
        gpgdat = gpgcon + 1;

        return 0;
}

static void second_drv_exit(void)
{
        unregister_chrdev(major, "led_drv");
        device_destroy(seconddrv_class, MKDEV(major, 0));
        class_destroy(seconddrv_class);
        iounmap(gpfcon);
        iounmap(gpgcon);
        return 0;
}


module_init(second_drv_init);

module_exit(second_drv_exit);

MODULE_LICENSE("GPL");

回复 支持 反对

使用道具 举报

0

主题

748

帖子

2261

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2261
发表于 2018-12-8 14:17:56 | 显示全部楼层
内核-u-boot-文件系统 的版本和老师的一致吗? 一致的话 可以替换掉内核或者文件系统,然后对比实验。

不一致的话 建议选用一致的实验看看
我是百问网www.100ask.org答疑助手,有关站务问题请与我联系。
韦东山视频开发板购买店铺https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

15

主题

28

帖子

127

积分

注册会员

Rank: 2

积分
127
发表于 2019-3-13 22:12:34 | 显示全部楼层
bingo.zhou 发表于 2018-12-7 21:27
我就写一个led的字符设备驱动都不行:
#include
#include

同学 你解决了吗?  我也有同样的问题。。用老师例程都不能创建
回复 支持 反对

使用道具 举报

8

主题

1152

帖子

3608

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3608
发表于 2019-3-13 22:58:04 | 显示全部楼层
tree_18 发表于 2019-3-13 22:12
同学 你解决了吗?  我也有同样的问题。。用老师例程都不能创建

你的/dev/目录截个图传上来,如果/dev/目录的东西很少
那说明你文件系统mdev有问题,自然节点无法创建
如果/dev/目录东西很多,那基本是驱动代码问题,或者是编译问题
我是百问网www.100ask.org答疑助手,有关技术问题请与我联系。
韦东山视频开发板购买店铺:https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

15

主题

28

帖子

127

积分

注册会员

Rank: 2

积分
127
发表于 6 天前 | 显示全部楼层
百问网-李老师 发表于 2019-3-13 22:58
你的/dev/目录截个图传上来,如果/dev/目录的东西很少
那说明你文件系统mdev有问题,自然节点无法创建
...

捕获.JPG
这是我的 /dev



回复 支持 反对

使用道具 举报

8

主题

1152

帖子

3608

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3608
发表于 6 天前 | 显示全部楼层

你用的是带mdev的文件系统吗?
好像东西有些少呢
我是百问网www.100ask.org答疑助手,有关技术问题请与我联系。
韦东山视频开发板购买店铺:https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

15

主题

28

帖子

127

积分

注册会员

Rank: 2

积分
127
发表于 6 天前 | 显示全部楼层
百问网-李老师 发表于 2019-3-18 22:01
你用的是带mdev的文件系统吗?
好像东西有些少呢

老师,我刚学不明白什么是带mdev的文件系统。。我开发板是用网盘里没有没有界面的2.6的内核,文件系统也是网盘的那个yaffs。
还有些奇怪的现象就是:我直接用老师的输入子系统的程序(没任何修改),编译成.ko,拿到我开发板上执行insmod 后,/dev下没有event 这个东西!
但是查询lsmod 发现自己已经安装上了驱动,不知是不是我的文件系统有什么问题?
捕获2.JPG 捕获3.JPG
回复 支持 反对

使用道具 举报

技术支持
在线咨询
咨询热线
0755-86200561
微信扫一扫
获取更多资讯!

Archiver|小黑屋|百问linux嵌入式论坛     

GMT+8, 2019-3-24 22:07 , Processed in 0.351989 second(s), 11 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表