微软Windows CE TTT 6.0印象记(2)

6日,是培训的第二天,培训进入正轨了。上课的内容依然轻松。讲了Windows CE的内核体系结构,只有进程线程模型是变化最大的东西。Windows CE老的32 x 32的限制已经不复存在了。新的进程模型几乎可以容纳无穷多个进程。微软说是32000个,其实这个只是理论值,因为Handle table有64K大,每个进程最少也要占据2个handle,所以就算出来一个32k个进程。其实这么多进程,也只有理论上的意义了。随着进程模型变化的是虚拟内存模型,现在每个进程都有了自己的1GB可用私有空间,剩下3GB是一样的。但是无论如何,进程地址空间立体起来了,也由此引发了更多的变化。以后可能我会写专门的文章来阐述把,这里点到即止。其他的调度算法什么的基本没变。
晚上去了我陆大伯家,陆大伯是我爸爸的好友,我爸爸年轻的时候整天去广东出差跑业务,认识了陆大伯,他跟我爸可是几十年的老交情,当年我高考的时候,我爸爸就一直想让我考中山大学,这样在广东还有个熟人可以依靠,后来还是没有去广东。我从上海机场买了无锡排骨,苏州豆腐干和上海点心,带过来给大伯,然后又在地摊上买了一些水果。打车不是很远就到了他家,一开始到他家之前还有点担心,担心会不会因为不太熟悉而尴尬,结果开始聊天之后,很快就进入状态了,他们很客气。我也跟他们聊了一些家常,不经意就10点钟了 …
more ...

微软Windows CE TTT 6.0印象记(1)

2007年2月3日到10日微软在广州举行了微软亚太区Windows Embedded CE 6.0(不知道为什么取这个名字,CE6,多简单)的TTT培训(TTT意思是Train The Trainer)。所谓亚太区,其实来的只有中日韩三国加上香港台湾的人而已,一共有大概40个的样子,中外各占一半。我有幸受邀参加了这次培训,所见所闻还是值得一记的,以下是流水账式日记:
2月3日,我下午2点半的飞机,五点才到广州。坐机场大巴来到市区,到了微软推荐的酒店,却发现价格比较离谱,800RMB一个晚上的样子,我怕回学校报账的时候张院长万老师怒了,只好自己拎着箱子满街找住处,一开始挺害怕,毕竟在网上看了那么多关于广州治安不好的传言,后来发现街上小朋友,女同志都单独一个人走来走去,我想我一个大男人怕什么,走!走了大概2公里路,终于找到了一家有空房,300块以下的地方,260一个晚上,住下了,环境非常不错,还可以上网。
2月4日,今天TTT培训没有开始,我提前一天来到广州,只是为了参观一下这座华南的名城。去了越秀公园与黄埔军校,拍了一些照片,都放在了google pages上,就不在详细介绍了 …
more ...

Windows CE 嵌入式系统

  • 嵌入式
  • 软件

[后来加上去的]
这个是China-pub上面的书籍信息连接:
::URL::
图:错误报告的结构
用户可以在控制面板中通过错误报告控制面板插件来对错误报告系统进行配置。当有用户未捕捉的错误发生时,首先,错误报告生成模块可以捕捉到这个错误,然后通过错误报告生成模块生成dump文件,接着,通过错误报告驱动程序把错误报告保存为文件系统上的一个文件,最后,根据用户的选择,把错误报告发送到微软的服务器上。

more ...

Windows CE下的注册表

- 嵌入式

与桌面Windows一样,Windows CE也使用注册表(Registry)来保存应用程序、驱动程序和用户的设定以及其他一些配置信息。Windows CE注册表也采用树形结构来管理配置信息,由于Windows CE注册表的结构和功能与桌面Windows几乎一样,在这里就不详细介绍了,读者可以参考其它关于注册表的资料。
Windows CE支持四个根键,描述如下:
键名描述
HKEY_LOCAL_MACHINE硬件和驱动配置数据
HKEY_CURRENT_USER用户配置数据
HKEY_CLASSES_ROOTOLE和文件类型匹配配置数据
HKEY_USERS适用于所有用户的数据
由于嵌入式系统的特点,一些嵌入式设备是没有外存的。因此Windows CE的注册表提供了两种实现方式:基于RAM的注册表(RAM-Based Registry)和基于Hive的注册表(Hive-Based Registry)。我们可以选择在Windows CE中使用任何一种注册表,注册表类型对于用户和应用程序来说是透明的。
基于RAM的注册表
正如其名,基于RAM的注册表把整个注册表作为一个对象存储堆存放在系统的内存中。这意味着如果对系统进行冷启动或者系统断电,对注册表的所有改动都会丢失。
如果使用基于RAM的注册表,对注册表的读写访问操作会变得非常高效。因此基于RAM的注册表比较适用于没有外部存储,而且有电池保存内存数据(battery-backed RAM)的设备。如果有外存且经常冷启动的设备采用基于RAM的注册表,则需要在系统断电的时候对注册表进行保存,等系统再次启动时对保存的注册表进行还原。
Windows …

