这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面,只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识,解决大家会在实际开发中碰到的一些小问题,让大家了解嵌入式开发与应用程序开发,到底有哪些不同。

Windows CE概述

6.0版本开始,Windows CE的名字改为Windows Embedded CE,当然这也是为了结合Windows Embedded品牌作出的改变。CE经过了十年的风风雨雨之后,终于在CE 6.0这个版本上再次浴火重生了。CE 6.0经历了CE历史上第二次内核重写,使CE操作系统更加符合当今嵌入式开发的方向。

CE 6.0在内核方面的改变主要是为了适应嵌入式设备硬件发展的要求,在进程数量方面,从过去最多运行32个进程,改变为最多运行32千个进程,内存方面从每个进程最多拥有32M虚拟内存空间改为最多拥有2G虚拟内存空间。在OS布局方面,将关键的驱动程序、文件系统和图形界面管理器(GWES)移到了内核中,这样可以更好解决因为CPU在内核态和用户态间切换而造成的性能损失。

当然,从以上的改变,我们可以看到CE 6.0较之前版本更加“重量级”了。操作系统领域关于“微内核”的争论已经持续了很多年,CE的改变也许会为某个学派的观点提供支持。但我们必须指出的是,正因为目前的嵌入式设备硬件已经可以支持比较“重量级”的操作系统了,所以CE 6.0才会做出如此改变。

CE针对开发者的另一个转变开始自CE 5.0,将开发环境Platform Builder整合到Visual Studio中,这种做法无疑减轻了微软维护两套IDE的负担,从另外一个方面来看,CE的开发者也可以享受到更好的开发体验了。

嵌入式开发流程

也许很多初涉嵌入式开发领域的程序员会被一系列的新名词搞得头昏脑胀,在这里,我希望能够将嵌入式开发的流程展现给大家。

嵌入式开发主要分为三个比较大的部分:

l  驱动程序开发

这部分开发是从硬件设计开始的,硬件工程师会设计PCB板,为我们提供标准开发板(SDBstandard development board)。当我们拿到开发板之后的第一件事情就是编写boot-loader,让开发板启动起来,一般是通过JTGAboot-loader烧录到开发板中的。我们可以将boot-loader看作PC中的BIOS,负责硬件设备的初始化工作,并且将操作系统运行起来。在此之后,我们需要根据开发板上的硬件开发各种驱动程序,比如串口、USB、鼠标、视频输入等。最后将这些驱动程序和boot-loader打包,称为一个板级支持包(BSP)。BSP是和开发板的具体硬件紧密相关的。

所以从事这方面开发的工程师往往具有比较强的硬件知识水平。

l  平台定制

我们可以将Windows CE想象为一盒积木,根据不同的应用场景和设备要求,我们要对这盒积木进行定制,堆积出不同形状的城堡、动物和生活用品。这个过程称为“平台定制”,定制产生的平台往往和具体的硬件设备相关,直接将平台下载到硬件设备上就可以运行了。整个开发过程,需要选择不同的组件来搭配出最适合当前硬件的软件平台。所以要对Windows CE的组件,也就是Catalog Item,有相当程度的了解。

l  应用程序开发

嵌入式设备上的应用程序开发与传统应用程序开发类似,只是要借助于硬件模拟器或者实际设备对程序进行调试。最常见的嵌入式设备应用程序开发,就是Windows Mobile的移动应用开发。平台定制工程师会在硬件出厂之前先提供平台相关的SDKSDK中会包括模拟器。应用开发者可以首先使用模拟器对程序进行开发和调试。等实际硬件出来之后,再将程序转移到实际硬件中。因为Windows CE采用了很多措施,这种“转移”几乎是无缝的,所以我们并没有使用“移植”这个词。

嵌入式领域的应用开发其实是普通软件工程师就可以进行的。

下图是对嵌入式开发整个流程的图示:

Windows CE开发流程图

在下一节中,我们会借助实际的硬件开发板,来逐步介绍嵌入式开发环境的搭建、平台的部署和调试、应用程序的部署和调试等话题。

