基于嵌入式的故障诊断专家系统驱动程序设计

发布者:知音学友最新更新时间:2010-10-10 来源: 电子设计工程关键字:专家系统  驱动程序  嵌入式  Windows  CE.Net 手机看文章 扫描二维码
随时随地手机看文章

  电子设备的故障诊断系统大多采用由传感器、工业PC、工业以太网、远程专家组成的诊断模式。现有诊断现场仪器众多、连接复杂,使得系统可靠性和稳定性难以得到保证。另一方面,要求诊断人员具备专业知识,其中包括各类传感器的固定、连接与信号处理,难以实现“现场无人,远程诊断”目标。因此有必要从现有的硬件和软件组成模式的角度出发,探索一种新的诊断系统组成模式。本文设计了基于嵌入式的故障诊断专家系统,使得对电子设备的检测及维修变得更为方便有效。

  本文根据实际需要选取Windows CE.Net作为本系统的操作系统平台。在Windows CE嵌入式系统的平台开发中,设备驱动程序的开发是其很重要的一部分,它们用于驱动嵌入式系统硬件平台上的各个设备接口。根据定制的硬件系统,本文对操作系统的键盘驱动程序、触摸屏、LCD驱动、电源管理及其它的相关驱动程序进行了开发。

  1 Windows CE.Net操作系统

  Windows CE.Net是微软公司在嵌入式操作系统市场上一个重要产品,第1个版本于1996年发布。Windows CE.Net是针对有限资源的平台而设计的32位、多线程、完整优先权、多任务的嵌入式操作系统。

  Windows CE.Net一个突出的特点——模块化。利用这个特点,选择、组合和配置Windows CE.Net的各个模块和组件来创建用户版的操作系统,即Windows CE.Net的模块化设计使得它能够在大量的平台上定制使用,从客户电子设备到专用的工业控制器。

  Window CE.Net操作系统的基本内核需要至少200 kB的ROM,它支持Win32 API子集、多种用户界面硬件、多种的串行和网络通讯技术、COM/OLE和其他的进程间通讯的先进方法,借助Windows CE开发者就能利用大量其他的编程资源、工具、软件例子以及文档来进行Windows CE.Net开发工作。Micmsoft公司为Windows CE.Net提供了PlatformBuilder和Embedded Visual Studio开发工具。

  Windows CE.Net有五个主要的模块:内核模块、内核系统调用接口模块、文件系统模块、图形窗口和事件子系统模块、通讯模块。其最大的特点是能提供与PC机类似的图形界面和主要的应用程序。Windows CE.Net嵌入式操作系统的界面显示大多数在Windows里出现的标准部件,包括桌面、任务栏、窗口、图标和控件等。这样只要是对PC机上的Windows比较熟悉的用户,可以很快地使用基于Windows CE.Net嵌入式操作系统的嵌入式设备。

  2 WindOWS CE.Net平台下的驱动开发

  Windows CE.Net的分层结构给驱动程序的开发带来极大的方便,使得驱动开发只需要针对不同的BSP进行修改,很大程度上减少了开发的工作量。而完成这一工作需要了解两部分的内容,分别是:Windows CE.Net的中断机制和Windows CE.Net.的层次模型。

  2.1 Windows CE.Net的中断机制

  Windows CE.Net系统的大多数外围设备都是通过产生中断从操作系统获得服务的,如PC卡、板上定时器、键盘、触摸屏等。当设备需要驱动程序服务时,基于Windows CE.Net的平台使用中断信号通知操作系统。

  Windows CE.Net把中断处理分成两部分:内核模式的中断服务程序(Interrupt Serice RouTIne,ISR)和用户模式的中断服务线程(Int-errupt Setice Thread,IST)。ISR通常都比较短,是快速的汇编代码,一般在0AL层代码中,能够直接访问硬件注册表。ISR的唯一任务就是向操作系统返回逻辑中断标志符。中断服务线程(IST)是用户模式线程,在IST中完成大多数中断处理。IST在大多数时间里是空闲的,只有当从函数WaitForSingeObiect()得到中断已经发生的信号后,IST被唤醒去处理它需要处理的中断。通过相关联的带有中断标志的事件可以完成这些。IST需要首先创建一个事件并且用逻辑中断与它相联系。当中断过程完成时,IST应该通知内核重新使能中断。

  2.2 Windows CE.Net的驱动模型

  Windows CE.Net所有驱动都以动态链接库(DLL)的形式存在,在驱动的实现过程中可以调用Windows CE.Net支持的所有标准API函数。

  Windows CE.Net的驱动程序有2种模型:本机设备驱动程序和流接口设备驱动程序。

  1)本机设备驱动 在Windows CE.Net中.通用LED驱动、电源驱动、显示驱动、键盘驱动等都可以用本机设备驱动来开发。微软提供了定制接口的方式来支持内部设备驱动程序,这意味着绝大多数开发人员不必大量地编写本机设备驱动代码。但把Windows CE.Net定制到新平台的原始设备制造商(OEM)除外,它们可以创建自己的本机设备驱动程序到新的平台。通常,当Windows CE.Net系统启动时,本机设备驱动程序就被加载到系统的内存中。

  2)流接口驱动程序 在Windows CE.Net中,流接口驱动程序以DLL形式存在,是运行在用户模式下的动态连接库,由一个叫做设备管理程序的特殊应用程序加载、管理和卸载。与具有单独目的接口的内部设备驱动程序相比,所有流接口驱动程序使用同一个接口并调用同一个函数集——流接口函数。流接口驱动程序的主要任务是把外设的使用传递给应用程序,这是通过把设备表示为文件系统的一个特殊文件实现的。在流接口驱动程序模型中,应用程序通过文件系统的API函数调用流接口函数,然后由流接口驱动程序调用本机驱动或者通过设备管理器与系统内核或外围设备打交道。每个流接口驱动程序必须实现一组标准的函数,用来完成标准的文件I/O函数和电源管理函数,这些函数提供给Windows CE.Net操作系统的内核使用。一般,这些函数被称为流接口驱动程序的DLL接口。

  3 驱动程序的开发

  在Windows CE嵌入式系统的平台开发中,设备驱动程序的开发是其很重要的一部分,它们用于驱动嵌入式系统硬件平台上的各个设备接口。下面针对在项目中完成的几个主要的设备驱动,来了解一下具体设备驱动程序的开发过程。

  3.1 触摸屏

  在嵌入式故障诊断专家系统中,为了方便用户输入数据,进行方便的人机交互,触摸屏是必不可少。触摸屏按技术原理分为:电熔电感触摸屏、红外线触摸屏、电阻式触摸屏、矢量压力传感式触摸屏等。S3C2410的触摸屏采用的是电阻式触摸屏。S3C2410支持触摸屏接口,它由一个触摸屏面板,四个外部晶体管,一个外部电源,通道AIN[7]及通道AIN[5]等组成,触摸屏接口如图l所示。主要的设计流程如图2所示。

  在本设计中主要完成A/D的转换、触摸屏上触摸点坐标的显示、XY轴方向的确定以及有效坐标范围的确定。整个程序设计包括环境变量初始化、对LCD控制器和串行口的初始化以及触摸屏控制与显示程序。触摸屏的控制与显示程序包括串口数据传送、液晶显示控制、触摸屏定位、中断处理程序等。中断处理程序中又包括A/D转换、坐标计算、坐标检测、坐标存储与显示。

  3.2 键盘驱动

  3.2.1 功能要求

  考虑到设备提供的面积有限,设计5x5矩阵键盘满足实际需求。

  1)实现矩阵键盘上所定义的各个按键功能。①方向键:上、下、左、右;②功能键:确定、取消、菜单,通信、导航;③数字键:0~9;④扩展功能键:星号键,井号键;

  2)给应用程序提供接口。其中包括:

  ①按键消息包括WM_KEYD0WN消息,WM_KEYUP消息,WM_CHAR消息。②按键延时要求当用户按下某个按键(电源除外),发送第1条WM_KEYDO-WN消息。对于上、下、左、右键,按键被按下累计400 ms后,发送第2条WM_KEY_DOWN消息,此后每隔100 ms发送l条WM_KEYDOWN消息,直至按键被放开。

  3.2.2 设计步骤

  设计步骤如下:

  1)初始化:初始化主要是进行中断设置,对键盘中断、GPIO端口中断屏蔽位和挂起位进行设置。

  2)获得扫描码GetScanCode()函数。

  3)获取虚拟键值:通过修改一个影射表,影射表的内容主要是扫描码与虚拟键之间的对应关系。

  4)布设管理。

  3.3 LCD驱动

  LCD主要用于显示文本和图形信息。液晶显示屏具有轻薄、体积小、低功耗、无辐射、平面直角显示等特点。液晶显示屏按原理分为STN(超扭曲向列)和TFT(薄膜晶体管)2种。

  GDI(图形设备显示接口)是一个系统组件,它用来加载和调用设备驱动。在Windows CE中,GDI包含在图形事件用户界面中。在Windows CE中,显示驱动是一个本机驱动,那就意味着有常用的接口,这种接口会给显示接口提供一组函数集。所以将不会有比较复杂的操作。Win-dows CE显示驱动只有唯一的一个函数DrvEnableDriver()需要导出,这个函数将会在驱动加载的时候被GDI所调用,同时把函数指针返回给其它的DDI函数。开发的过程中需要注意显示设备使用的是线性的帧缓冲,这样由CPU直接控制的显示内存就需要是连续的。微软提供了一组C++类叫GPE(图形原始引擎)。对于图形的操作都是建立在这个类上。

  IntNumModes():返回显示驱动所支持的显示模式数量。

  SCODE GetModeInfo(GPEMode*pMode,int modeNo):返回具体显示模式的信息,如显示宽度和高度,一个像素用几位来表示。

  SCODE SetMode(int modeId,HPALETTE*pPalettetHandle):设置显示模式。对于不同的显示设备,我们都需要用这个函数来设置显示设备的显示模式。

  SetPointerShape():设置光标位图。

  MovePointer():移动光标。

  其他的函数接口就不一一介绍,可以参考源代码。

  4 结束语

  本文以Windows CE作为目标平台,实现了在WindowsCE驱动程序设计时,按照先确定要设计的驱动程序类型是本地驱动程序还是流接口驱动程序,再选择驱动程序开发方法使用分层驱动程序设计。实际运行表明,设计的操作系统的键盘驱动程序、触摸屏、LCD驱动、电源管理的驱动程序开发为界面程序的开发提供了一个稳定良好的环境,大大提高了开发的速度。

