转自:http://hezongjian.com/blog/?p=9693

众所周知,CE的内核是完全重新写的,与9x根nt没有任何关系,这给CE带来了较好的实时性及灵活性。从诞生之日起,CE的内核改过两次,第一次是3.0,极大的增强了实时性,第二次是6.0,去除了内存/应用32 / 32的限制。如此看来,貌似已经比较完美了。从6.0发布以来,我一直乐观的觉得6.0的内核应该可以至少再顶三个版本了,下次更新内核大概要到CE 9.0了(猴年马月….)。但是计划不如变化快,信息产业瞬息万变,很多预言都会被证明是很可笑的。我的这个“预言”也不例外(对在08年TechEd上听我演讲的听众说声抱歉,当时我还极力鼓吹多余的Kernel
feature都是没必要的)。短短几年时间,如果现在你再问我新版本的CE要不要改内核。我会一口咬定,改,最好马上改。

个人观点,欠改的地方有两个,内存映射和SMP支持。

首先说内存映射。CE从诞生之日起就在Kernel的3GB起始处映射了2个512MB的虚拟地址。一个是有cache的,一个是没cache的。这使得CE最大的物理内存就只有512MB,512已经是理论极限了,再多了就不认了。512这个数字在嵌入式系统上一直是天文数字,几年前还是。谁知道随着智能手机软件(应用复杂化)跟硬件(内存白菜价)的飞速发展,在手机上装个512MB的内存也没什么大不了的。在CE上,如果装了512MB内存,麻烦还真不小。这个限制应该改了。倒也不是难事,只是向下兼容性要打折扣了。

其次说一下SMP。CE诞生以来一直是针对单CPU的,即使在PC机上,多核技术已经兴盛很长时间了,但是依然没有能够打动CE加入SMP支持,因为用CEPC的人,一般也不会找个多核CPU。时代又不同了,CE支持的主流平台──ARM,这几年也跟着玩起了多核。ARM11, ARM Cortex A9都玩起了MPCore。这一玩,不得了了。如果CE不跟着玩,几年后,可能移动设备上就看不到CE的影子了。*nix系统(iphone和android)可是原生支持SMP的。虽然*nix系统实时性没有CE高,但是人家毕竟支持smp,可以把CPU的能力都发挥出来。CE啊,抓紧把spinlock,CPU
Affinity这些Desktop Windows上的东西搬过来吧(BSP的实现又复杂化了,当然这些东西要BSP支持)。

其它还有没有要改的呢,可能有。例如Windows消息机制,现在的WM_LBUTTONDOWN, RBUTTONDOWN消息已经远远不适合multi touch了。当然这个可能不需要改内核,driver和API改改就可以,魅族的手机已经实现了。

下一个版本的CE大概今年就会发布吧。新的CE里面这两点会不会改进,目前还没有官方的消息。拭目以待吧。

