基于ARM智能家居控制器设计与实现

技术分类: 嵌入式系统  | 2007-07-19
来源:微计算机信息 | 作者:朱华生 冯祥胜

  3 驱动程序的设计

  智能家居控制器要多个设备驱动程序,有的驱动程序可以采用标准的驱动程序,有的要专门设计。芯片SIM100-E是通过第三个串口与S3C2410相连的,所以可以直接使用标准的串口驱动程序。传感器接口和家电控制接口要设计专用的驱动程序。控制器的处理器通过外部中断来检测传感器,通过GPIO端口来控制家电,虽然它们的工作原理有所不同,但驱动程序设计的方法没有很大差别,因为在嵌入式Linux系统中设备驱动程序有一个标准的框架,设计驱动程序的大部分工作就是根据硬件结构来“填写”框架中的函数。主要的函数包括open()、read()、write()、ioctl()、release()、module_init()和module_exit()等等。

  下面以传感器接口驱动程序设计为例,简介驱动程序的“填写”过程。

  3.1 设备初始化模块和退出模块

  设备初始化模块的主要功能是:设置和申请中断、向内核注册设备等。设备退出模块的主要功能是:释放设备所占

用的资源。具体函数如下:

  int __init s3c2410_int_init(void)
{┅
       set_external_irq(IRQ_EINT9, ┅);//设置外部中断
       request_irq(IRQ_EINT9,demo_int_handler, ┅);//申请外部中断
       ret = register_chrdev(0, DEVICE_NAME, &s3c2410_exio_fops); //申请主设备号
       devfs_int_demo= devfs_register(NULL, "int_demo", ┅); //注册设备文件
┅}

  void __exit s3c2410_int_exit(void)
{┅
       free_irq(IRQ_EINT9,NULL);//释放中断
       devfs_unregister(devfs_int_demo); //删除设备文件
       unregister_chrdev(exioMajor, DEVICE_NAME); //释放主设备号
┅}

  3.2 打开模块和释放模块

  打开模块的主要功能是:初始化一些变量。具体实现函数如下:

  static int s3c2410_int_open(struct inode *inode, struct file *filp)
{     init_MUTEX(&demodev.lock);//初始化自旋锁
       init_waitqueue_head(&(demodev.wait));初始化队列
       MOD_INC_USE_COUNT;//使用计数加1
┅}
static int s3c2410_int_release(struct inode *inode, struct file *filp)
{     MOD_DEC_USE_COUNT; //使用计数减1
┅}

  3.3 读数据模块

  读数据模块的主要功能是:使线程休眼,然后等待中断来唤醒。具体实现函数如下:

  static int s3c2410_int_read(struct file *filp,char *buffer,size_t count,loff_t *ppos)
{┅
       copy_to_user(buffer,(char *)&bak,sizeof(bak)); //内核态到用户态
       interruptible_sleep_on(&demodev.wait);//进入休眠
┅}

  3.4 中断处理模块

  中断处理模块的主要功能是:唤醒正在休眼的线程。具体实现函数如下:

  static void s3c2410_int_handler(int irq, void *dev_id, struct pt_regs *reg)
{wake_up(&demodev.wait);//中断唤醒
┅}

  驱动程序设计完成后,再编写Makefile文件,通过make命令生成目标文件,最后利用insmod命令向内核加载驱动程序。

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

正在点播中:电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会