微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > WinCE内核动态加载GPIO端口驱动的设计方法

WinCE内核动态加载GPIO端口驱动的设计方法

时间:08-06 来源:互联网 点击:

相关的要点代码及解释如下(暂不考虑程序的异常处理)。
(1)端口驱动动态链接库的创建及生成
使用Visual Studio编译环境创建一个常规的动态链接库工程,并编译生成dll文件即可。具体代码这里不再给出。需要注意的是,在动态链接库工程的.cpp文件中,驱动的编写需要严格遵循流驱动定义的接口标准。在本程序中,流驱动的前缀名为GPI,生成的动态链接库文件名为GPI.dll。
(2)端口驱动动态链接库的注册及加载
调用RegisterDevice函数后,即将步骤1中生成的动态链接库文件注册到注册表中,并加载进WinCE内核。在使用该函数时需要注意,在WinCE应用程序中需要获取该驱动动态链接库文件的绝对路径。因此,开发者在部署WinCE应用程序和端口驱动动态链接库时,需要注意两者之间的位置关系,一般情况下,将两者部署在同一路径下即可。驱动程序动态链接库的注册及加载代码如下:

(3)端口访问
端口访问的方式与常规方式一致,根据需要调用CreateFile、WriteFile、ReadFile等函数即可,相关代码这里不再给出。
(4)端口驱动动态链接库的卸载
当不需要该设备驱动时,调用DeregisterDevice函数即可实现对动态链接库dll文件的卸载。如果程序再次需要该设备驱动时,按照步骤2再次加载设备驱动即可。
2.3 设计方法的优点
在WinCE内核动态加载GPIO端口驱动的设计方法中,内核调用端口驱动的方式比较灵活,GPIO端口驱动文件是通过相关WinCE API直接注册和调用的,整个开发过程不再涉及Platform Builder编译环境的使用。开发者只需要将注意力集中在Visual Studio创建端口驱动文件和WinCE应用程序的开发上,对驱动程序的修改和调试都独立于WinCE内核,而且在实际的使用中,端口驱动程序、WinCE内核和WinCE应用程序各自独立,便于各功能模块的独立开发和调试。

结语
本文介绍了基于ARM+WinCE进行项目开发过程中动态加载GPIO端口驱动程序的设计方法,较好地避开了对Platform Builder编译环境的使用,能够替代常用的基于流驱动的驱动程序的设计方法。笔者在工程项目中验证了这两种设计方法,实际可行且快捷有效,对于其他ARM类的GPIO驱动程序开发,具有一定的借鉴意义。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top