linux驱动加载后能找到设备,但是/dev下不能找到设备文件

问题描述

linux驱动加载后能找到设备,但是/dev下不能找到设备文件
linux驱动加载后能找到设备,但是/dev下不能找到设备文件,我用的是动态分配设备号,insmod也能通过,但是/dev下就是找不到设备文件,加载后也不能通过测试程序我基本上直接用的板子例程,静态动态我都试了,就是不行,日志文件里面也什么都没有,板子是2410的,主机是红帽的,希望大神能够指点迷津
/*
****************************************Copyright (c)**************************************************
** Guangzhou Zhiyuan Electronic Co.LTD.
** graduate school
** http://www.zyinside.com
**
**------------------------------------- File Info ------------------------------------------------------
** File name: magic-leds.c
** Last modified Date: 2005-12-28
** Last Version: 1.0
** Descriptions: Driver for LEDs and BEEP on MagicARM2410.
** Based on Linux 2.4.18.
**------------------------------------------------------------------------------------------------------
** Created by: Chenxibing
** Created date: 2005-12-27
** Version: 1.0
** Descriptions: Preliminary version.
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**


*/

#ifndef KERNEL
#define KERNEL
#endif

#ifndef MODULE
#define MODULE
#endif

#include
#include
#include
#include
#include
#include
//#include
//#include
//#include
//#include
//#include
#include

#define DEVICE_NAME ""magic-leds""
#define LED_MAJOR 231 //can be 231~239 or 240~254

