第 9 章开发应用实例
DESCRIPTION
第 9 章开发应用实例. 9.1 概述 随着现代物流业仓储、超市等行业的快速发展,物品流动的速度越来越快,仓储库存周期也越来越短。这样物流仓储盘点行业的压力也越来越大,传统的人工盘点方式已经不能适应现代物流的发展。为了解决这一问题,国际上一些物流先进国家已经采用专业的盘点设备 —— 盘点机,用于物流盘点。 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/1.jpg)
1
第 9章开发应用实例9.1 概述 随着现代物流业仓储、超市等行业的快速发展,物品流动的速度越来越快,仓储库存周期也越来越短。这样物流仓储盘点行业的压力也越来越大,传统的人工盘点方式已经不能适应现代物流的发展。为了解决这一问题,国际上一些物流先进国家已经采用专业的盘点设备——盘点机,用于物流盘点。 我们在设计时采用了目前流行的嵌入式微处理器作为系统核心部件。其微处理器选型是采用韩国三星公司生产的 S3C2410 微处理器,操作系统采用了 Windows CE .NET 4.2 嵌入式操作系统。整个系统的硬件部分主要分为三个大的模块:核心板、系统板和专用键盘及 LCD 显示器。
![Page 2: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/2.jpg)
2
在核心板上集成了微处理器、 64MB SDRAM 和 64MB NAND Flash 模块及部分支持电路。在系统板上设计有与核心板连接的接口,同时又集成有显示器接口,以太网接口, USB 接口,串口, CF 卡和 IrDA 条形码扫描接口等各种外设及以相应的控制部件,另外还有电源管理与转换等一些附属电路。 31 键的专用键盘是采用超低功耗的 MSP430 单片机作为控制器来对键盘进行编解码,通过自定义的串行键盘口接入系统板。显示部分是采用 192*64 LCD 字符型显示器。
本章首先介绍了系统硬件部分设计及工作原理,在软件部分介绍了 Windows CE 操作系统的移植和定制,驱动程序和支持软件的编制。盘点机除了支持常用的设备,还需要支持串口条形码扫描仪, CF卡等设备。
![Page 3: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/3.jpg)
3
实物图片
便携式盘点设备外观
![Page 4: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/4.jpg)
4
9.2 硬件平台的设计 嵌入式设备的硬件架构一般都是以嵌入式微处理器为核心,通过处理器接口扩展以及系统硬件的支持,把众多的外设单元集成到整个系统中,并通过 CPLD 等逻辑转换器件和其它硬件电路完成对外设模块进行读写和控制操作。
物流盘点机系统硬件原理框图如图 9-1abc 所示,硬件部分主要包含有核心板,系统板和专用键盘及 LCD 显示器三个部分。
1)系统核心板简介 核心板是整个系统的核心,集成了盘点机系统的微处理器、 SDRAM 单元、 NAND Flash 单元以及它们所需要的辅助部件,如晶体振荡器( 12MHZ和 32KHZ 两组),电源模块等等。核心板图和 PCB 板图如图 9.1b,c 所示。
![Page 5: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/5.jpg)
5
·图 9.1a 硬件平台示意图
S3C2410
以太网网卡CS8900
NANDFLASH
SDRAM
CF Card
Audio
LCD显示器
RS232
键盘
USB扫描仪
![Page 6: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/6.jpg)
6
2) FlashROM 程序存储器 在核心板中,微处理器采用的是基于 ARM920T 核的 S3C2410 微处理器。系统的程序存储器采用的是 NAND Flash ,芯片的型号是 Samsung公司的 K9F1208,容量为 64MB , NAND FlashROM 接口电路原理如图 9-2 所示。
它按页进行自动编程,每一页大小为 528 ( 512+16)字节,编程的典型时间为 200µs 。擦除则按照块进行,每一块的大小为 16K字节,典型的擦除时间为 2ms 。它在页面中读取单个数据的时间为 50ns 。 K9F1208 总共有 48个引脚,起作用的只有 8 根 I/ O口线、读写控制线和电源线等。 I/ O口是地址、命令输入和数据输出/输入的复用端口。 K9F1208还提供了 ECC错误纠正码,实现坏区检测以及实时映射,这样它具有高达 10万次的编程/擦除周期,数据保存长达 10年。在 S3C2410内部集成有 NAND Flash 控制器,可以在硬件上直接与 NAND Flash 相连。在盘点机中, NAND Flash被用作装载操作系统镜像以及大容量的数据存储,同时也是系统启动存储器。
![Page 7: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/7.jpg)
7
图 9.1b 核心板部分的示意图 核心板是整个系统的核心,集成了盘点机系统的处理器, SDRAM 单元, NAND Flash单元以及它们所需要的辅助部件
![Page 8: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/8.jpg)
8
图 9.1c 核心板 PCB 图( 6层)
![Page 9: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/9.jpg)
9
图 9-2 NAND FlashROM 的原理图
![Page 10: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/10.jpg)
10
3) SDRAM 随机存储器 SDRAM被用来运行操作系统以及各类数据的缓存,图 9-3 是核心板 SDRAM 接口部分的原理图,系统采用两片 HY57V561620 16M×16Bit SDRAM芯片,共同组成 32Bit 数据宽度, 64MB内存。
HY57V561620 是一款 4Banks×4M×16Bit的 SDRAM芯片,采用 3.3V电源供电,比较适合嵌入式系统。 SDRAM 与其它的 RAM 相比,有许多独特的优点,容量大,功耗低,速度快,最快可以工作在 166MHz 频率下,通常存储时间为 10ns 。在高速存储系统中 SDRAM 是必不可少的外部存储设备。 SDRAM 通过 S3C2410 片内的 SDRAM 控制器来管理, SDRAM挂接在 BANK6 上。
![Page 11: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/11.jpg)
11
图 9-3 核心板 SDRAM 部分的原理电路图
![Page 12: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/12.jpg)
12
4)核心板电源 图 9-4 是核心板电源部分的原理电路图。图中,采用 MIC5207电源芯片将来自系统板的 3.3V电压转换为两组 1.8V电压供给处理器内核使用。核心板上还有一些辅助电路,包括上拉电阻,滤波电容,以及供处理器使用的主时钟晶振,供外设适用的辅助时钟晶振等,它们一起构成了 ARM 的最小硬件系统板。系统所使用的 S3C2410 处理器是一款 FBGA封装的高速处理器,运行时钟频率为 203MHz,这种 FBGA封装的高速处理器需要使用多层电路板设计。本系统核心板工作在高速信号下,为了布线方便,减少干扰,采用了六层电路板设计,第二层为接地面,四层为电源面,其他各层为信号层。核心板通过标准 144芯 SIMM插座与母板连接。核心板是一个最小的 ARM9 硬件系统板,具有较好的通用性,可以作为不同产品开发设计的基础。
![Page 13: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/13.jpg)
13
图 9.4 电源原理图
![Page 14: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/14.jpg)
14
9.2.2 系统板(应用板)的组成与工作原 系统板起两方面的作用,一方面对核心板提供支持。如为核心板供电,提供外设到核心板的连接,另一方面为各种外设提供了接口。系统板主要集成有 RJ-45网络接口、 USB 主/从设备接口、串行接口、 LCD 显示器接口、 CF卡接口、键盘等接口电路。同时,还有包含有一些相应的控制转换电路(如可编程器件 CPLD)和电源管理部分。核心板和母板之间采用标准 SIMM插槽连接,外设和系统板之间采用相应的外设接口连接。其中可编程器件 CPLD 采用的是 Altera 公司的 EPM3032ATC44-10 的 CPLD芯片。 CPLD 器件可以实现高速的 FIFO 或者利用其灵活的可编程性,可以作为核心板与外部其他功能模块的通用接口(如实现了一个 IDE 接口)。因为S3C2410 本身没有 CF卡(半导体辅助存储器中的一种)接口,所以为了连接 CF卡,必须采用转换接口。实际系统中采用了总线接口的 IDE 接口转换为 CF卡接口。
![Page 15: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/15.jpg)
15
系统板上的网络接口芯片采用 CS8900 网络接口芯片。 CS8900芯片是 Cirrus Logic 公司生产的一种局域网处理芯片,它的封装是 100-pin TQFP ,内部集成了在片 RAM 、 10BASE-T收发滤波器,并且提供 8位和 16位两种接口。本系统中采用 16位接口方式。以太网接口原理图如图 9-6 所示,图中 HR601627是一种脉冲变压器,在 CS8900 的前端对网络信号进行脉冲波形变换。
![Page 16: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/16.jpg)
16
图 9.6 CS8900 网络接口原理图。
![Page 17: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/17.jpg)
17
系统采用了一款专用显示器——192×64 型 LCD 显示器。该显示器是一种图形点阵液晶显示器,它主要由行驱动器、列驱动器及 192×64全点阵液晶显示器组成。可完成图形显示,也可以显示 12×4 个 ( 16×16 点阵 ) 汉字,采用 3.3V电源供电,与处理器接口采用 8 位并行输入输出数据总线和 8条控制线。 S3C2410 处理器内部集成了 LCD 控制器,但是该控制器不支持用户选定的显示器,只能采用其他方式接入该款显示器,实际采用的是直接挂接到处理器的通用 I/O口上的方式。
![Page 18: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/18.jpg)
18
S3C2410 中集成了 3.3V TTL 电平的串行接口,可以直接使用。为了与标准 RS232C 串行设备通信,采用了一块 SP3243芯片用于电平的转换,构成了一个比较完整的串口。
在盘点机的实际应用中,需要外接串行口的条形码扫描仪,该扫描仪采用标准串口 9针 D 型插座,工作时需要通过串口第九针外接 5V电源。为了方便使用该款扫描仪,设计时对串行接口进行了改进,在串口第九针上采用电子开关叠加可控的 5V电源。在作为标准串口使用时, 5V电源和第九针断开。当外接扫描仪时第九针接入 5V电源,驱动扫描仪正常工作。串口第九针是否接入 5V电源在串口驱动程序中实现,应用程序通过串口设置系统调用函数来控制,接口电路如图 9-8 所示。
![Page 19: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/19.jpg)
19
图 9-8 串行接口电路
![Page 20: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/20.jpg)
20
本系统中所用的设备较多,其中很多设备需要复位信号来保证正常可靠的复位。为此,在系统板上设计了复位信号模块,该模块采用电阻、电容和二极管构成一个简单适用的复位电路,在此基础上采用 74HC17 芯片进行波形调整、信号取反继而生成符合设备需要的高、低电平两组复位信号,供整个系统使用。复位电路的原理图见图9-9 所示 。
S3C2410 处理器片内集成有 USB 接口,故系统板只是简单的将此信号引出。
![Page 21: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/21.jpg)
21
图 9.8 复位电路原理图
![Page 22: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/22.jpg)
22
盘点机的输入信号则采用外接的串口键盘手动输入和串口条形码扫描仪读入方式。串口键盘为自行设计的,适合盘点业需要的专用键盘,键盘采用了一款 16位低功耗单片机——MSP430 进行管理。
使用盘点机的目的是为了提高盘点效率,对于盘点人员而言,使用最多的就是扫描仪和键盘。扫描仪上只有一个按键,使用简单。由于键盘的效率对于提高盘点的效率非常重要,所以在盘点机系统中设计一款最合适盘点使用的键盘是提高盘点效率的重要一环。盘点机是一款便携式设备,键盘不可能做得很大,另一方面为了便于盘点人员实现盲打,按键的大小不能太小,特别是频繁使用的按键还应该比计算机标准键盘略大。在这种情况下,按键的个数就有所限制,经过大量实践,最终的键盘设计采用了 31键的方案。其中字母和数据键在一般情况下作为数字键使用,配合 Shift 按键输入字母,图 9-10 为键盘部分的框图。
9.2.3 专用键盘的设计
![Page 23: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/23.jpg)
23
同时,为了使用方便,键盘上还设置了系统休眠、唤醒按键,与键盘接口一起通过排线接入系统板。键盘所用的控制器为 MSP430F149 ,这是 TI 公司推出的一种具有 16位 RISC结构、超低功耗的工业级混合信号控制器。这些控制器被设计为可用电池工作,而且可以有很长使用时间的应用。 CPU 中的 16 个寄存器和常数发生器使 MSP430 微控制器能达到最高的代码效率,灵活的时钟源可以使器件达到最低的功率消耗,数字控制的振荡器( DCO )可使器件从低功耗模式迅速唤醒,在少于6µs 的时间内激活到活跃的工作方式。程序中使用 MSP430F149 的外部中断 I/O口作为键盘扫描的信号线,经过编码后,通过片内内置的串口输出到系统板。该芯片在1.8-3.6V电压, 1MHz的时钟条件下运行,耗电电流在0.1-400µA之间(因不同的工作模式而不同)。 CPU 平时至于节电模式,按键时触发中断信号, CPU立即被唤醒,处理完键盘事件后, CPU再次进入省电模式。
![Page 24: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/24.jpg)
24
图 9-10 为键盘部分的框图
MSP430F149
4*8矩阵键盘
串行键盘接口
![Page 25: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/25.jpg)
25
系统 板图 10M以太网网卡 CS8900 条形码扫描仪
RS232接口
网络传输RJ45接
口
JTAG调试接口
键盘RS232接
口
LCD显示器
接口
电源模块MAX603
![Page 26: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/26.jpg)
26
9.3 软件系统的设计 系统的软件系统主要包括嵌入式操作系统选型、定制及裁减、
硬件驱动程序和用户应用程序方面。 9.3.1 操作系统的定制与实现 Window CE 具有良好的图形交互界面,便于开发调试上层图形
应用程序,所以本便携式盘点机的操作系统选用了 Windows CE 。 Microsoft Windows CE .NET 是支持多平台的、可定制的 32位
嵌入式操作系统。支持多线程、完全抢占执行和多任务。不仅适用于工业上的嵌入式设备,同时支持高度便携性的个人计算设备,如掌上电脑、 PDA 和移动通信设备等。 Windows CE .NET 在设计上采用完全的模块化结构,可以根据硬件平台和应用目的灵活的进行定制。对于应用程序的开发者来说, Windows CE .NET 提供了同 Windows 环境相似的各种开发环境。 Microsoft Win32 API 、 ActiveX 控件、消息队列、 COM 接口、 ATL 和 MFC ,这对于提高编程者的效率和从其他 Windows 平台上移植成功的应用程序很有好处。 Windows CE .NET 内建了对多媒体、通信( TCP/IP 、 SNMP 、 TAPI 等)和安全的支持,并且提供了 Windows 用户熟悉的常用的应用程序。 Windows CE 通过 ActiveSync 实现了目标设备同台式计算机之间的通信。
![Page 27: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/27.jpg)
27
1) NAND FlashROM 存储空间的分配 系统核心板上使用 NAND FlashROM芯片内部分为 4个平面,每个平面包含 1024 个块,每块包含 32页,每页 512 字节。芯片的读写以页为单位,擦除以块为单位。故存储器的分配以块为单位 (16KB)。存储器分为两个大小相同的大区 ,即系统区和用户区,均为 2048块。用户区供用户保存用户程序和数据使用。系统区又具体分为三个区段:
( 1) NBoot 区( 0-1 块): 大小为 2块( 32KB),其前 4KB 是系统启动代码,用于引导 EBoot (调试状态)或者 Windows CE(发行状态)内核,其他部分可以保存启动中可能需要的程序或者数据。
( 2) EBoot 区( 2-8块): 大小为 7块( 112K ),一般在调试时使用,主要作用是格式化 NAND Flash ,通过网络下载 Windows CE内核等。
( 3) Windows CE区(其他块):保存 Windows CE 的系统文件。
9.3.1 Win CE 操作系统的定制和实现
![Page 28: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/28.jpg)
28
2) Win CE 操作系统的定制和实现
搭建基于 Windows CE 操作系统的平台需要完成以下主要步骤:( 1)导入和硬件平台相关的 .cec文件;( 2)利用标准开发向导,根据 Windows CE 的架构创建一个平台;( 3)利用附加项和目录特征客户化平台;( 4)为特定的目标设备创建一个自引导程序和板级支持包( Board Suport Package );( 5)加入 BSP文件编译操作系统镜像文件,通过以太网将镜像文件下载到目标设备,并调试平台。( 6)平台搭建并调试成功,为平台应用程序开发者导出软件开发工具包( SDK )。
这样程序开发者就可以利用 EVC 开发应用软件了。
![Page 29: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/29.jpg)
29
通常,在开发平台的时候,首先将 OS镜像文件下载到一个硬件平台,比如基于 PC 硬件的 Windows CE 开发平台( CEPC )。 Platform Builder 包含了 CEPC 和很多其他硬件开发平台的自引导程序和板级支持包( BSPs)。在硬件开发平台上把平台提炼和调试之后使之适合目标设备的要求。在下载镜像文件到目标设备前要先创建自引导装入程序和原始设备制造商( OEM)适应层( OAL)。
OAL 是介于内核和目标平台固件之间的一个层。为了使 Windows CE 系统能够运行在多种硬件平台上,微软又提出了一个新的概念—— OEM 适配层 (OAL)。这个OEM 适配层 (OAL)处于 Windows CE内核和硬件平台中间,它可以将特定设备的硬件特性与 Windows CE内核功能隔离开,从而使 Windows CE 的内核可以通过这个硬件隔离层提供的标准抽象接口来实现与硬件平台的通讯。OAL 的存在可以隐藏各种与硬件有关的细节,屏蔽不同平台硬件的差异,保证 Windows CE 上层内核的独立性,从而增强了整个系统的可移植性。
![Page 30: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/30.jpg)
30
这一特性对于 Windows CE 上层应用设计的程序员来说无疑是一个福音,但是对于 Windows CE 在特定平台的移植以及底层硬件驱动设计的开发者来说,却面临着巨大的困难。面对一个结构复杂、功能强大、设计先进的操作系统,如何全面认识 OAL 设计结构、如何实现 OAL 与特定硬件平台正确交互以及如何建立 OAL 与上层内核连接等关键技术,在系统设计和移植时都是一个严峻的考验。 OAL提供的功能与底层硬件的控制和通信密不可分,不同的硬件平台会有不同的 OAL 实现。与其它处理器平台移植一样, S3C2410 处理器的 OAL 需要在系统体系结构、板级支持包( Board Support Package )两个层面实现。
本系统采用的处理器是 S3C2410 处理器,这是一款基于 ARM V4版本的处理器,在定制操作系统过程中采用了 ARM V4类型的 BSP 。在此基础上,加载开发的本地驱动程序导出的 .cec文件到 Platform Builder 的 Catalog栏下,作为可选组件供操作系统选择。
![Page 31: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/31.jpg)
31
由于 Windows CE内核通常为 20M-30M 字节,在调试机器时要经常地将如此巨大的数据下载到 RAM 中,传输效率是最关键的问题。 Platform Builder 的下载服务提供了四种方式:
( 1)实时仿真下载服务:它启动仿真器并且在仿真器上引导操作系统的镜像文件。仿真下载服务不需要通讯硬件,因为仿真器是在开发工作站上运行的。这是 Platform Builder 4.0版本开始提供的一个新技术。仿真器比目标设备硬件有着更高的容错性。可以监控目标板程序运行的各种状态。
( 2)以太网下载服务:它通过以太网连接利用 Windows CE 的自引导装入程序( EBoot )下载操作系统镜像文件。这种服务方式需要在开发工作站上有一个以太网卡,目标机上一个调试用的以太网卡。利用以太网下载服务,所有连接到目标设备的应用程序和工具都可以通过一条简单的网线来通讯。
![Page 32: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/32.jpg)
32
( 3)并行下载服务: 也利用 WinCE 的自引导程序,然后通过并行口连接下载操作系统的镜像文件。但是,在并行下载服务里没有与之对应的内核传输。
( 4)串行下载服务:串行下载服务是通过串行口由 Win CE 自引导装入程序通过串行口连接下载操作系统镜像文件。在这种服务里,无法在运行时配置设备方的设置。但是可以修改并重新编译操作系统镜像文件代码来改变波特率。如果采用串口下载,假设采用最高传输速率 115200bps ,那么在 20M 的数据下载则需要大约 23 分钟,故所需时间较长。
在实际系统开发过程中,用以太网连接来下载操作系统的镜像文件。系统自引导装入程序( EBoot )与运行在开发工作站上的 Platform Builder 通信,下载镜像文件和设置调试服务。以太网连接通过以太网服务可以提供更快的传输速度和更有效的集成功能。串行连接和并行连接相对以太网连接速度慢,效率比较低,只在监视调试过程的时候偶尔用上。
![Page 33: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/33.jpg)
33
3) Windows CE 的启动过程( 1)在核心板上,将系统设置为 NAND FlashROM启动方式,即 OM[l : 0]设置为 00;( 2)上电复位后,系统自动将 NAND FlashROM内的前 4KB 字节( NBoot )拷贝到 boot SRAM 中,执行 boot SRAM 中代码。如果需要( NBoot > 4KB),将 NBoot 区数据拷贝到 SDRAM 中,再执行 NBoot;( 3)如果设置为调试状态, NBoot 将 EBoot 区数据装入SDRAM ,执行 EBoot, EBoot程序按照用户的指令通过以太网下载 Windows CE镜像文件,并将镜像文件写入 Windows CE区段;( 4) NBoot 或者 EBoot 将 Windows CE区段数据装入 SDRAM ,引导 Windows CE 操作系统。
![Page 34: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/34.jpg)
34
本系统配置为 NAND FlashROM启动,系统上电复位后, boot SDRAM被映射到地址 0x00000000 ,系统自动将 NAND Flash 中的前 4KB代码拷贝到 boot SDRAM 中,开始执行 boot SRAM 中的代码,即 NBoot程序。系统执行的第一行代码即为 NBoot的第一行代码。 NBoot的功能比较简单,只是用于初始化系统,将复杂的系统软件装入 SDRAM ,之后就交出控制权。
![Page 35: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/35.jpg)
35
9.3.2 盘点系统驱动程序的开发 1) Windows CE 驱动模型 要把 Windows CE 移植到目标平台上,必须为在硬件平台上的硬件设备提供驱动程序。通过设备驱动程序可以将操作系统和外部设备连接起来,使得操作系统能够识别这些设备,并为应用程序提供设备服务。就像其它操作系统一样, Windows CE 支持广泛的基于各种 CE 平台的设备驱动程序,同时也提供一些用于驱动程序开发的模型 (model)。
![Page 36: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/36.jpg)
36
Windows CE 的设备驱动设备模型有两种形式:流接口驱动 ( Stream Interface Driver )和本地设备驱动( Native Device Driver )]。两者的差别在于它们向上层提供的编程接口不同,流接口驱动提供一组统一格式的流接口,而本地设备驱动则根据具体设备的需求提供相应合适的接口。所有的设备驱动都是以动态链接库( DLL )的方式实现和加载。 Windows CE 中的许多模块都可以管理设备驱动程序。例如与用户界面有关的 GWES 模块管理键盘、鼠标、显示和电源等驱动程序;设备管理 ( Device Manager ) 根据注册表中的内容管理注册过的设备驱动程序,如串口驱动。
在盘点机系统中,内部建立了设备的驱动程序,如显示设备 LCD ,采用本地设备驱动方式,通过移植定、制微软提供的驱动例程实现。其它外部设备,如串口、USB Client ,采用流接口驱动实现。通过已经定义好的流接口函数应用程序可以用文件访问的方式访问接口设备,如用户可以像文件操作一样读写串行口。
![Page 37: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/37.jpg)
37
2)电源管理 移动设备的电源管理方式会对用户使用移动设备产生很大的影响,因此在 CPU 及电路提供了电源管理硬件支持的基础上,在操作系统中采用一套有效的电源管理方案也是非常重要的。当成功的运行电源管理模块时,移动设备用户可以在任何时候长时间便利的使用移动设备,而不会意识到在任何时间都有一个复杂的工程系统正工作在设备内以保持电池电量。由于移动手持设备在硬件资源和系统结构的特殊要求,同传统的 PC 机相比嵌入式操作系统对移动设备的电源管理需要不同的方法。下面以 Windows CE .NET 为例介绍在嵌入式操作系统中电源管理的方案设计。
![Page 38: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/38.jpg)
38
Windows CE.NET 是通过电源管理器来进行系统的电源管理,提高整个系统的电源效率,并为每一个外围设备模块提供电源管理。通过电源管理不仅可以减少目标设备上的电源损耗,而且可以在系统重启、运行、空闲和挂起的电源状态下保存 RAM 中的文件系统。电源管理器会同三种不同的客户端程序发生作用,对于这三种客户端电源管理器提供了不同的编程接口。
其一电源管理器相关的设备驱动程序。其二是可以改变系统电源状态或者改变设备性能的应用程序,如一些需要改变系统时钟频率的应用。
其三是在电源相关事件发生时需要得到通知的应用程序以及影响系统的电源状态的改变的应用程序,例如电池电量低时发出警告的程序。
![Page 39: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/39.jpg)
39
完善的系统电源管理需要每个外设模块的硬件设计以及驱动程序的支持。支持电源管理的设备驱动程序需完成确保可以在系统枚举时正确报告其电源管理能力,处理电源管理器发出的电源请求,在系统启动和从空闲模式退出时尽可能快的完成设备上电过程,在系统关机或进入空闲模式时使设备下电或进入睡眠模式,对于支持唤醒能力的设备完成设备的唤醒功能等任务。对于每一个设备用户都可以在注册表中注册设备驱动所支持的电源状态。设备的电源状态与系统的电源状态应有一定的对应关系,且受系统电源状态定义的限制。
![Page 40: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/40.jpg)
40
3)键盘驱动程序的实现 标准 Windows CE 支持两种类型的键盘: PS/2键盘和矩阵键盘。本项目的键盘为串行接口,实际占用的是 UART1 ,与两种标准类型都不匹配。分析两种标准 Windows CE 键盘接口之后,决定在矩阵键盘模型的基础上进行修改,编写驱动程序,满足本项目的需求。
Windows CE 系统中断模型分为两个部分, ISR和 IST 。 Windows CE 也提供了 OAL层供用户使用,键盘驱动建立在 OAL 和中断模型的基础上。具体如下:
![Page 41: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/41.jpg)
41
( 1) 将 UART1配置为键盘接口; ( 2) 修改 OAL层中的系统中断映射代码,将 UART1的硬件中断映射为逻辑键盘中断( SYSINTR_KEYBOARD);
( 3)在键盘中断驱动程序中注册键盘 IST 的中断映射为 SYSINTR_KEYBOARD ,将 SYSINTR_KEYBOARD映射到事件 EVENT_KEYBOARD 上,等待键盘事件发生;
( 4) EVENT_KEYBOARD事件被触发后,在底层驱动模块中读取串口键盘代码,填充键盘码和按键状态所需的数据,提交给上一级模块;
( 5 ) 键盘管理模块中修改扫描码到虚键码的转换表,完成扫描码到虚键码的转换。
按照 Windows CE标准的键盘驱动结构编写键盘驱动程序,编译之后的 DLL 程序挂入 Windows CE 系统,键盘即可正常工作。注意,本系统中小键盘的编码工作由键盘本地的控制器( MSP430)来完成。
![Page 42: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/42.jpg)
42
键盘驱动程序KeybdIstLoop(KEYDB_IST *pKeyDBIst)
struct KEYBD_IST { HANDLE hevInterrupt; DWORD dwSysIntr_Keybd; UINT uiPddId; PFN_KEYBD_PDD_GET_KEYBD_EVENT pfnGetKeybdEvent;
PFN_KEYBD_EVENT pfnKeybdEvent;}
![Page 43: 第 9 章开发应用实例](https://reader030.vdocuments.net/reader030/viewer/2022012406/56815465550346895dc27e53/html5/thumbnails/43.jpg)
43
9.3.3用户应用程序的开发 因为系统采用了一款专用的非标准显示器,分辨率为 192*64 点,无法运行 Windows CE 的图形界面,故需要专门编写出一整套管理界面供用户使用。用户对界面的要求实类似 Dos 的界面,功能要求如下:
( 1)系统管理 包括声音设置,日期 /时间设置,键盘设置,各种系统自检;
( 2)文件管理 包括文件的浏览,查找,删除,上穿,运行,编辑等;
( 3)网络配置 包括 IP地址的设定以及与服务器的同步等;
( 4)系统重启与版本说明等。 各个功能程序的编制在 Embedded Visual C++ 4.2环境中完成,开发环境和桌面系统 Visual C++ 6.0 的环境类似,在此不再说明。