(参考资料,ARM的多核:http://www.arm.com/products/CPUs/ARM11MPCoreMultiprocessor.html

关于512M的大小和地址限制,没办法,MIPS和SH 硬件上就这么访问虚拟内存地址空间的,所以只要CE一天要兼容这2个玩意,这个包袱还得一直背下去。2013年6月份发布的Windows Embedded Compact 2013就只支持ARM和x86内核,见http://blog.csdn.net/loongembedded/article/details/12841535

Windows CE,你妈吗喊你在多核上玩玩的更多相关文章

  1. 移植到Windows CE 的经验

    Windows CE 是微软早期推出的嵌入式设备和移动设备的开发运行平台,虽然目前移动端几乎都是android和ios的天下,但是,在嵌入式设备领域,Windows CE仍然占有一块地盘.很多用户希望 ...

  2. windows CE 6.0编译报BLDDEMO: There were errors building MY283错误解决办法

    今天开始正式进入windows ce程序开发. 第一次编译windows ce6.0的系统,25分钟编译后报:BLDDEMO: There were errors building MY283 错误. ...

  3. C# windows ce编程-----我的第一次

    最近公司要求开发抄表软件,软件分为PC端和手持终端(简称HHU),HHU是基于英文版的windows ce6.0操作系统,开发环境要求VS2005+SQLite数据库,开发语言为C#,因为是第一次基本 ...

  4. Windows CE Notification API的使用方法

    1 引言      以Windows CE 为操作系统的掌上电脑(如PocketPC或HPC),除具备PC的功能外,还具备很强的自身控制能力.Windows CE API超越微软其他操作系统的 API ...

  5. windows ce.net开发概述

    依据开发所处的层次以及开发工具的不同,能够将嵌入式系统开发分为系统开发和应用开发. 系统开发所涉及的内容包含三个方面:系统定制.驱动程序开发.操作系统一致(BSP开发). 一系统开发 (1)      ...

  6. Microsoft Windows CE 5.0 Board Support Package, Boot Loader, and Kernel Startup Sequence

    Summary Learn about the initial, low-level startup sequence and the hardware platform functions that ...

  7. (转) 关于Windows CE和Windows Mobile

    转发自http://www.cnblogs.com/chump/articles/1281955.aspx 一.Windows CE Windows CE是微软的嵌入式操作系统主要的一种,面世于199 ...

  8. (转) Windows Mobile和Windows CE的区别

    转发自 http://blog.sina.com.cn/s/blog_6250bbe60100tsf3.html WinCE Windows CE 是一个可定制的操作系统: Windows Mobil ...

  9. E-Form++ for Windows CE源码库2020,嵌入式开放源码!

    E-Form++ for Windows CE源码库2020! 现在就把这个下载到您的Windows CE中,体验极致HMI触摸.  Windows CE评估版下载! 1. E-Form++ for ...

随机推荐

  1. C#实现网络传输数据加密

    1. 分组密码 分组密码是将明文消息编码表示后数字序列划分成长为n的分组,各组分别在密钥的作用下进行变换输出等长的数字序列,即密文.一次加密一个数据组,加解密所使用的是同一密钥,故其通常也称为对称加密 ...

  2. WordPress非插件添加文章浏览次数统计功能

    一: 转载:http://www.jiangyangangblog.com/26.html 首先在寻找到functions.php.php文件夹,在最后面  ?> 的前面加入下面的代码 func ...

  3. CentOS安装libpcap

    1.安装GCC:  yum -y install gcc-c++ 2.安装flex:   yum -y install flex   没有flex,直接安装libpcap会提示"Your o ...

  4. 《C和指针》 读书笔记 -- 第14章 预处理器

    1.相邻字符串常量被自动链接为一个字符串:"my""name"="myname" 2.##把位于两边的符号连接成一个符号: #define ...

  5. WPF中的多点触摸事件

    UIElement在WPF4下添加了很多支持多点触摸的事件,通过它们可以在硬件支持的情况下处理多点触摸,以下通过代码来说明通过处理这些事件,我们可以做些什么: 一.触摸相关的多种事件,跟鼠标事件是对应 ...

  6. kappa 一致性系数计算实例

    kappa系数在遥感分类图像的精度评估方面有重要的应用,因此学会计算kappa系数是必要的 实例1 实例2

  7. 【学习总结】UIGestureRecognizer(手势识别器)

    基本知识点 : -> IOS 3.2之后 , 苹果推出了手势识别功能 ( Gesture Recognizer ) 在触摸事件处理方面 , 简化开发难度. -> UIGesture Rec ...

  8. python解决汉诺塔问题

    今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...

  9. DateTime.ToString()

       /*            [y]代表年份,注意是小写的y,大写的Y并不代表年份.            [M]表示月份.            [d]表示日期,注意D并不代表什么.       ...

  10. ios 中的小技巧 - 总有你想要的 一

    UITableView的Group样式下顶部空白处理 在viewWillAppear里面添加如下代码: //分组列表头部空白处理 CGRect frame = myTableView.tableHea ...