您的位置:技术工种之机修知识网 设备修理知识 正文
原作者:[标签:作者] 添加时间:2007-06-28 原文发表时间:2007-06-29 人气:1

本文章共4064字,分3页,当前第3页,快速翻页:
 


当用户调用read()函数时,内核相应地调用sir_read()函数。在Sir_read()中,通过判断硬件寄存器是否有新数据到来而决定是否从设备读取数据,然后使用内核提供的copy touser(void*to,const void*from,unsigned long count)函数将数据返回应用程序。write()函数的实现与read()函数的实现过程正好相反。在sir_write()中,通过调用copy_from user_form_user(void*to,const void*from,unsigned long count,)函数来完成把数据从用户的应用程序传送给硬件设备。
1.2.5实现模式
设备驱动程序的主体完成了,现在要把驱动程序嵌入内核。实现Llnux下IrDA设备驱动功能主要有两种形式:一是通过内核来进行加载,需要用户在./etc/rc.d/目录中定义的初始启动脚本中写入命令,当内核启动的时候,就开始加载IrDA设备驱动程序,内核启动完成之后,IrDA驱动功能也随即实现了,但是增大了内核;第二是通过模块加载的形式。比较两者,第二种形式更加灵活,在此着重对模块加载形式进行讨论。模块设计是Llnux中特有的技术,它使Linux内核功能更容易扩展。采用模块来设计Linux设备驱动程序会很轻松,并且能够形成固定的模式。任何人只要依照这个模式去设计,都能设计出优良的设备驱动程序。
先简要概述一下基于模块加载的设备驱动程序的设计步骤。首先每一个可装配的设备驱动程序都必须有init_module和cleanup module两个函数,装载和卸载设备时内核自动调用这两个函数。前者在insmod的时候执行,后者在rmmod的时候执行。通过模块加载命令insmod来把IrDA设备驱动程序插入到内核之中。在init_module中,除可以对硬件设备进行检查和初始化外,还必须调用reglster_*’函数将设备登记到系统中。本例中是通过register_chrdev来登记的,如果是块设备或网络设备则应该用reglstei_blkdev和register_netdev来登记。registeT_chrdev的主要功能是将设备名和结构flle operatioons登记到系统的设备控制块中。最后可以通过执行模块卸载命令rmmod,调用IrDA驱动程序中的cleanup_module()函数,来对IrDA驱动程序模块卸载,具体实现过程如图l所示。

2 基于MC68HC908AP64红外发射器的设计
2.1 红外发射器的硬件设计
为了可以检测Sitsang板端的IrDA设备能否正常工作,设计了一个IrDA发射器。发射器的体积为l3cm
 

本文章更多内容<<上一页 - 1 - 2 - 3
本页地址
相关文章

一种加快RFIC发射机设计速度的创新方法
基于PIC的FSK/ASK超外差收发机的设计
AT88RF020型射频识别卡及其应用
基于GPRS无线通信的配变自动化系统研究
基于MAX2742型电路的GPS接收机设计
CSD在GSM-R手持终端的实现
基于虚拟无线电技术的多媒体收音接口卡设计
无线传感器网络硬件平台的研究与设计
UTP铜缆及多模光纤发展史与展望
一种基于PHS移动台的PHS/GSM双模手机设计
基于射频模块nRF24E1的无线系统的开发
基于GSM的GPS车辆定位监控系统
RFID电子标签卡的防碰撞模块设计
个人状态远程监视及语音通讯系统研究
基于RFID的电子关锁系统设计与实现
BlueCore2型模块及其HCI传输驱动的实现
基于MSP430的无线传感器网络设计
蓝牙无线耳机设计及VxWorks移植方法
软件无线电的远程安全配置系统设计
心电数字无线遥测系统的研制

相关评论


本文章所属分类:首页 设备修理知识