位置:51电子网 » 技术资料 » 无线通信

IrDA模块与HCG8HC908AP64的红外系统设计

发布时间:2007/4/23 0:00:00 访问次数:2852

引 言
      随着嵌入式系统及集成电路技术的飞速发展,针对移动手持终端的专用芯片获得了长足发展。芯片的RAM和ROM的容量越大,在上面跑操作系统也越来越容易。Linux是当今流行的操作系统之一。由于其内核健壮、运行高效、源码开放,并且Linux是免费的操作系统,再加上其良好的可移植性等技术优势,使其已经成为嵌入式操作系统的主流。设备驱动程序是Linux操作系统中的一个重要的组成部分,现在不断升级的Linux内核中,增加最多的就是驱动程序。由于Linux是开放源代码的,给我们提供了一个绝好的机会来分析和改造设备驱动程序,使其满足自己的特殊应用,这样在嵌入式产品中,就可以为自己特有的外围设备编写一个设备驱动程序。由于IrDA技术的蓬勃发展,提供了各种信息家电设备之间的无线连接的最佳选择,红外数据传输,成本低廉、连接方便、简单易用、结构紧凑,在小型嵌入式移动设备中也得到了广泛的应用。配备有红外技术移动电话、个人数字助理、笔记本电脑都已登陆市场,因此,嵌入式设备的IrDA模块的开发有着广阔的市场前景。
      本文将详细讲解基于Inte1的PXA255处理器的Sitsang开发平台红外模块的设计,其中包括Linux下的IrDA驱动程序的开发和基于MC68HC908AP64红外发射器的软硬件设计两个部分。


1 Linux下IrDA模块的设计
1.1 Linux下的设备驱动程序简介

      系统调用是操作系统内核和应用程序之间的接口,驱动程序是操作系统内核和机器硬件之间的接El,也是应用层和实际硬件设备之间的软件。一个驱动程序就是一个函数和数据结构的集合,它的目的就是实现一个简单的管理设备的接口。内核用这个接口请求驱动程序控制设备的I/O操作。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。Linux操作系统支持三种不同类型的设备,即字符设备、块设备和网络接口,相应地有三种类型的设备驱动程序。本文主要讨论字符型设备的驱动程序。设备驱动程序是内核的一部分,主要完成以下的功能:
    ①对设备初始化和释放;
    ②把数据从内核传送到硬件和从硬件读取数据;
    ③读取应用程序传送给设备文件的数据和回送应用程序请求的数据;
    ④检测和处理设备出现的错误。
    由于应用程序是通过设备文件同硬件打交道,对设备文件的操作方式不外乎就是一些系统调用,如open、read、write、close等等。Linux操作系统是通过一组固定的接口把系统调用和驱动程序关联起来的。这组入口点是由每个设备的设备驱动程序组成了一个数据结构来向系统提供的,它提供了字符型设备驱动程序所需的操作。这是一个非常关键的数据结构:
struet file_operations{
    struct modul*owner;
    loft t(*llseek)(struet file*10flf_t,int);
    ssize t(*read)(struct file*,char*,size_t,10ff_t);
    ssize tf*write)(struct file*,const char*size_t,10ff_t*);
    int f*readdir)(struct file*,void*,filldir_t);
    unsigned int(*poll)(struct file*,struct poll_table_struct*);
    int(*ioctl)(struct inode*.struct file*,unsigned int,unsigned long);
    int(*mmap)(struet file*,struct vm_area_struct*)
    int(*open)(struct inode*,stmct file*);
    int(*flush)(struct nle*);
    int(*release)(struct inode*,stmct file*);
      这个结构的每一个成员的名字都对应着一个系统调月。应用程序利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是Linux的设备驱动程序工作的基本原理。既然是这样,编写设备驱动程序的主要工作就是编写子函数,并填充me_operations的各个域。多数情况下,只需为上面结构中的少数方法编写服务函数,其它均设为NULL。
      已经提到,应用程序是通过设备文件来与实际的硬件打交道的。每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有两个设备号:第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分它们。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问

