找回密码
 注册
搜索
查看: 974|回复: 0

[讨论] mini2440(LED驱动程序问题)?急!

[复制链接]
发表于 2011-11-7 08:59:53 | 显示全部楼层 |阅读模式
#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 "memdev.h"

#define DEVICE_NAME "leds"

static unsigned long led_table[]={
S3C2410_GPB(5),
S3C2410_GPB(6),
S3C2410_GPB(7),
S3C2410_GPB(8),
};

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

static int mini2440_leds_ioctl(
struct inode* inode,
struct file* file,
unsigned int cmd,
unsigned long arg)
{
int i = 0;
int tmp = arg;

if (_IOC_TYPE(cmd) != MEMDEV_IOC_MAGIC)
return -EINVAL;
//问题就在这个黑体上面,如果我注释掉,在2440上/etc/rc.d/init.d/leds stop,再执行./led 1 0等等是正确的。
加上这句话,2440在启动后面不执行leds里面的程序,执行./led 1 0也没有反应。我觉得是不是我检查命令有问题,magic定义的是'k',
并且看了ioctl-number.txt,'k'没有定义。
现在不知道怎么解决这个问题?

请版主或者高人出马,帮初学者解决此问题,先谢谢啦!
[/COLOR]
if (_IOC_NR(cmd) > MEMDEV_IOC_MAXNR)
return -EINVAL;


switch(cmd)
{
case 0:
for (i = 0;i < 4; i++)
s3c2410_gpio_setpin(led_table,1);
return 0;
case 1:


for(i = 0; i < 4; i++)
s3c2410_gpio_setpin(led_table,0);

return 0;
default:
return -EINVAL;
}}


static struct file_operations dev_fops = {
.owner = THIS_MODULE,
.ioctl = mini2440_leds_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(led_table,led_cfg_table);
s3c2410_gpio_setpin(led_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("wilson Chen");
[em13]
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-9 09:17 , Processed in 0.043926 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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