主题 : 仿mini2440_leds.c的驱动为何没有输出 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 26755
精华: 0
发帖: 101
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2010-08-13
最后登录: 2017-09-13
楼主  发表于: 2010-12-04 10:35

 仿mini2440_leds.c的驱动为何没有输出

#include <linux/miscdevice.h>
#include <linux/delay.h>
#include <asm/irq.h>
#include <mach/regs-gpio.h>
#include <mach/hardware.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/moduleparam.h>
#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/ioctl.h>
#include <linux/cdev.h>
#include <linux/string.h>
#include <linux/list.h>
#include <linux/pci.h>
#include <linux/gpio.h>
#include <asm/uaccess.h>
#include <asm/atomic.h>
#include <asm/unistd.h>


#define DEVICE_NAME "motors"

static unsigned long motors_table [] = {
    S3C2410_GPF(0),
    S3C2410_GPF(1),
    S3C2410_GPF(2),
    S3C2410_GPF(3),
};

static unsigned int motors_cfg_table [] = {
    S3C2410_GPIO_OUTPUT,
    S3C2410_GPIO_OUTPUT,
    S3C2410_GPIO_OUTPUT,
    S3C2410_GPIO_OUTPUT,
};

static int sbc2440_motors_ioctl(
    struct inode *inode,
    struct file *file,
    unsigned int cmd,
    unsigned long arg)
{
    switch(cmd) {
    case 0:
    case 1:
        if (arg > 4) {
            return -EINVAL;
        }
        s3c2410_gpio_setpin(motors_table[arg], !cmd);
        return 0;
    default:
        return -EINVAL;
    }
}

static struct file_operations dev_fops = {
    .owner    =    THIS_MODULE,
    .ioctl    =    sbc2440_motors_ioctl,
};

static struct miscdevice misc = {
    .minor = MISC_DYNAMIC_MINOR,
    .name = DEVICE_NAME,
    .fops = &dev_fops,
};

static int __init dev_init(void)
{
    int ret;

    int i;
    
    for (i = 0; i < 4; i++) {
        s3c2410_gpio_cfgpin(motors_table, motors_cfg_table);
        s3c2410_gpio_setpin(motors_table, 0);
    }

    ret = misc_register(&misc);

    printk (DEVICE_NAME"\tinitialized\n");

    return ret;
}

static void __exit dev_exit(void)
{
    misc_deregister(&misc);
}

module_init(dev_init);
module_exit(dev_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zhz Inc.");
级别: 侠客
UID: 26755
精华: 0
发帖: 101
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2010-08-13
最后登录: 2017-09-13
1楼  发表于: 2010-12-04 11:29
问一下板子上的led驱动有没有配制内部上拉电阻,如果配制了在哪个文件里,我在mini2440_leds.c中没有看到有配制内剖上拉电阻的语句
级别: 侠客
UID: 26755
精华: 0
发帖: 101
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2010-08-13
最后登录: 2017-09-13
2楼  发表于: 2010-12-06 09:19
在顶一下,难道没有人肯赐教
级别: 新手上路
UID: 23311
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-06-17
最后登录: 2017-09-13
3楼  发表于: 2010-12-14 15:58
我也驱不动  led灯测试时无变化 汗 如果能看到 /etc/rc.d/init.d/leds 程序的源代码就知道了
级别: 骑士
UID: 11942
精华: 1
发帖: 144
金钱: 775 两
威望: 155 点
综合积分: 308 分
注册时间: 2009-12-25
最后登录: 2022-01-16
4楼  发表于: 2010-12-14 22:06
led 驱动 要先关闭开发板上的led循环闪烁的程序
级别: 新手上路
UID: 2468
精华: 0
发帖: 16
金钱: 115 两
威望: 16 点
综合积分: 32 分
注册时间: 2008-11-19
最后登录: 2012-12-03
5楼  发表于: 2010-12-16 20:53
是不是还需要进行地址映射
huhu ~~~
级别: 新手上路
UID: 10561
精华: 0
发帖: 42
金钱: 210 两
威望: 42 点
综合积分: 84 分
注册时间: 2009-11-08
最后登录: 2022-12-07
6楼  发表于: 2010-12-19 20:16
引用第4楼cole3于2010-12-14 22:06发表的  :
led 驱动 要先关闭开发板上的led循环闪烁的程序


4楼所言即是,首先,在QT界面下,你是不会成功的,除非你把他的驱动程序remove掉