MODULE_LICENSE(""GPL"");
MODULE_DESCRIPTION(""Guangzhou Zhiyuan Electronic Co.LTD.ngraduate schoolnhttp://www.zyinside.com"");
MODULE_SUPPORTED_DEVICE(""Linux 2.4.18 & MagicARM2410"");
MODULE_AUTHOR(""Chenxibing"");

/*


** LEDs' informations.


*/
static unsigned long leds_table[] =
{
GPIO_E11
GPIO_E12
GPIO_H4
GPIO_H6
GPIO_H10
};

/*


** Function name: magic_leds_ioctl()
** Descriptions : IO control function
** Input:
** inode : information of device
** filp : pointer of file
** cmd : command
** arg : additive parameter
** Output:
** 0 : OK
** other : not OK
** Created by : Chenxibing
** Created Date : 2005-12-27
**-----------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date:
**-----------------------------------------------------------------------------------------------------


*/
static int magic_leds_ioctl(struct inode *inode struct file *filp unsigned int cmd unsigned long arg)
{
if (arg > 4) return -EINVAL;

switch(cmd) {    case 0:    case 1:        write_gpio_bit(leds_table[arg] cmd);    default:        return -EINVAL;}

}

/*


** Function name: magic_leds_open()
** Descriptions : open leds
** Input:
** inode : information of device
** filp : pointer of file
** Output:
** 0 : OK
** other : not OK
** Created by : Chenxibing
** Created Date : 2005-12-27
**-----------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date:
**-----------------------------------------------------------------------------------------------------


*/
static int magic_leds_open(struct inode *inode struct file *filp)
{
int i;

for (i = 0; i < 5; i++){    set_gpio_ctrl(leds_table[i] | GPIO_PULLUP_EN | GPIO_MODE_OUT);    write_gpio_bit(leds_table[i] 1);}MOD_INC_USE_COUNT;printk(KERN_INFO DEVICE_NAME "": opened.n"");return 0;

}

/*


** Function name: magic_leds_release()
** Descriptions : release leds
** Input:
** inode : information of device
** filp : pointer of file
** Output:
** 0 : OK
** other : not OK
** Created by : Chenxibing
** Created Date : 2005-12-27
**-----------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date:
**-----------------------------------------------------------------------------------------------------


*/
static int magic_leds_release(struct inode *inode struct file *filp)
{
MOD_DEC_USE_COUNT;
printk(KERN_INFO DEVICE_NAME "": released.n"");
return 0;
}

/*


** operations of the driver


*/
static struct file_operations magic_leds_fops =
{
owner: THIS_MODULE
ioctl: magic_leds_ioctl
open: magic_leds_open
release: magic_leds_release
};

/*


** Function name: magic_leds_init()
** Descriptions : register driver
** Input:
** : NONE
** Output:
** 0 : OK
** other : not OK
** Created by : Chenxibing
** Created Date : 2005-12-27
**-----------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date:
**-----------------------------------------------------------------------------------------------------


*/
static devfs_handle_t devfs_handle;
static int __init magic_leds_init(void)
{
int result;
printk(""""""leds devn"");

result = register_chrdev(LED_MAJOR DEVICE_NAME &magic_leds_fops);
if (result < 0)
{
printk(KERN_ERR DEVICE_NAME "": Failed to register major.n"");
return result;
}
// devfs_handle = devfs_register(NULL DEVICE_NAME DEVFS_FL_AUTO_DEVNUM
// 0 0 S_IFCHR | S_IRUSR | S_IWUSR &magic_leds_fops NULL);

// printk(KERN_INFO DEVICE_NAME "": Initialize OK.n"");
// return 0;
}

/*


** Function name: magic_leds_exit()
** Descriptions : unregister driver
** Input:
** : NONE
** Output:
** 0 : OK
** other : not OK
** Created by : Chenxibing
** Created Date : 2005-12-27
**-----------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date:
**-----------------------------------------------------------------------------------------------------


*/

static void __exit magic_leds_exit(void)
{
// devfs_unregister(devfs_handle);
unregister_chrdev(LED_MAJOR DEVICE_NAME);
}

module_init(magic_leds_init);
module_exit(magic_leds_exit);
/*


** End of File


*/

解决方案

注册完设备文件可以在/proc/devices下看到设备名,还要建立设备节点...在/dev下看到的就是

时间: 2024-12-31 02:30:06

linux驱动加载后能找到设备,但是/dev下不能找到设备文件的相关文章

linux驱动开发-linux驱动模块加载不成功调试过程

问题描述 linux驱动模块加载不成功调试过程 版本:linux2.6.30 问题出现的过程: 1,我在Ubuntu环境下编译驱动模块 2,编译成功后,在板子上insmod出现了 embest_led: version magic '2.6.30 mod_unload modversions ARMv5 ' should be '2.6.30 preempt mod_unload ARMv5 ' insmod: error inserting 'embest_led.ko': -1 Invali

WinXP系统驱动加载失败如何解决

  故障可能性一.造成驱动加载失败的原因其中包括驱动程序本身就不完全,其次就是在下载更新驱动的时候没有下载完全,一些被杀毒软件或者防火墙给拦截掉.还有就是可能是你的驱动版本不对,或者驱动文件损坏.没安装好,直接重新安装一次驱动程序试试.可能是要先用VPN拨号上到专门的网络才行的你具体看下软件安装说明,这里推荐大家使用驱动人生去自动更新驱动程序. 这种情况的解决方法很简单,尝试将一些杀毒软件及系统自带的防火墙暂时关闭一会儿.关于这些第三方软件比如360安全卫士及QQ电脑管家之类的关闭相信大家都是比

WinXP系统驱动加载失败怎么办

  WinXP系统驱动加载失败怎么办          这种情况的解决方法很简单,尝试将一些杀毒软件及系统自带的防火墙暂时关闭一会儿.关于这些第三方软件比如360安全卫士及QQ电脑管家之类的关闭相信大家都是比较了解. 故障可能性二.电脑驱动程序被破坏所导致的. 先找到你的驱动人间或者是驱动文件夹.这里在C:WINDOWSsystem32drivers上找到DokeeDriver.sys 驱动文件及DokeeDriver.sys文件夹,将文件删除掉.如图所示: 温馨提示:如果驱动文件删除不掉的话,

驱动加载失败有什么原因

  故障可能性一.造成驱动加载失败的原因其中包括驱动程序本身就不完全,其次就是在下载更新驱动的时候没有下载完全,一些被杀毒软件或者防火墙给拦截掉.还有就是可能是你的驱动版本不对,或者驱动文件损坏.没安装好,直接重新安装一次驱动程序试试.可能是要先用VPN拨号上到专门的网络才行的你具体看下软件安装说明,这里推荐大家使用驱动人生去自动更新驱动程序. 这种情况的解决方法很简单,尝试将一些杀毒软件及系统自带的防火墙暂时关闭一会儿.关于这些第三方软件比如360安全卫士及qq电脑管家之类的关闭相信大家都是比

驱动加载失败故障原因及解决方法

故障可能性一.造成驱动加载失败的原因其中包括驱动程序本身就不完全,其次就是在下载更新驱动的时候没有下载完全,一些被杀毒软件或者防火墙给拦截掉.还有就是可能是你的驱动版本不对,或者驱动文件损坏.没安装好,直接重新安装一次驱动程序试试.可能是要先用VPN拨号上到专门的网络才行的你具体看下软件安装说明,这里推荐大家使用驱动人生去自动更新驱动程序. 这种情况的解决方法很简单,尝试将一些杀毒软件及系统自带的防火墙暂时关闭一会儿.关于这些第三方软件比如360安全卫士及qq电脑管家之类的关闭相信大家都是比较了

驱动加载失败怎么办

  原因一.电脑驱动程序遭到破坏. 首先找到你的驱动文件或者是驱动文件夹.我们在C:WINDOWSsystem32drivers上找到 DokeeDriver.sys 驱动文件及 DokeeDriver.sys 文件夹,删除掉这个文件.如下图: 注意:假如驱动文件删除不掉的话,我们可以按照下面的方法来进行删除,先在桌面上新建一个记事本文档,然后在文档中输入以下命令: DEL /F /A /Q ?%1 RD /S /Q ?%1 接着将文件另存为".bat"的后缀名,如下图所示: 这时候在

JDBC数据库连接过程及驱动加载与设计模式详解_java

首先要导入JDBC的jar包: 接下来,代码: Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段. JDBC连接数据库 • 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String

Intel 6系芯片组Windows XP AHCI驱动加载方法

  1. 通过intel官网下载对应AHCI驱动包: 2. 制作驱动软盘 1)如用户使用纯净版非OEM光盘,下载驱动后直接解压至软驱根目录即可. 2)如用户使用OEM版操作系统,需要在更目录下放置AHCI后,另外创建$OEM$文件夹,在该文件夹下创建Textmode文件夹,并在此文件夹中放置一份对应驱动. 3. 加载驱动 在安装系统过程中(分区界面之前)连续敲击F6键,选择: Intel(R) Desktop/Workstation/Server Express Chipset SATA AHC

ce6的sd驱动加载失败-CE6 的驱动加载不成功?

问题描述 CE6 的驱动加载不成功? 这两天给CE6的系统加入SD卡驱动,结果发现启动后,SD卡驱动不运行.检查了编译的库文件(sdhc.dll)及目标板中的文件(sdhc.dll),都正常的,不知道是什么原因.不知有没有那位遇到过相同的情况?