摘要: OAL中的Profiler的实现是指Monte Carlo Profiler,作为WinCE Kernel profiler的一种,它主要是通过高精度Timer的中断来进行周期性的计数,从而统计各函数的sample数,达到评测某一个模块或者函数的性能的目的。关于OAL中Monte Carlo Profiler的实现,有一篇不错的文章如下:http://blogs.msdn.com/ce_base/... 阅读全文
posted @ 2010-08-25 14:49 温子祺 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 在WinCE系统中,Kernel是如何使用内存的,如何知道内存的大小?是通过config.bib文件的描述,我们会在config.bib文件中MEMORY段定义WinCE内核所占用RAM的起始地址和大小,比如:MEMORY NK 80001000 01E00000 RAMIMAGEBIB文件的格式以前介绍过,这里不重复了,在config.bib中定义的是一个物理上连续内存,在OAL中我们可以改变这... 阅读全文
posted @ 2010-08-25 14:40 温子祺 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 在BSP开发中经常会用到物理地址与虚拟地址的转换,一般都是基于物理地址获得相应的虚拟地址来访问硬件。在WinCE6.0中,可以在WINCE600\Platform\Common\Src\Inc\Oal_memory.h文件中找到相关的操作函数,这些函数用来虚拟地址与物理地址之间的转换,它们都是基于OEMAddressTable表的。也就是说,首先要在OEMAddressTable中定义虚拟地址到物... 阅读全文
posted @ 2010-08-25 14:37 温子祺 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 在WinCE OAL中的电源管理主要由OEMIdle和OEMPowerOff两个函数实现。应该说OEMIdle实现的是处理器级的电源管理,而OEMPowerOff实现的是板级的电源管理。在WinCE系统运行的时候,如果没有任何线程可以执行,那么内核就会调用OEMIdle函数。一般在OEMIdle中,处理器都会进入sleep模式或者idle模式,这取决于处理器本身所能支持的低功耗模式。应该说,这个时... 阅读全文
posted @ 2010-08-25 14:32 温子祺 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 在WinCE的开发环境中支持Debug Zones功能,通常也被称为调试域,通过它可以控制打印信息。当某个调试域被打开以后,在这个域中的打印信息就会被打印出来,如果某个调试域被关闭了,那么这个域中的打印信息就会被关闭。调试域是基于模块的,也就是说一个模块,可能是在一个驱动或者一个应用中都可以定义一个调试域,用来调试该模块。一个调试域最多可以包括16个域,一般在每一个模块中都会有一个全局变量dpCu... 阅读全文
posted @ 2010-08-25 14:29 温子祺 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 代码 阅读全文
posted @ 2010-08-25 14:24 温子祺 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 对于实时系统,如何调试是一个很难解决的问题,包括对系统内核的调试,对驱动程序的调试,对应用程序的调试等。对于应用程序,通常各集成开发环境都提供了常规的单步跟踪等调试手段。而对于另两个的调试,Platform Builder除了为我们提供了常规的断点跟踪等手段以外,还和系统的源程序配合使用了一种新的调试手段——Debug Zones调试区。通常,我们都是利用OutputDeb... 阅读全文
posted @ 2010-08-25 14:13 温子祺 阅读(494) 评论(0) 推荐(1) 编辑