Windows CE指南.ppt
《Windows CE指南.ppt》由会员分享,可在线阅读,更多相关《Windows CE指南.ppt(218页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Windows CE 指南Windows CE 简介n Windows CE 特性n 与桌面版OS 比较n 与其他嵌入式OS 比较WinCE 能做什么:手机WinCE 能做什么:PDA便携式多媒体设备WinCE 能作什么:汽车电子BMWCitronClarion Co.Ltd.DaimlerChryslerFiatSubaruHondaHyundaiMitsubishiToyotaWinCE 能做什么:其它n 工业控制n 机顶盒n 医疗设备n 银行ATM 系统n 放映机和大屏幕显示器n VoIP 设备n Windows CE 发展历史n 1996 年发布WindowsCE 1.0n Windo
2、ws CE.NET 4.x 被广泛应用n 最新版 Windows CE 6.0 7.0Windows CE 特点与桌面版本比较:硬件平台桌面版 Windowsn Only runs on x86 architectureWindows CEn ARM/Xscalen MIPS n PowerPC n Sparcn x86 Windows CE 特性n Windows CE 支持在多种不同的CPU 硬件平台上运行与桌面版本比较:镜像大小桌面 Windowsn Windows 3.x:2-5MBn Windows 98:400MBn Windows XP:1.5GBn 越来越大Win7、Win8n
3、 不能定制Windows CEn 最小:200KBn 网络部分大约 800KBn GWES,Shell and Apps 大约 4MB n Internet Explorer 大约 3MBWindows CE 特性n 组件化n 200 多个可选组件n 快速方便地针对特定应用系统定制OS与桌面版比较:实时性桌面 Windowsn 不具有实时性Windows CEn 线程优先级256 级n 中断嵌套n 每个线程都有独立的时钟嘀嗒n 处理优先级反转 Windows CE 特性:n Windows CE 支持实时性与桌面版比较:电源管理桌面 Windowsn 电源管理实现差Windows CEn 电池
4、供电/AC 供电n 各设备的电源使用状况n 关闭不必要的设备Windows CE 特性:n Windows CE 提供电源管理器,用来管理设备供电系统,增加电能的使用效率n Windows CE 能够减少设备的能量损耗,在系统复位、开启、休眠和挂起状态,维持和保护RAM 上的文件系统与桌面版比较:编程接口桌面Windowsn ASCII/UNICODEn 丰富的 APIn 强有力的硬件平台Windows CEn 只支持UNICODEn 部分Win32 API,MFC 等n 有限的硬件资源Windows CE 特性:n Windows CE 只支持 UNICODEn CHAR-TCHAR/WCH
5、ARn strlen-wcslenn 部分API 功能受限n 运行Windows CE 的系统通常资源受限与桌面版比较:共享源代码桌面 Windowsn 商业软件,源代码是微软的一级机密Windows CEn 开放CE 6.0 的核心源代码用户可以对它进行修改Windows CE 特性:n 源代码共享n 用户可以在“%_WINCEROOT%private”文件夹中找到公开的源代码与其它嵌入式 OS 比较:多媒体支持其它嵌入式OS:n 对音视频支持有限n 没有商业的网站浏览器Windows CEn 友好的用户界面n Windows Media Player 9,支持mp3,wav,avi,wmv
6、n Internet Explorer 6&Pocket IEWindows CE 特性:n 友好的用户界面n 强大的多媒体支持n 与桌面版 windows 相兼容n Pocket Word,Excel,PowerPoint,adobe readern Pocket MSN messengern Pocket IE,Windows Media Playern SQL Server CE editionn ACD Seen 与其它的嵌入式OS 比较:编程接口Other EOS:n 不同的编程接口n 常用的 C/C+&j2meWindows CEn Win32 APIn MFC,ATL,STLn
7、COM,ActiveXn.NET Compact Frameworkn Java VMn EVB,EVCWindows CE 特性:n 对于Windows 程序员来说容易上手n 支持多种编程语言与其它的嵌入式OS 比较:镜像大小和实时性其它嵌入式OS:n RTLinux,C/OS-II 支持硬实时n Vxworks 最小:8kn C/OS-II 最小:2kWindows CEn 非硬实时系统n 对于一些特殊的应用镜像可能过大Windows CE 优点:n 丰富的可选组件和功能n 定制方便n 易使用n 与桌面版windows 编程接口类似n 具有丰富的微软及第三方应用支持Windows CE 系
8、统结构和功能Windows CE 的结构概述n 系统架构n NK.EXEn FILESYS.EXEn DEVICE.EXEn GWES.EXEn SERVICES.EXEn Thread Migration微内核n 微内核是一个小型的操作系统核心,它为模块化扩展提供基础。n 微内核的基本原理:只有最基本的操作系统功能才能放在内核中。不是最基本的服务和应用程序在微内核之上构造,并在用户模式下执行。微内核单体内核操作系统(UNIX)微内核结构(Windows CE)微内核结构用一个水平分层的结构代替了传统的纵向分层的结构。在微内核外部的操作系统部件被当作服务器进程实现,它们可以通过微内核传递信息来
9、实现相互之间的交互。Windows CE 系统架构n Windows CE 属于比较典型的微内核操作系统。n 在内核中仅仅实现进程、线程、调度及内存管理等最基本的模块,而把图形系统、文件系统及设备驱动程序等等都作为单独的用户进程来实现。Windows CE 系统架构NK.EXEn NK.LIB+OAL.LIB=NK.EXEn 微软提供了预先编译的 NK.LIB 库文件,它的代码与CPU 指令体系结构相关而与具体的外设无关。n OAL.LIB 是OEM 层中的OAL 代码编译后的输出。n 提供:n 处理器调度内存管理n 进程创建加载n 系统内的通信机制n 中断处理n 为其他部分提供核心调用例程N
10、K.EXE OALRAM ROM/FLASHTimer INTCCPUGWES.EXEn 图形窗口事件系统(GWES)n 管理所有的图形界面处理以及用户输入n 桌面的 USER32+GDI32 作为一个单独的进程DEVICE.EXEn 设备管理器n 负责加载、卸载和管理所有不被GWES.EXE 管理的驱动程序。n 大多数功能都放在了devmgr.dll 中。n 提供所有的与驱动相关的函数实现n 在启动的时候通过注册表加载驱动程序Services.EXEn 所有服务的宿主进程n 与Device.exe 分开,负责加载系统服务的进程(FTP,TELNET,HTTP)n 用户可以添加服务n 提供AP
11、I 管理服务FILESYS.EXEn 文件系统和所有与文件相关的API 都是通过FileSys.exe 进程来管理的。n 有三个组件:n 对象存储n 存储管理器n ROM 文件系统进程和线程与调度n 进程n 线程n 调度进程概述n 进程(process)定义:是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。它是系统进行资源分配和调度的一个独立单位。n 进程通常由三部分组成:程序、数据集合、进程控制块PCB(Process Control Block)n 进程特点:n 动态性n 独立性n 并发行n 结构化进程概述n 进程与程序的联系:程序是构成进程的组成部分之一。一个进程的运行目
12、标是执行它对应的程序。n 进程与程序的区别:n 程序是静态的,进程是动态的。n 进程有创建、执行及撤销而消亡的生命周期,程序只是一个文件,存在于某种介质上。n 一个程序可对应多个进程,但是一个进程只能对应一个程序。Windows CE 进程n Windows CE(5.0)最多只支持32 个进程同时运行。每个进程占据32MB 的虚拟地址空间,也被称为一个Slot。n 在系统启动的时候,默认会启动四个进程,NK.EXE,FILESYS.EXE,GWES.EXE 及DEVICE.EXE。Windows CE 进程n Windows CE 的进程也不支持环境变量(Environment Variab
13、le)和当前目录。n 如果没有明确指明可执行文件的路径,那么Windows CE 会按照如下的顺序搜索:n 首先查找“Windows”目录n 查找根目录(“”)n OEM 所指定的搜索目录(“HKEY_LOCAL_MACHINELoaderSystemPath”)n 例如:如果MyApp.exe 的同一目录中存在MyFile.txt,那么下面的代码都是不正确的。_wfopen(L”%WINDOWS%MyFile.txt,L”w”);_wfopen(L”MyFile.txt”,L”w”);Windows CE 进程一种解决方案 TCHAR szBufMAX_PATH;DWORD dwPathLe
14、n;/得到当前程序可执行文件的完整路径 dwPathLen=GetModuleFileName(NULL,szBuf,MAX_PATH);if(!dwPathLen)return-1;/除去文件名 while(szBuf-dwPathLen!=);szBufdwPathLen+1=NULL;/拼接文件 _tcscat(szBuf,TEXT(“MyFile.txt”);/如果当前文件位于/Temp,则此时szBuf 的内容为”/Temp/MyFile.txt”Windows CE 进程n 创建进程的API 如下:BOOL CreateProcess(LPCWSTR lpApplicationNa
15、me,/可执行文件的路径和名字,不能为NULL LPWSTR lpCommandLine,/传递启动参数(必须为Unicode 字符串)LPSECURITY_ATTRIBUTES lpProcessAttributes,/不支持,设置为NULL LPSECURITY_ATTRIBUTES lpThreadAttributes,/不支持,设置为NULL BOOL bInheritHandles,/不支持,设置为FALSE DWORD dwCreationFlags,/进程加载后的初始状态 PVOID lpEnvironment,/不支持,设置为NULL LPCWSTR lpCurrentDire
16、ctory,/不支持,设置为NULL LPSTARTUPINFOW lpStartupInfo,/不支持,设置为NULL LPPROCESS_INFORMATION lpProcessInformation,/返回的进程相关的信息);/整个函数返回值为BOOL 型,当成功创建进程后,返回值为真(TRUE),否则返回假(FALSE).Windows CE 进程n 终止进程n 最好是由WinMain()或者其他主函数返回n 调用ExitThread()函数使进程的主线程退出从而终止进程n 直接调用ExitProcess()函数n 在当前进程终止另一个进程可以使用TerminateProcess()
17、线程概述n 线程(Thread)定义:有时称轻量级进程,进程中的一个运行实体,是一个CPU 调度单位。n 线程特点:n 是进程的一个实体,可作为系统独立调度和分派的基本单位。n 不拥有系统资源(只拥有从属进程的全部资源,资源是分配给进程)n 一个进程中的多个线程可并发执行。(进程可创建线程执行同一程序的不同部分)n 系统开销小、切换快。(进程的多个线程都在进程的地址空间活动)线程概述n 线程和进程的关系是:n 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。n 线程可与属于同一进程的其它线程共享进程所拥有的全部资
18、源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。Windows CE 线程n 线程是Windows CE 中最小的可执行单元。Windows CE 的调度系统只识别和调度线程。n 一个进程可拥有的线程数理论上是没有限制的,只与当前可用的内存有关。n 线程的上下文:线程占用的内存以及其他资源(如:处理器的寄存器、自己独立的栈等),这些资源构成了线程的上下文。n 线程可运行在:n 核心态:线程可访问操作系统所有的资源(可访问核心态的2GB 虚拟地址空间)。一般来说,操作系统线程和中断服务例程运行在核心态。n 用户态:应用程序和设备驱动程序的中断
19、服务线程运行在用户态。Windows CE 线程n 创建线程的API 如下:HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpsa,/不支持,设为NULL DWORD cbStack,/线程栈的大小,通常被设置为NULL,使用默认值 LPTHREAD_START_ROUTINE lpStartAddr,/指向线程的执行函数的指针 LPVOID lpvThreadParam,/向线程中传递一个参数 DWORD fdwCreate,/控制线程创建的附加参数 LPDWORD lpIDThread/返回新创建线程的ID);如果线程创建成功,那么函数返回新创建线程的
20、句柄;否则函数返回NULL。Windows CE 线程n 结束线程n 最好是从线程的执行函数返回n 在线程中调用ExitThread()函数可以使线程结束执行n 在当前线程中终止另一个线程调用TerminateThread()函数Windows CE 调度n Windows CE 是一个抢占式多任务(Preemptive Multitasks)操作系统。调度程序使用基于优先级的时间片算法对线程进行调度。n Windows CE 中每个线程都有一个优先级,Windows CE 调度系统根据线程的优先级进行调度。n Windows CE 将线程分为256 个优先级。0 表示优先级最高,255 表示
21、优先级最低。096-优先级高于驱动程序的实时程序使用248255-基于Windows CE 的驱动程序153247-优先级低于驱动程序的实时程序使用248255-非实时的普通应用程序线程优先级分布图(例)Priority Component0-19 Open Real Time Above Drivers20 Graphics Vertical Retrace99 Power management Resume Thread100-108 USB OHCI UHCI,Serial109-129 IRSIR1,NDIS,Touch130 KITL131 VMini132 CxPort145 PS
22、2 Keyboard148 IRComm150 TAPI248 Power Management249 WaveDev,Mouse,PnP,Power250 WaveAPI251 Normal252-255 Open-ApplicationsWindows CE 调度n 获取和设置线程的优先级n GetThreadPriority 当前线程的优先级n SetThreadPriority 改变当前线程的优先级(248255)n CeGetThreadPriority 得到当前线程的优先级n CeSetThreadPriority 改变当前线程的优先级Windows CE 调度n 时间片大小(Qu
23、antum):在线程获得处理器后,会执行特定的一段时间,然后重新调度,这段时间称做时间片大小。n 默认的时间片是 100 毫秒,OEM 可以在OAL 中重新设置n 获得时间片大小的APIDWORD CeGetThreadQuantum(HANDLE hThread);此函数以线程的句柄为参数,返回值是一个32位无符号整数,代表线程的时间片大小。Windows CE 调度n 线程的状态n 运行(Running)线程正在处理器上执行。n 就绪(Ready)线程可以执行,但是此刻没有占用处理器。如果就绪的线程被调度程序选中,则占用处理器就进入运行状态。n 挂起(Suspended)创建线程时指定了C
24、REATE_SUSPENDED 参数或者调用SuspendThread()函数都可导致线程挂起。n 睡眠(Sleeping)调用Sleep 函数可使线程进入睡眠状态,处于睡眠状态的线程不能占有处理器。当睡眠时间结束后,线程转入就绪态。n 阻塞(Blocked)如果线程申请的共享资源暂时无法获得,那么线程就进入阻塞状态,处于阻塞状态的线程不能占有处理器。n 终止(Terminated)线程运行结束。Windows CE 调度n 线程的状态转换图就绪终止阻塞睡眠运行挂起运行结束 运行结束睡眠结束 睡眠结束得到 得到资源 资源Resume ResumeSuspend Suspend得到 得到CPU
25、CPU上下文 上下文切换 切换Sleep(n)Sleep(n)Windows CE 调度n 线程A 拥有最高的优先级,他会一直执行直到结束或阻塞n 线程B 和C 使用时间片轮转算法(Round-Robin,RR)运行l 线程的调度Windows CE 调度n Windows CE 调度系统的特点n 具有高优先级的进程如果处于就绪状态,则总是会被调度系统选中执行n 如果系统中存在多个优先级相同的就绪进程,这些进程以时间片轮转算法调度n 如果线程的时间片大小被设置为0,那么它会一直占用处理器运行,直到线程结束或者进入阻塞、挂起及睡眠状态Windows CE 调度n 优先级反转(Priority I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows CE指南 CE 指南
限制150内