chen4013874 发表于 2012-7-1 20:56:53

帮我看下led灯为什么不亮啊?!!!!!

我用光盘配套的led驱动和led应用程序,驱动是动态加载的。应用程序怎么跑起来没反应啊?ps:已经照着手册去除了内核自带的led驱动了。

chen4013874 发表于 2012-7-1 21:00:39

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <fcntl.h>      // open() close()
#include <unistd.h>   // read() write()

#define DEVICE_NAME "/dev/GPIO-Control"

//define LED STATUS
#define LED_ON0
#define LED_OFF 1


//------------------------------------- main ---------------------------------------------
int main(void)
{
      int fd;
        int ret;
        char *i;

      printf("\nstart gpio_led_driver test\n\n");

      fd = open(DEVICE_NAME, O_RDWR);
       
        printf("fd = %d\n",fd);
       

      if (fd == -1)
      {
                printf("open device %s error\n",DEVICE_NAME);
      }
      else
      {
                while(1)
                {        ioctl(fd,LED_OFF,1);
                        sleep(1);//μè′y1ÃëÔù×öÏÂò»2½2ù×÷
                        ioctl(fd,LED_ON,1);
                        sleep(1);

                }
                // close
                ret = close(fd);
                printf ("ret=%d\n",ret);
                printf ("close gpio_led_driver test\n");
      }

      return 0;
}// end main

chen4013874 发表于 2012-7-1 21:01:15

本帖最后由 chen4013874 于 2012-7-1 21:03 编辑

#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 <asm/uaccess.h>
#include <asm/atomic.h>
#include <asm/unistd.h>


#define DEVICE_NAME "GPIO-Control"

#define IOCTL_GPIO_ON        1
#define IOCTL_GPIO_OFF        0

static unsigned long gpio_table [] =
{
        S3C2410_GPB5,
        S3C2410_GPB6,
        S3C2410_GPB7,
        S3C2410_GPB8,
};

static unsigned int gpio_cfg_table [] =
{
        S3C2410_GPB5_OUTP,
        S3C2410_GPB6_OUTP,
        S3C2410_GPB7_OUTP,
        S3C2410_GPB8_OUTP,
};

static int tq2440_gpio_ioctl(
        struct inode *inode,
        struct file *file,
        unsigned int cmd,
        unsigned long arg)
{
        if (arg > 4)
        {
                return -EINVAL;
        }

        switch(cmd)
        {
                case IOCTL_GPIO_ON:
                        s3c2410_gpio_setpin(gpio_table, 1);
                        return 0;

                case IOCTL_GPIO_OFF:
                        s3c2410_gpio_setpin(gpio_table, 0);
                        return 0;

                default:
                        return -EINVAL;
        }
}

static struct file_operations dev_fops = {
        .owner        =        THIS_MODULE,
        .ioctl        =        tq2440_gpio_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(gpio_table, gpio_cfg_table);
                s3c2410_gpio_setpin(gpio_table, 0);
        }

        ret = misc_register(&misc);

        printk (DEVICE_NAME" initialized\n");

        return ret;
}

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

module_init(dev_init);
module_exit(dev_exit);

MODULE_LICENSE("GPL");

chen4013874 发表于 2012-7-1 21:07:08

ps:加载玩内核和文件系统后 灯是全亮的 不像pdf写的那样2亮2灭的。而且我装在内核模块后,应用没反应。但是用板子上自带的led测试是行的。。。。

chen4013874 发表于 2012-7-2 08:33:04

help!!!!!!!!!!!!
页: [1]
查看完整版本: 帮我看下led灯为什么不亮啊?!!!!!