下一篇《Windows Embedded CE 6.0开发初体验》之“CE开发环境”:

Windows Embedded CE 6.0开发初体验(一)Windows CE概述相关推荐

  1. Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏

    上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...

  2. Windows Embedded CE 6.0开发初体验(三)设置Boot-loader

    在Digi CC 9P开发板中已经预置了Boot-loader和一个CE 6.0的系统,所以,我们直接启动开发板,就可以运行一个CE 6.0的操作系统.不过,我们的最终目的是要开发一个自己的CE 6. ...

  3. Windows Embedded CE 6.0开发初体验(二)CE开发环境

    CE开发环境 下面就要让今天的主角闪亮登场了--Digi CC 9P开发板.为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所 ...

  4. Windows Embedded CE 6.0开发初体验(四)跑个应用程序先

    因为我们的开发板上已经预置了Windows CE 6.0的系统,所以我们可以先创建一个.NET CF的应用程序,来看一下如何将.NET CF程序部署到Digi开发板上. 第一步,首先在Visual S ...

  5. Windows Embedded CE 6.0开发初体验(七)编译和调试平台

    在完成Catalog选择之后,平台定制的工作告一段落,接下来,我们就要进入变数最多的环节--"编译和调试"平台了.编译的操作简单,但是想通过编译却有很多变数. 编译平台的第一步是选 ...

  6. Windows Embedded CE 6.0开发初体验(五)构建CE平台

    接下来的一节会有非常多的图,因为我们要在Visual Studio 2005里创建一个CE 6.0的平台(Platform)了.创建CE平台的方法和创建普通工程的方法类似.在完成了Platform B ...

  7. Windows Embedded CE 6.0开发初体验(六)平台定制

    Windows CE是一个组件化的操作系统,我们可以根据不同的环境设置不同的组件来组合成有针对性的平台,而一个功能往往需要多个组件才能够实现.Catalog就是实现某个功能的组件集合,每个Catalo ...

  8. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  9. XPe开发初体验:XPe概述

    作者:iwinembed 转自:http://blog.itpub.net/16803921/viewspace-504417/ XP Embedded是微软Windows Embedded产品线中非 ...

最新文章

  1. keras实现 vgg16
  2. 如何排查 .NET 内存泄漏
  3. android 简单实现圆角,Android 实现圆角图片的简单实例
  4. REVERSE-PRACTICE-BUUCTF-13
  5. java中自动装箱的问题
  6. 崛起于Springboot2.X之Mongodb多数据源处理(35)
  7. linux 时间戳 微妙,unix时间点_毫秒和微妙_time模块
  8. java毫秒 mysql秒_MySQL和Java时间毫秒之间的转换问题的总结
  9. python闹钟_用python做了个高级闹钟 欢迎借鉴
  10. BZOJ 1211: [HNOI2004]树的计数 purfer序列
  11. Jar 包依赖冲突排查思路和解决方法(logback + slf4j-log4j12)
  12. C#操作Word书签模板
  13. 爱立信Ericsson
  14. LM2596S DC-DC可调降压模块
  15. jTopo的基本使用
  16. git 添加文件覆盖文件, 删除文件
  17. Day12:一元N次方程的根(略窥群论一二)
  18. php+aira2+ffmpeg下载m3u8文件并保存成mp4
  19. 大提顿国家公园美丽风景Mac动态壁纸
  20. easyrecovery15中文版一键批量恢复数据软件

热门文章

  1. (JAVA)FileWriter
  2. (JAVA)Random类
  3. 【OS学习笔记】三十三 保护模式九:分页机制对应的汇编代码之---用户程序代码
  4. 【转载】linux进程及进程控制
  5. NOIP复习资料——往年习题精选
  6. nw.js FrameLess Window下的窗口拖拽与窗口大小控制
  7. Android成长日记-Android布局优化
  8. 流量专家为114搜索提供权威流量访问统计
  9. [能力提升][费曼学习法]学习方法
  10. [攻防世界][CTF][2020][MISC] 攻防世界 MISC writeup