Chinaunix首页 | 论坛 | 博客
  • 博客访问: 211954
  • 博文数量: 59
  • 博客积分: 476
  • 博客等级: 下士
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-02 13:12
文章分类
文章存档

2012年(3)

2011年(56)

我的朋友

分类:

2011-12-06 13:26:57

/************************************************

GPS模块的驱动,在TX2440A开发板上做测试

维护记录:  2010-06-10  V1.0   

linux内核:2.6.31

硬件接法:

        CH0 --> GPH0

        CH1 --> GPH1

*************************************************/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

 

#define DEVICE_NAME  "TX2440-gps"    /* 设备名称 */      

static int GPS_Major = 0;           /* 主设备号 */

 

static int TX2440_gps_open(struct inode *inode, struct file *file)

{

    s3c2410_gpio_cfgpin(S3C2410_GPH(0), S3C2410_GPIO_OUTPUT);

    s3c2410_gpio_cfgpin(S3C2410_GPH(1), S3C2410_GPIO_OUTPUT);

    s3c2410_gpio_setpin(S3C2410_GPH(0), 1);

    s3c2410_gpio_setpin(S3C2410_GPH(1), 0);

    return 0;

}

 

static int TX2440_gps_release(struct inode *inode, struct file *file)

{

    s3c2410_gpio_setpin(S3C2410_GPH(0), 0);

    s3c2410_gpio_setpin(S3C2410_GPH(1), 0);

    return 0;

}

 

static int TX2440_gps_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)

{

 

}

 

static struct file_operations TX2440_gps_fops =

{

    .owner  =   THIS_MODULE,

    .open   =   TX2440_gps_open,

    .release =  TX2440_gps_release,

    .ioctl  =   TX2440_gps_ioctl,

};

 

static struct class *gps_class;

 

static int __init TX2440_gps_init(void)

{

 

    printk("TX2440 GPS DRIVER MODULE INIT\n");

 

    GPS_Major = register_chrdev(0, DEVICE_NAME, &TX2440_gps_fops);

    if (GPS_Major < 0)

    {

        printk(DEVICE_NAME " can't register major number\n");

        return GPS_Major;

    }

    printk("register TX2440-GPS Driver OK! Major = %d\n", GPS_Major);

 

    gps_class = class_create(THIS_MODULE, DEVICE_NAME);

    if(IS_ERR(gps_class))

    {

        printk("Err: failed in TX2440-GPS class. \n");

        return -1;

    }

 

    device_create(gps_class, NULL, MKDEV(GPS_Major, 0), NULL, DEVICE_NAME);

 

    printk(DEVICE_NAME " initialized\n");

    return 0;

}

 

static void __exit TX2440_gps_exit(void)

{

    printk("TX2440 GPS DRIVER MODULE EXIT\n");

    unregister_chrdev(GPS_Major, DEVICE_NAME);

    device_destroy(gps_class, MKDEV(GPS_Major, 0));

    class_destroy(gps_class);

}

 

module_init(TX2440_gps_init);

module_exit(TX2440_gps_exit);

 

MODULE_AUTHOR("www.txmcu.com");

MODULE_DESCRIPTION("TX2440 GPS Driver"); 

MODULE_LICENSE("GPL");

 

源代码: TX2440_gps.rar   

测试程序: gps.rar   

阅读(681) | 评论(0) | 转发(0) |
0

上一篇:Linux Find 命令使用详解

下一篇:中断处理

给主人留下些什么吧!~~