CN103257865A - 基于Wince7下实现应用程序控制底层硬件的方法 - Google Patents
基于Wince7下实现应用程序控制底层硬件的方法 Download PDFInfo
- Publication number
- CN103257865A CN103257865A CN2013101773534A CN201310177353A CN103257865A CN 103257865 A CN103257865 A CN 103257865A CN 2013101773534 A CN2013101773534 A CN 2013101773534A CN 201310177353 A CN201310177353 A CN 201310177353A CN 103257865 A CN103257865 A CN 103257865A
- Authority
- CN
- China
- Prior art keywords
- application program
- hardware
- stream interface
- interface device
- device drives
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Telephone Function (AREA)
Abstract
本发明公开了基于Wince7下实现应用程序控制底层硬件的方法,属于计算机技术领域,以Windows Embedded Compact7嵌入式操作系统为软件平台,以嵌入式处理器为硬件平台;方法如下:(1)建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;(2)在应用程序中添加上述流接口设备驱动的实例;(3)在应用程序需要操作底层硬件的地方,通过IOCONTROL消息来调用流接口设备驱动中的底层硬件的代码,实现应用程序对底层硬件的操作。本发明的基于Wince7下实现应用程序控制底层硬件的方法,实用性强,在保证系统安全性和稳定性的同时、不影响系统的实时响应性能。
Description
技术领域
本发明涉及一种计算机技术领域,具体地说是基于Wince7下实现应用程序控制底层硬件的方法。
背景技术
Wince7(Windows Embedded Compact7嵌入式操作系统)是微软推出的最新的嵌入式实时操作系统。它比之前版本的WINCE具有更强大的性能,以及更高的安全性和稳定性。
对于WINCE嵌入式系统开发者来说,在应用程序中加入操作底层硬件的代码是一种非常有用的开发手段。这样做的好处是应用程序能方便的利用操作系统提供的API接口直接对硬件进行操作。对于没有底层驱动源代码的独立软件开发商来说,这是操作硬件唯一的选择。对于有底层驱动源代码的OEM开发商来说也是有用处的,因为在某些场合,直接用系统API比在底层驱动中靠自己来实现复杂的硬件操作来得简单。因此WINCE7之前的版本都支持应用程序直接对底层进行操作。
但在WINCE7上这样做就行不通了。因为WINCE7为了提高系统的稳定性和安全性(主要是为了防止应用程序可能的异常操作而影响系统的稳定性,以及抵御黑客程序对系统的恶意攻击),剥夺了应用程序操作底层硬件的权限:禁止应用程序直接操作底层硬件! 很明显, 那些直接操作硬件的应用程序,会因为得不到操作系统的支持而无法在WINCE7上运行。又因为WINCE7是一个全新的操作系统,相关参考资料较少,因此这个问题的解决就变得十分紧要和迫切。
发明内容
本发明的技术任务是针对以上不足之处,提供一种行之有效的解决了WINCE7下应用程序无法直接控制底层硬件的问题,实用性强,在保证系统安全性和稳定性的同时、不影响系统的实时响应性能的基于Wince7下实现应用程序控制底层硬件的方法。
本发明解决其技术问题所采用的技术方案是:以Windows Embedded Compact 7嵌入式操作系统为软件平台,以嵌入式处理器为硬件平台;所述方法如下:
(1)、建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;
(2)、在应用程序中添加上述流接口设备驱动的实例;
(3)、在应用程序需要操作底层硬件的地方,通过IOCONTROL消息来调用流接口设备驱动中的底层硬件的代码,从而实现应用程序对底层硬件的操作。
以Windows Embedded Compact 7嵌入式操作系统为软件平台,以Freescale公司的IMX53嵌入式处理器为硬件平台,详细步骤如下:
(1)、建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;
(2)、在Windows Embedded Compact 7嵌入式操作系统启动的时候,OEM 适配层OAL.exe首先加载CE内核kernel.dll,然后kernel.dll加载device.dll,device.dll会加载devmgr.dll;devmgr.dll是设备管理器模块,负责流接口设备驱动的加载、卸载和交互操作;
(3)、应用程序通过调用函数CreateFile打开设备管理器模块并获得相应的句柄,然后通过调用IOCONTROL访问流接口设备驱动;
在流接口设备驱动中添加的操作硬件的代码,和OEM 适配层合作,共同来对硬件进行控制和访问。
OEM 适配层(OEM Adaptation Layer,简称OAL),用来引导系统核心映像和初始化、管理硬件。它是BSP驱动的一部分。BSP(board support package,板级支持包),是介于硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的应用程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。在Wince7系统软件的组成中,就有OEM 适配层。
本发明的基于Wince7下实现应用程序控制底层硬件的方法和现有技术相比,具有以下优点:
1、解决了Wince7下应用程序无法直接控制底层硬件的问题;
2、适用于将包含操作硬件代码的应用程序从低版本WINCE移植到高版本WINCE7,也适用于直接在WINCE7上编写应用程序控制底层硬件,实用性强;
3、在保证系统安全性和稳定性的同时,不影响系统的实时响应性能;
4、简单易行,可操作性强;因而,具有很好的推广使用价值。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于Wince7下实现应用程序控制底层硬件的方法的结构框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明的基于Wince7下实现应用程序控制底层硬件的方法,以Windows Embedded Compact 7嵌入式操作系统为软件平台,以嵌入式处理器为硬件平台;所述方法如下:
(1)、建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;
(2)、在应用程序中添加上述流接口设备驱动的实例;
(3)、在应用程序需要操作底层硬件的地方,通过IOCONTROL消息来调用流接口设备驱动中的底层硬件的代码,从而实现应用程序对底层硬件的操作。
以Windows Embedded Compact 7嵌入式操作系统为软件平台,以Freescale公司的IMX53嵌入式处理器为硬件平台,详细步骤如下:
(1)、建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;
(2)、在Windows Embedded Compact 7嵌入式操作系统启动的时候,OEM 适配层OAL.exe首先加载CE内核kernel.dll,然后kernel.dll加载device.dll,device.dll会加载devmgr.dll;devmgr.dll是设备管理器模块,负责流接口设备驱动的加载、卸载和交互操作;
(3)、应用程序通过调用函数CreateFile打开设备管理器模块并获得相应的句柄,然后通过调用IOCONTROL访问流接口设备驱动;
在流接口设备驱动中添加的操作硬件的代码,和OEM 适配层合作,共同来对硬件进行控制和访问。
下面为应用程序控制硬件的核心代码:
//应用程序
HANDLE g_hGPO;
g_hGPO = CreateFile(szClassName, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if ( g_hGPO == INVALID_HANDLE_VALUE )
{
MessageBox(_T("Open GPO driver failed!"),_T("Error"),MB_OK);
BYTE OutBuffer = 0;
DWORD OutBufferSize = 1;
DWORD ActualReturned = 0;
DeviceIoControl(g_hGPO, IOCTL_GPIO_SET_HIGH, NULL, NULL, &OutBuffer ,OutBufferSize, &ActualReturned, NULL);
CString message;
message.Format(_T("Returned value is:%x,returned %x bytes."),OutBuffer,ActualReturned);
MessageBox(message,0,0);}
//流接口驱动
BOOL GPO_IOControl(DWORD hOpenContext,
DWORD dwCode,
PBYTE pBufIn,
DWORD dwLenIn,
PBYTE pBufOut,
DWORD dwLenOut,
PDWORD pdwactualOut)
{
UINT32 dwStatus = 1;
//Control Hardware Code
DDKIomuxSetPinMux(DDK_IOMUX_PIN_EIM_D27, DDK_IOMUX_PIN_MUXMODE_ALT1,
DDK_IOMUX_PIN_SION_REGULAR);
DDKGpioSetConfig(DDK_GPIO_PORT3, 27, DDK_GPIO_DIR_OUT, DDK_GPIO_INTR_NONE);
DDKGpioWriteDataPin(DDK_GPIO_PORT3, 27, 1);
if(DDKGpioReadDataPin_DR(DDK_GPIO_PORT3,27,&dwStatus))
RETAILMSG(TRUE, (TEXT("Gpio status is %x\r\n"),dwStatus));
else
RETAILMSG(TRUE, (TEXT("GPO_IOControl Error 2\r\n"),dwStatus));
*pBufOut = (BYTE)dwStatus;
*pdwactualOut = 1;
return TRUE;
}
本发明的基于Wince7下实现应用程序控制底层硬件的方法,除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (2)
1.基于Wince7下实现应用程序控制底层硬件的方法,其特征在于以Windows Embedded Compact 7嵌入式操作系统为软件平台,以嵌入式处理器为硬件平台;所述方法如下:
(1)、建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;
(2)、在应用程序中添加上述流接口设备驱动的实例;
(3)、在应用程序需要操作底层硬件的地方,通过IOCONTROL消息来调用流接口设备驱动中的底层硬件的代码,实现应用程序对底层硬件的操作。
2.根据权利要求1所述的基于Wince7下实现应用程序控制底层硬件的方法,其特征在于以Windows Embedded Compact 7嵌入式操作系统为软件平台,以Freescale公司的IMX53嵌入式处理器为硬件平台,详细步骤如下:
(1)、建立一个流接口设备驱动,将所要操作的底层硬件的代码放到流接口设备驱动中;
(2)、在Windows Embedded Compact 7嵌入式操作系统启动的时候,OEM 适配层OAL.exe首先加载CE内核kernel.dll,然后kernel.dll加载device.dll,device.dll会加载devmgr.dll;devmgr.dll是设备管理器模块,负责流接口设备驱动的加载、卸载和交互操作;
(3)、应用程序通过调用函数CreateFile打开设备管理器模块并获得相应的句柄,然后通过调用IOCONTROL访问流接口设备驱动;
在流接口设备驱动中添加的操作硬件的代码,和OEM 适配层合作,共同来对硬件进行控制和访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101773534A CN103257865A (zh) | 2013-05-15 | 2013-05-15 | 基于Wince7下实现应用程序控制底层硬件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101773534A CN103257865A (zh) | 2013-05-15 | 2013-05-15 | 基于Wince7下实现应用程序控制底层硬件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103257865A true CN103257865A (zh) | 2013-08-21 |
Family
ID=48961801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013101773534A Pending CN103257865A (zh) | 2013-05-15 | 2013-05-15 | 基于Wince7下实现应用程序控制底层硬件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103257865A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371847A (zh) * | 2016-09-07 | 2017-02-01 | 湖北三江航天万峰科技发展有限公司 | Windows xp系统下CPCI总线RS422通信驱动方法及系统 |
CN107423095A (zh) * | 2017-07-24 | 2017-12-01 | 百富计算机技术(深圳)有限公司 | 适配硬件的数据处理方法、装置、存储介质和计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259570A1 (en) * | 2005-05-13 | 2006-11-16 | Microsoft Corporation | Method and system for closing an RDMA connection |
CN102426557A (zh) * | 2011-10-27 | 2012-04-25 | 中国科学院计算技术研究所 | 虚拟化环境中 pci 设备的分离访问方法及其系统 |
-
2013
- 2013-05-15 CN CN2013101773534A patent/CN103257865A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259570A1 (en) * | 2005-05-13 | 2006-11-16 | Microsoft Corporation | Method and system for closing an RDMA connection |
CN102426557A (zh) * | 2011-10-27 | 2012-04-25 | 中国科学院计算技术研究所 | 虚拟化环境中 pci 设备的分离访问方法及其系统 |
Non-Patent Citations (3)
Title |
---|
CGEBTQ2000: "《http://blog.sina.com.cn/s/blog_539238aa0100p8qw.html》", 29 May 2008 * |
GOOOGLEMAN: "《http://bbs.csdn.net/topics/310088700》", 17 June 2009 * |
LYS_BEST: "《http://blog.csdn.net/lys_best/article/details/7856235》", 12 August 2012 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371847A (zh) * | 2016-09-07 | 2017-02-01 | 湖北三江航天万峰科技发展有限公司 | Windows xp系统下CPCI总线RS422通信驱动方法及系统 |
CN107423095A (zh) * | 2017-07-24 | 2017-12-01 | 百富计算机技术(深圳)有限公司 | 适配硬件的数据处理方法、装置、存储介质和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101763102B1 (ko) | 인터페이스 기반 에러 인젝션이 있는 컴퓨팅 플랫폼 | |
US20190087212A1 (en) | Android simulator and method for implementing android simulator | |
US8838948B2 (en) | Remote management of UEFI BIOS settings and configuration | |
US8694981B2 (en) | Shared resource dependencies | |
EP3123322B1 (en) | Virtual general-purpose i/o controller | |
CA2786890C (en) | Extension point declarative registration for virtualization | |
US20070174033A1 (en) | Remote control device and method for accessing peripheral device remotely | |
US20070198996A1 (en) | System and method for driving peripheral devices | |
CN107567629B (zh) | 在可信执行环境容器中的动态固件模块加载器 | |
EP3436947B1 (en) | Secure driver platform | |
JP2008287505A (ja) | 情報処理装置およびレガシーエミュレーション処理停止制御方法 | |
US9672047B1 (en) | Systems and methods for accessing a bootable partition on a serial peripheral interface device | |
CN111984263B (zh) | 在第一系统运行第二系统应用的方法、装置、设备及介质 | |
US11222119B2 (en) | Technologies for secure and efficient native code invocation for firmware services | |
US20070260761A1 (en) | Inter-module data communication control method and system for ACPI and BIOS | |
JP2006164266A (ja) | オペレーティングシステムのパフォーマンスの改善 | |
CN103257865A (zh) | 基于Wince7下实现应用程序控制底层硬件的方法 | |
US20110276793A1 (en) | Injecting a file from the bios into an operating system | |
US10592438B2 (en) | Firmware configuration through emulated commands | |
US9087031B2 (en) | Method and program for selective suspension of USB device | |
CN109254856A (zh) | 智能pos服务端提供接口给客户端的方法 | |
Armand et al. | Shared device driver model for virtualized mobile handsets | |
CN110688099A (zh) | 远距离无线电集成可编程片上系统的微处理器开发方法 | |
CN114140835A (zh) | 即插即用的掌纹识别外接系统及识别方法 | |
KR101513568B1 (ko) | 그래픽카드가 장착된 임베디드 시스템에서의 x 윈도우 시스템 및 그 실행방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130821 |