嵌入式设备的驱动方法技术

技术编号:2847900 阅读:196 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种保护模式操作系统中嵌入式设备的驱动方法,包括:将不同操作系统的应用程序接口API封装为统一的操作系统抽象接口函数;将嵌入式设备登记为操作系统支持的虚拟设备,建立所述虚拟设备的内核态内存空间与驱动模块的用户态内存空间之间的映射;应用程序调用驱动模块和操作系统的接口函数,通过内存映射与嵌入式设备进行控制信息和/或数据的交互。本发明专利技术还公开了一种实模式操作系统中嵌入式设备的驱动方法。应用本发明专利技术后,驱动模块能够不经改动在不同的实模式操作系统上移植,而只需对在内核态函数进行少量改动即可在保护模式操作系统上移植,并提高系统的运行效率;应用程序不经改动即可在各种操作系统上移植。

【技术实现步骤摘要】

本专利技术涉及嵌入式系统、实模式操作系统和保护模式操作系统,尤其涉及在实模式和保护模式操作系统中。
技术介绍
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪的专用系统,其对功能、可靠性、成本、体积、功耗有严格要求。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的监控或管理等功能。嵌入式系统中的外围硬件设备即嵌入式设备,既可以是集成在微处理器上的某个通信端口,如Power PC(增强型嵌入式处理器)的FCC(快速通信控制器)、SCC(串行通信控制器)、SMC(串行多通道通信控制器),或DSP(数字信号处理器)的MCBSP(多通道缓冲串口);也可以是由微处理器控制的外围芯片,如ATM(异步传输模式)交换芯片,CAN(局域网控制器)总线控制器、Voice CodeC(语音编解码)芯片等。对嵌入式设备的驱动主要由驱动模块进行,驱动模块主要完成两个功能其一是在应用程序和嵌入式设备之间进行控制信息的传递,其二是在应用程序和嵌入式设备之间进行数据的传递,使得应用程序可以使用嵌入式设备的各项功能。驱动模块向应用程序提供接口函数,这些接口函数通常对应于嵌入式设备具有的功能,应用程序通过调用接口函数将使用某项功能所需的控制信息和/或数据传递给驱动模块;驱动模块将这些控制信息和/或数据通过操作系统传递给嵌入式设备。对应于不同类型的操作系统,驱动嵌入式设备的方法也有所区别。操作系统属于系统软件的范畴,它以有效合理的方式管理计算机的软硬件资源,组织计算机的工作流程,控制程序的执行并向用户提供各种服务。操作系统又可以进一步划分为通用操作系统(GOS)和实时操作系统(RTOS)。通用操作系统运行在保护模式下,如Windows、Linux等,其用户界面友好,开发工具丰富,特点是最大限度利用系统资源和公平对待所有的系统请求。实时操作系统运行在实模式下,如VxWorks、OSE等,一般工作在Power PC、DSP等嵌入式微处理器上,快速多任务切换、抢占式任务调度是其基本特点,常常用作嵌入式系统的操作系统。在实模式操作系统中,用户可以采用自定义的接口通过驱动模块与设备进行交互。因此在现有技术中,对实模式操作系统中为驱动模块通过操作系统与嵌入式设备进行控制信息和数据的交互,同时向应用程序提供自定义的接口函数,应用程序通过调用这些接口函数实现控制信息和数据的传递。实模式下计算机系统的层次结构如图1所示,其中驱动模块工作在VxWorks、OSE操作系统与应用程序之间,与应用程序之间通过自定义的接口进行交互,同时直接使用操作系统的API(Application Program Interface,应用程序接口)函数与操作系统进行交互。这样的驱动方法使用户具有非常大的自由度,应用程序与驱动模块之间的接口都由用户自主定制。由于不同的驱动开发人员往往提供不同的与嵌入式设备的接口,导致在VxWorks上开发的驱动模块和使用该驱动模块的应用程序在OSE上无法使用。而且,即使是相同的实模式操作系统上,一个用户开发的应用程序通常也无法和其他用户开发的驱动模块一起使用。在保护模式操作系统中,应用程序工作在用户态,在用户态CPU(中央处理器)禁止对硬件的直接访问和对内存的未授权访问,对嵌入式设备的直接访问需要在内核态进行。现有技术中,对保护模式操作系统中为将嵌入式设备虚拟成操作系统可以识别的字符设备、块设备或是网络设备在操作系统里登记注册,驱动模块工作在内核态以实现与嵌入式设备的控制信号和数据传递;驱动模块与应用程序之间必须采用操作系统在用户态和内核态之间的接口,因此驱动模块遵循操作系统为虚拟设备制定的接口为应用程序提供接口函数,并将这些接口函数与虚拟设备一同在操作系统里登记注册;由应用程序通过系统调用陷入内核态来调用上述接口函数,来进行与驱动模块之间控制信息和数据的传递。图2所示为保护模式下计算机系统的层次结构,驱动模块工作在Windows或Linux的内核态,应用程序工作在用户态,必须通过Windows或Linux系统调用陷入内核态来访问驱动模块提供的接口函数,从而使用嵌入式设备。由于不同保护模式操作系统的内核态具有非常大的差异,为嵌入式设备在一种保护模式操作系统中开发的驱动模块无法在另一种保护模式操作系统中使用。虽然不同的保护模式操作系统提供用户态接口函数差别不大,但是保护模式操作系统为内核态驱动模块提供的字符设备接口函数、块设备接口函数、网络设备接口函数这三类函数却很不同,因而只有当嵌入式设备在不同的保护模式操作系统虚拟成同样类型的设备时,涉及嵌入式设备的应用程序才具有一定程度的可移植性。而且,在保护模式操作系统下,应用程序通过系统调用陷入内核态来访问驱动模块,会引起用户态和内核态的频繁切换,影响实时性。
技术实现思路
本专利技术要解决的技术问题是现有技术中,在实模式操作系统中嵌入式设备的驱动模块和涉及嵌入式设备的应用程序不能移植;在保护模式系统中驱动模块不能移植,涉及嵌入式设备的应用程序移植性和实时性差。本专利技术所述保护模式操作系统中包括以下步骤A)将不同操作系统的应用程序接口API封装为统一的操作系统抽象接口函数;B)将嵌入式设备登记为操作系统支持的虚拟设备,建立所述虚拟设备的内核态内存空间与驱动模块的用户态内存空间之间的映射;C)所述驱动模块调用所述操作系统抽象接口函数,通过内存映射启动所述嵌入式设备;D)应用程序调用驱动模块和操作系统的接口函数,通过内存映射与嵌入式设备进行控制信息和/或数据的交互;E)所述驱动模块调用所述操作系统抽象接口函数,通过内存映射关闭所述嵌入式设备。优选地,所述步骤B)与步骤C)之间包括BC)向操作系统登记所述虚拟设备的异步通知函数,用来在嵌入式设备产生中断时向所述驱动模块发送所述中断的实时信号。优选地,所述步骤A)与步骤B)之间包括AB)所述驱动模块为应用程序提供统一的驱动抽象接口函数;步骤D)所述驱动模块的接口函数为所述驱动抽象接口函数;所述操作系统的接口函数为所述操作系统抽象接口函数。优选地,所述驱动抽象接口函数包括打开设备函数和关闭设备函数,其中打开设备函数用来启动对嵌入式设备的访问;关闭设备函数用来结束对嵌入式设备的访问;所述步骤BC)与步骤C)之间包括应用程序调用打开设备函数通知驱动模块对嵌入式设备进行访问,并向驱动模块指定嵌入式设备的工作状态;所述步骤D)与步骤E)之间包括应用程序调用所述关闭设备函数通知所述驱动模块结束对所述嵌入式设备的访问。优选地,所述驱动抽象接口函数还包括输入输出控制函数,用来进行与嵌入式设备的控制信息的交互;所述步骤D)包括应用程序向嵌入式设备发送控制信息的过程,具体为应用程序调用所述输入输出控制函数将控制信息发送至驱动模块;驱动模块通过内存映射将控制信息写入嵌入式设备的寄存器。所述步骤D)包括应用程序从嵌入式设备读取控制信息的过程,具体为应用程序调用所述输入输出控制函数通知驱动模块读取嵌入式设备的控制信息;驱动模块通过内存映射读入嵌入式设备寄存器中的控制信息,并向应用程序返回该控制信息。优选地,所述操作系统抽象接口函数包括任务管理类函数,用来创建、删除从嵌入式设备接收实时信号的任务;步骤C)具体为驱动模块本文档来自技高网
...