more ...

Windows CE下访问物理内存的方法

- 嵌入式

嵌入式设备与桌面PC的一个显著不同是它的应用程序中通常需要直接访问某一段物理内存,这在驱动程序中对物理内存的访问尤为重要,尤其是像ARM体系结构下,I/O端口也被映射成某一个物理内存地址。因此,与桌面版本Windows相比,Windows CE提供了相对简单的物理内存访问方式。无论是驱动程序还是应用程序都可以通过API访问某一段物理内存。
Windows CE的有些函数中需要用到物理内存结构体PHYSICAL_ADDRESS, Windows CE在ceddk.h中定义了PHYSICAL_ADDRESS,它其实是LARGE_INTEGER类型,其定义如下:
// in ceddk.h
typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
// in winnt.h
typedef union _LARGE_INTEGER{
struct{
DWORD LowPart;
LONG HighPart;
};
LONGLONG QuadPart;
} LARGE_INTEGER;
可见,Windows CE中用64个Bit来代表物理地址,对于大多数32位的CPU而言,只需要把它的HighPart设置为0就可以了。
如果要直接访问某一个地址的物理内存,Windows CE提供了VirtualAlloc()和VirtualCopy()函数,VirtualAlloc负责在虚拟内存空间内保留一段虚拟内存 …

more ...

《自然辩证法》与软件工程

  • 程序员
  • 软件

当年《电子游戏软件》的“电刑室手记”上有这么一篇小短文:
某日上政治课,老师讲量变,质变,全班人迟迟不能理解,某一玩友徐徐曰:“量变者,升段也,质变者,转职也”。全班顿悟。且欲撰一奇文,题曰《马克思主义与RPG》。

这个段子后来大概因为是涉及政治问题,没有收录到“电刑室手记”完整版本里,但是电子游戏里面的升段和转职的确符合哲学里面对量变与质变规律的描述。看来哲学规律的普遍性和对具体科学(电子游戏也算是科学吧,否则国家863项目怎么投钱开发网络游戏引擎呢?)的指导意义真是非同小可。

今天刚刚考完期末考试,最后一门是《自然辩证法》,起初以为这门课跟毛思邓论一样,属于考记忆力背书的的东西,后来在这半个月疯狂的背书过程中,发现还真是如课本所说的自然辩证法“有助于提高理论思维能力和科技实践能力,更好的参与现代化建设”。书中对自然观,科学技术方法论和科学技术观的一些描述,还真是与程序员日常接触的东西有密切的关系,(不知道算不算得上模式),摘录一些如下:

  • 自然辩证法的层次观:

层次表征了系统内部结构的不同等级和水平,揭示了系统之间的纵向和垂直的联系。

层次的特点:低层次系统对高层次系统有构成性关系,低层次系统之间存在相互作用。

层次结合能递减规律 …

more ...

Windows CE下的Flat Virtual Address space

On 6/10/05, song titan wrote:

常看到书上这么说:Flat虚拟地址空间。加上上次聊到的,WINCE下进程里的私有数据保护。这个”平板式”的意思,我刚想了一下,是不是可以这么理解?

因为嵌入式的存储 介质有很多:RAM,ROM
,FLASH等,所以MMU把这些都映射到一个flat的虚拟地址空间上。这样不连续的内存就可以通过页表连续起来。所以称之为
flat

还有上次的你说如果选了Enable kernel
debug,就没有了slot的边界,进程的私有数据也就无法保护了。我记得在桌面版的WINDOWS下,是MMU来控制这种权限的读写的吧,那这里就是把这种权限机制解除掉了?

我觉得平板的意思就是所有的进程都共享一个地址空间吧。
Enable Full Kernel
Mode之后Slot之间的界限就解除了,就像所有的32个进程其实是一个进程一样,但是MMU的保护还存在。例如某段内存在进程A里面是只读的,那么所有的进程都可以去读这段内存。但是如果有进程去写这段内存,那么就会违例。

more ...

Windows CE的步进电机驱动终于搞定了!

今天虽然是周末,但是还是跑到了嘉定校区工作。头等大事就是搞步进电机的驱动。以前虽然只是理论上推导,应该可以写成功,但是由于缺乏硬件,始终没有动过手。不免心虚。这次终于,硬件设备,代码,人都有了,开始写。
代码并不复杂。一个感觉HHARM的BSP可真够烂的!几乎什么都不支持,居然Windows CE能在这个板子上跑起来,真是奇迹。把driver相对应的注册表放到project.reg里面,Driver居然Load不起来。又没有registry editor可以查看,我只好摸黑操作。后来,后来,居然work了。
按一下Button,看着开发板上的那个小电风扇转圈,“成就感油然而生”…

剩下的,就是为六月底的Windows CE培训会议作准备了。打开了“熟悉的”Microsoft Word。继续工作……

more ...