引 言
      随着嵌入式系统及集成电路技术的飞速发展,针对移动手持终端的专用芯片获得了长足发展。芯片的RAM和ROM的容量越大,在上面跑操作系统也越来越容易。Linux是当今流行的操作系统之一。由于其内核健壮、运行高效、源码开放,并且Linux是免费的操作系统,再加上其良好的可移植性等技术优势,使其已经成为嵌入式操作系统的主流。设备驱动程序是Linux操作系统中的一个重要的组成部分,现在不断升级的Linux内核中,增加最多的就是驱动程序。由于Linux是开放源代码的,给我们提供了一个绝好的机会来分析和改造设备驱动程序,使其满足自己的特殊应用,这样在嵌入式产品中,就可以为自己特有的外围设备编写一个设备驱动程序。由于IrDA技术的蓬勃发展,提供了各种信息家电设备之间的无线连接的最佳选择,红外数据传输,成本低廉、连接方便、简单易用、结构紧凑,在小型嵌入式移动设备中也得到了广泛的应用。配备有红外技术移动电话、个人数字助理、笔记本电脑都已登陆市场,因此,嵌入式设备的IrDA模块的开发有着广阔的市场前景。
      本文将详细讲解基于Inte1的A255处理器的Sitsang开发平台红外模块的设计,其中包括Linux下的IrDA驱动程序的开发和基于MC68HC908AP64红外发射器的软硬件设计两个部分。


1 Linux下IrDA模块的设计
1.1 Linux下的设备驱动程序简介

      系统调用是操作系统内核和应用程序之间的接口,驱动程序是操作系统内核和机器硬件之间的接El,也是应用层和实际硬件设备之间的软件。一个驱动程序就是一个函数和数据结构的集合,它的目的就是实现一个简单的管理设备的接口。内核用这个接口请求驱动程序控制设备的I/O操作。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。Linux操作系统支持三种不同类型的设备,即字符设备、块设备和网络接口,相应地有三种类型的设备驱动程序。本文主要讨论字符型设备的驱动程序。设备驱动程序是内核的一部分,主要完成以下的功能:
    ①对设备初始化和释放;
    ②把数据从内核传送到硬件和从硬件读取数据;
    ③读取应用程序传送给设备文件的数据和回送应用程序请求的数据;
    ④检测和处理设备出现的错误。
    由于应用程序是通过设备文件同硬件打交道,对设备文件的操作方式不外乎就是一些系统调用,如open、read、write、close等等。Linux操作系统是通过一组固定的接口把系统调用和驱动程序关联起来的。这组入口点是由每个设备的设备驱动程序组成了一个数据结构来向系统提供的,它提供了字符型设备驱动程序所需的操作。这是一个非常关键的数据结构:
struet file_operations{
    struct modul*owner;
    loft t(*llseek)(struet file*10flf_t,int);
    ssize t(*read)(struct file*,char*,size_t,10ff_t);
    ssize tf*write)(struct file*,const char*size_t,10ff_t*);
    int f*readdir)(struct file*,void*,filldir_t);
    unsigned int(*poll)(struct file*,struct poll_table_struct*);
    int(*ioctl)(struct inode*.struct file*,unsigned int,unsigned long);
    int(*mmap)(struet file*,struct vm_area_struct*)
    int(*open)(struct inode*,stmct file*);
    int(*flush)(struct nle*);
    int(*release)(struct inode*,stmct file*);
      这个结构的每一个成员的名字都对应着一个系统调月。应用程序利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是Linux的设备驱动程序工作的基本原理。既然是这样,编写设备驱动程序的主要工作就是编写子函数,并填充me_operations的各个域。多数情况下,只需为上面结构中的少数方法编写服务函数,其它均设为NULL。
      已经提到,应用程序是通过设备文件来与实际的硬件打交道的。每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有两个设备号:第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分它们。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问

相关IC型号

热门点击

 

推荐技术资料

机器小人车
    建余爱好者制作的机器入从驱动结构上大致可以分为两犬类,... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!