WINCE6.0体系结构学习

2024-02-12 13:32

本文主要是介绍WINCE6.0体系结构学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WINCE6.0的体系结构图如下图所示:

 

图1 WINCE的体系结构

根据上图可以把WINCE6.0体系结构分为硬件层、OEM层、操作系统层和应用层,这四层紧密合作,相互配合来完成从应用程序的调用到对硬件的操作和交互。

 

1.      硬件层

硬件平台的核心是嵌入式处理器,而嵌入式处理器的种类很多,处理能力和主频的速度各有差异,如果要跑WINCE操作系统,需要处理器包含MMU单元。WINCE6.0支持的ARM、MIPS、x86、SHx这四种CPU体系,在这点上嵌入式linux支持更多CPU体系结构的处理器。

2.      OEM层

OEM(Original Equipment Manufacturer,原始设备制造商)层位于WINCE的操作系统层和硬件层,主要的作用是对硬件进行抽象并且提供统一的接口让操作系统来和硬件交互。OEM层主要包括OAL(OEM Abstraction Layer,OEM抽象层)、bootloader、配置文件和驱动程序。

 

3.      操作系统层

 

由图1可知操作系统层包括Coredll、文件系统、GWES、设备管理器、驱动(分为用户模式和驱动模式的驱动)、services服务和内核(Kernel)这些部分组成。

3.1 Coredll

coredll.lib,Coredll模块为其他WINCE模块提供核心(core)功能,此模块是WINCE操作系统的一个不可或缺的模块,但它不一定需要所有的组成部分。Coredll模块包含配置OS的结构体、宏定义、函数等重要的内容,这些信息定义在Celog.h、Pkfuncs.h、Pwinreg.h、Pwinuser.h和Windbase.h头文件中,为了引入(import)这些功能,必须链接coredll.lib文件。

Coredll模块包含很多部分,比如battery、cormain等部分,这些部分都是以lib的形式提供,具体看help文档Developing an OS Design->Windows Embedded CE Moudules and Components->Common Windows Embedded CE Modules下的介绍。

WINCE有一个重要的设计思想就是所有的应用程序都不能直接与操作系统或是硬件打交道,如果应用程序需要访问WINCE提供的服务,就只能通过coredll.dll来进行,也就是说如果我们要调用system API时不能直接调用,而是先转到coredll.dll,由它帮我们去调用system API的。另外,WINCE系统除了有system API,同时也提供application API(类似于桌面windows系统的WIN32API),开发者可以通过比如是LoadLibrary(TEXT("winsock.dll"))或在sources文件的链接目标库包含winsock.lib的方式来调用这些application API,比如还有Wininet.dll、Msml.dll和Winhttp.dll等。

 

3.2 文件系统(filesys.dll)

Filesys.dll主要实现文件系统和存储管理

 

图2 filesys.dll的功能架构

 

3.3 GWES(gwes.dll)

WINCE把微软WIN32 应用编程接口(API)、用户接口(UI)和图形设备接口(GDI)的库整合到图形窗口和事件子系统模块(GWES)中,GWES是用户、应用程序和OS之间的接口,它支持构成WINCE用户接口的所有窗口、对话框、控件、菜单和资源,还提供了光标、位图、文字和图标信息,GWES负责加载及管理HID驱动、显示驱动和键盘驱动。

 

3.4 设备管理器(device.dll)

设备管理器被kernel加载并且一直运行,它负责加载、卸载和管理设备驱动及他们的接口,当设备管理器加载的时候,它同时加载I/O资源管理器来从注册表中读取可用资源列表。

 

 

4.      应用层

从系统的角度来看,每个应用程序都是WINCE中的一个单独的进程,应用程序运行在优先级较低的权限下它使用操作系统提供的Win32 API来进行系统调用基交互。

这篇关于WINCE6.0体系结构学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/702678

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;