【技术保护点】
一种保护模式操作系统中嵌入式设备的驱动方法,其特征在于,包括以下步骤:A)将不同操作系统的应用程序接口API封装为统一的操作系统抽象接口函数;B)将嵌入式设备登记为操作系统支持的虚拟设备,建立所述虚拟设备的内核态内存空间与驱 动模块的用户态内存空间之间的映射;C)所述驱动模块调用所述操作系统抽象接口函数,通过内存映射启动所述嵌入式设备;D)应用程序调用驱动模块和操作系统的接口函数,通过内存映射与嵌入式设备进行控制信息和/或数据的交互;E) 所述驱动模块调用所述操作系统抽象接口函数,通过内存映射关闭所述嵌入式设备。

【技术特征摘要】
1.一种保护模式操作系统中嵌入式设备的驱动方法,其特征在于,包括以下步骤A)将不同操作系统的应用程序接口API封装为统一的操作系统抽象接口函数;B)将嵌入式设备登记为操作系统支持的虚拟设备,建立所述虚拟设备的内核态内存空间与驱动模块的用户态内存空间之间的映射;C)所述驱动模块调用所述操作系统抽象接口函数,通过内存映射启动所述嵌入式设备;D)应用程序调用驱动模块和操作系统的接口函数,通过内存映射与嵌入式设备进行控制信息和/或数据的交互;E)所述驱动模块调用所述操作系统抽象接口函数,通过内存映射关闭所述嵌入式设备。2.按照权利要求1所述保护模式操作系统中嵌入式设备的驱动方法,其特征在于所述步骤B)与步骤C)之间包括BC)向操作系统登记所述虚拟设备的异步通知函数,用来在嵌入式设备产生中断时向所述驱动模块发送所述中断的实时信号。3.按照权利要求2所述保护模式操作系统中嵌入式设备的驱动方法,其特征在于,所述步骤A)与步骤B)之间包括AB)所述驱动模块为应用程序提供统一的驱动抽象接口函数;步骤D)所述驱动模块的接口函数为所述驱动抽象接口函数;所述操作系统的接口函数为所述操作系统抽象接口函数。4.按照权利要求3所述保护模式操作系统中嵌入式设备的驱动方法,其特征在于所述驱动抽象接口函数包括打开设备函数和关闭设备函数,其中打开设备函数用来启动对嵌入式设备的访问;关闭设备函数用来结束对嵌入式设备的访问;所述步骤BC)与步骤C)之间包括应用程序调用打开设备函数通知驱动模块对嵌入式设备进行访问,并向驱动模块指定嵌入式设备的工作状态;所述步骤D)与步骤E)之间包括应用程序调用所述关闭设备函数通知所述驱动模块结束对所述嵌入式设备的访问。5.按照权利要求4所述保护模式操作系统中嵌入式设备的驱动方法,其特征在于所述驱动抽象接口函数还包括输入输出控制函数,用来进行与嵌入式设备的控制信息的交互;所述步骤D)包括应用程序向嵌入式设备发送控制信息的过程,具体为应用程序调用所述输入输出控制函数将控制信息发送至驱动模块;驱动模块通过内存映射将控制信息写入嵌入式设备的寄存器。所述步骤D)包括应用程序从嵌入式设备读取控制信息的过程,具体为应用程序调用所述输入输出控制函数通知驱动模块读取嵌入式设备的控制信息;驱动模块通过内存映射读入嵌入式设备寄存器中的控制信息,并向应用程序返回该控制信息。6.按照权利要求5所述保护模式操作系统中嵌入式设备的驱动方法,其特征在于所述操作系统抽象接口函数包括任务管理类函数,用来创建、删除从嵌入式设备接收实时信号的任务;步骤C)具体为驱动模块调用所述任务管理类函数创建从嵌入式设备接收实时信号的任务,并根据应用程序的指定通过内存映射设置嵌入式设备的工作状态;步骤E)具体为驱动模块调用所述任务管理类函数删除从嵌入式设备接收实时信号的任务,停止嵌入式设备,并解除所述内存映射。7.按照权利要求6所述保护模式操作系统中嵌入式设备的驱动方法,其特征在于所述操作系统抽象接口函数还包括内存管理类函数,用来创建、删除内存池,从内存池中分配内存,将内存归还给内存池;所述驱动抽象接口函数还包括发送数据函数,用来向嵌入式设备发送数据;所述步骤D)包括应用程序向嵌入式设备发送数据的过程,具体为应用程序将数据拷贝到调用所述内存管理类函数分配的发送缓冲区中;应用程序调用所述发送数据函数将所述发送缓冲区的指针传递给驱...

【专利技术属性】
技术研发人员:陈剑
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1