关键字:专家系统  驱动程序  嵌入式  Windows  CE.Net 引用地址:基于嵌入式的故障诊断专家系统驱动程序设计

上一篇:基于Linux内核模式的PPPoE优化与实现
下一篇:PGI为x86平台开发基于NVIDIA CUDA C 架构的编译器

推荐阅读最新更新时间:2024-05-02 21:09

嵌入式Linux下的LCD驱动程序设计与实现
随着嵌入式Linux的迅速发展,由于其没有昂贵的版权费,完全开放源代码,可裁减性与可移植性,因此是开发嵌入式产品的优秀操作系统平台。设备驱动程序是Linux内核的重要组成部分,运行在Linux内核底层,在内核源代码中占较大比例,驱动程序开发逐渐成为嵌入式软件开发中一项重要工作。应项目设计的需要完成了嵌入式Linux下的LCD驱动程序设计。 1 Linux下设备驱动程序 驱动程序从字面上可以理解为一类程序,这类程序的目的一般是驱动硬件正常工作,所以通常所说的驱动程序都是针对特定的硬件来编写的。Linux设备驱动程序是为特定的硬件提供给用户程序的一组标准化接口,它隐藏了设备工作的细节。Linux系统下驱动程序是运行在内核态的,是和内
[单片机]
<font color='red'>嵌入式</font>Linux下的LCD<font color='red'>驱动程序</font>设计与实现
ARM嵌入式平台的VGA接口设计(ADV7120)
大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口.三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产品中得到广泛的应用.笔者在开发基于ARM嵌入式平台的血液流变测试仪的过程中,成功地利用高性能视频D/A转换芯片ADV7120,将S3C2410自带的LCD扫描式接口转换为VGA接口,使之能够驱动VGA接口的显示器. 1 VGA接口介绍 近年来,业界制定出了众多数字化的显示接口协议,较为典型的是DVI(Digital Visual Interface).由于数字接口
[单片机]
ARM<font color='red'>嵌入式</font>平台的VGA接口设计(ADV7120)
基于ARM核的IntelTMStrongARM嵌入式系统
介绍InteltTMStrongarm的起源以及SA-1110和SA-1111之间的关系,重点介绍了SA-1110处理器和SA-1111套片的结构、功能和接口特性,给出了这两种芯片的连接关系示意图。 1 简介 StrongARM是一种性能很高,同时也可满足常规应用需要的微处理器技术。SA110处理器、SA1100、SA1110 PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。其中IntelTMStrongARMSA-1110微处理器是一款集成了32位StrongarmRISC处理器核和系统支持逻辑以及多通信通道、LCD控制器、存储器、PCMCIA控制器、通用I/O口的高集成度通信控制器。该处理器最高可在2
[单片机]
基于ARM核的IntelTMStrongARM<font color='red'>嵌入式</font>系统
高管视角:嵌入式FPGA IP正在发现更广阔的用武之地
作者:郭道正 职务:Achronix Semiconductor中国区总经理 在日前落幕的“中国集成电路设计业2023年会暨广州集成电路产业创新发展高峰论坛(ICCAD 2023)”上,Achronix的Speedcore™嵌入式FPGA硅知识产权(eFPGA IP)受到了广泛关注,预约会议、专程前往或者驻足询问的芯片设计业人士的数量超过了往届,表明了越来越多的国内开发者正在考虑为其ASIC或SoC设计添加高性能eFPGA逻辑阵列。 众多潜在用户的需求,反映了当前各行各业都在加速导入智能化技术,并利用eFPGA来在其ASIC或SoC中添加硬件数据处理加速功能,并为不断演进的算法或者标准保留可编程性。Speedc
[嵌入式]
高管视角:<font color='red'>嵌入式</font>FPGA IP正在发现更广阔的用武之地
嵌入式系统数字图像采集接口电路设计
一、引言 随着半导体技术的飞速发展,具有图像功能的嵌入式应用愈来愈多。从数码相机、可视电话、多功能移动电话等消费产品到门禁、数字视频监视等工业控制及安防产品,图像采集和处理已成为重要的组成部分之一。图像采集需要进行同步信号的处理,比通常的A/D数据采集过程复杂,电路的设计也较为困难。传统PC上的图像采集卡都是在Philips、Brooktree等半导体公司提供的接口芯片基础上,由专业公司开发生产。在嵌入式系统中不同的处理器和图像传感器的信号定义及接口方式不同,没有通用的接口芯片。另外,利用系统中的现有资源设计图像采集电路,可以减少器件数量、缩小产品体积和降低系统成本。所以,通常嵌入式系统中要求自行设计图像采集接口电路。本
[嵌入式]
借力双核 AMD有望拿下20%嵌入式处理器市场
中国台湾IPC(工业计算机)生产商日前表示,尽管英特尔目前占据x86嵌入式处理器市场70%的份额,AMD今年有望借助双核心嵌入式处理器产品的推出将其市场占有率提高至20%以上。 AMD最新宣布推出双核心Turion 64 X2 TL-52处理器,丰富完善该公司嵌入式处理器产品线。台湾IPC生产商表示,AMD面向嵌入式解决方案推出长效保固计划,向嵌入式解决方案提供商保证在5年内提供可买货源,由于Broadcom、Nvidia以及SiS已经加入这一计划,AMD今年在嵌入式市场的占有率将从去年的15%提高到20%。 德国IPC生产商Kontron指出,由于客户需要更快的处理器速度、更好的图像效果和通信处理,高性能低功耗的双核心处理器将
[焦点新闻]
使用图形化的开发环境——LabView开发嵌入式系统
传统设计模式所应对的挑战 嵌入式系统正在渗入现代社会的各个方面,广泛地应用于航空航天、通信设备、消费电子、工业控制、汽车、船舶等领域,据统计,在美国平均每个中产阶级家庭要使用40~50个嵌入式系统。巨大的市场需求推动了嵌入式系统向更高的技术水平发展。设计师们一方面采用性能更强大的嵌入式处理器如32位、64位RISC芯片取代传统的8位、16位微处理器;另一方面嵌入式系统也由单处理器单操作系统的传统结构向混合型Multi-core系统发展,通过采用多个处理器和OS提高系统并行度来提高系统运行效能,并且设计师们往往同时采用MPU、DSP和FPGA等多种可编程器件来增强处理能力,满足应用功能的升级。 嵌入式系统复杂性的不断增加给设计师
[嵌入式]
力旺和熵码宣布全球首个安全嵌入式闪存IP通过联电制程的硅验证
2022 年 6 月 28 日—— 力旺电子及其子公司熵码科技和全球半导体晶圆专工业界的领导厂商联华电子 今天共同宣布全球首个基于物理不可复制功能(PUF)的嵌入式闪存(Embedded Flash; eFlash)解决方案通过硅验证。 嵌入式闪存因多用于储存敏感数据、关键参数、韧体和程序代码,一直是资安攻击的主要目标之一。 储存在嵌入式闪存中的程序代码通常为了达到实时执行(XiP)的效率而不做加密处理,以省去解密时间,从而使攻击者有机会窃取产品机密。 熵码科技的 PUFef (前身为 PUFflash) 是一个双赢的解决方案,同时实现静态数据加密保护和实时执行。PUFef 凭借其内置的信任根 (PUFrt) 为联华电子
[嵌入式]
力旺和熵码宣布全球首个安全<font color='red'>嵌入式</font>闪存IP通过联电制程的硅验证
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved