WinCE Blog
文章平均质量分 73
唐勉的技术博客
本人,性格开朗,呵呵
展开
-
谈谈WinCE应用程序的升级
Show a way of application update in WinCE.原创 2011-02-01 10:38:00 · 8985 阅读 · 1 评论 -
WinCE OAL中的中断处理
作者:ARM-WinCE 关于WinCE的中断处理,OAL中主要是实现了ISR部分,一般IST会在设备驱动中实现。推荐一篇WinCE的中断架构的文章,如下:http://msdn.microsoft.com/zh-cn/library/ms836807.aspx 建议对WinCE中断不了解的朋友,可以先看看这片文章。架构如图: 这张图想必很多人都见过,主要原创 2009-03-03 16:46:00 · 5217 阅读 · 2 评论 -
WinCE CEDDK之IO访问函数
作者:ARM-WinCE CEDDK就是CE的DDK,其中封装了一些驱动开发会用到的函数。有时在开发驱动的时候用CEDDK中的函数会比较方便,使用的时候需要连接ceddk.dll,源代码为于WinCE的/PUBLIC/Common/Oak/Drivers/CEDDK下面找到,其中大致可以分为几类,如下: IO访问函数(ddk_io.c) DMA操作函数(ddk_dma.原创 2008-12-21 18:56:00 · 4243 阅读 · 1 评论 -
WinCE CEDDK之DMA相关函数
作者:ARM-WinCE CEDDK提供了DMA的相关函数,在CEDDK/DDK_DMA/ddk_dma.c中定义。实际上里面最有用的就两个函数,HalAllocateCommonBuffer(..)和HalFreeCommonBuffer(..)分别用于为DMA申请和释放内存。 首先介绍一下会用到的DMA适配器结构,在ceddk.h中定义,如下:typedef str原创 2008-12-24 22:02:00 · 4183 阅读 · 8 评论 -
WinCE OAL的系统Timer分析
作者:ARM-WinCE 对于任何操作系统来说,系统Timer就像是OS的心脏,本质来说,操作系统就是中断驱动的。在WinCE中,系统Timer会在OAL中实现,一般在OEMInit函数中进行初始化,而且都是在Interrupt初始化之后进行。 一般WinCE的系统Timer有两种实现方法,一种是Fixed Tick,另一种是Variable Tick。一般比较常用的是Fixed原创 2009-03-20 12:35:00 · 4491 阅读 · 1 评论 -
WinCE OAL中的电源管理函数
作者:ARM-WinCE 在WinCE OAL中的电源管理主要由OEMIdle和OEMPowerOff两个函数实现。应该说OEMIdle实现的是处理器级的电源管理,而OEMPowerOff实现的是板级的电源管理。在WinCE系统运行的时候,如果没有任何线程可以执行,那么内核就会调用OEMIdle函数。一般在OEMIdle中,处理器都会进入sleep模式或者idle模式,这取决于处原创 2009-03-25 17:55:00 · 3688 阅读 · 2 评论 -
WinCE OAL中的Profiler的实现
作者:ARM-WinCE OAL中的Profiler的实现是指Monte Carlo Profiler,作为WinCE Kernel profiler的一种,它主要是通过高精度Timer的中断来进行周期性的计数,从而统计各函数的sample数,达到评测某一个模块或者函数的性能的目的。 关于OAL中Monte Carlo Profiler的实现,有一篇不错的文章如下:http://b原创 2009-04-15 17:33:00 · 2773 阅读 · 1 评论 -
WinCE OAL中的Memory函数介绍
作者:ARM-WinCE 在BSP开发中经常会用到物理地址与虚拟地址的转换,一般都是基于物理地址获得相应的虚拟地址来访问硬件。在WinCE6.0中,可以在WINCE600/Platform/Common/Src/Inc/Oal_memory.h文件中找到相关的操作函数,这些函数用来虚拟地址与物理地址之间的转换,它们都是基于OEMAddressTable表的。也就是说,首先要在OEMAddr原创 2009-03-31 15:03:00 · 3772 阅读 · 0 评论 -
WinCE OAL中的RAM定制函数
作者:ARM-WinCE 在WinCE系统中,Kernel是如何使用内存的,如何知道内存的大小?是通过config.bib文件的描述,我们会在config.bib文件中MEMORY段定义WinCE内核所占用RAM的起始地址和大小,比如:MEMORY NK 80001000 01E00000 RAMIMAGEBIB文件的格式以前介绍过,这里不重复了,在confi原创 2009-04-12 18:21:00 · 3049 阅读 · 0 评论 -
WinCE eXDI硬件方针调试介绍
作者:ARM-WinCE eXDI是一种硬件辅助调试方法。在Platform Builder中支持eXDI接口,允许通过第三方的驱动来配合硬件仿真器调试WinCE。在这种情况下,不再需要Platform Builder本身的调试器。硬件开发板会直接和硬件仿真器相连,由硬件方针器来控制,而硬件方针的厂商提供基于WinCE的eXDI驱动,在安装为eXDI驱动以后,就可以在Platform Bu原创 2008-12-17 10:38:00 · 2584 阅读 · 0 评论 -
WinCE OAL中的Cache操作函数介绍
作者:ARM-WinCE 在OAL中有两个和Cache相关的函数,一个是OEMARMCacheMode,另一个是OEMCacheRangeFlush函数,这两个函数在ARM处理器上是必须实现的。 OEMARMCacheMode函数用于设置基于ARM处理器页表的cache模式,主要是设置MMU页表中的C,B控制位,达到控制相应的存储空间的缓冲特性的目的。一般默认C和B控制位都被设置为原创 2009-02-25 20:21:00 · 3667 阅读 · 4 评论 -
WinCE OAL架构分析
作者:ARM-WinCE我个人认为OAL应该是WinCE BSP中最为重要的一个模块了,简单回顾一下,WinCE BSP由Bootloader,Drivers,OAL和配置文件组成。Bootloader一般指EBOOT,Drivers指一些需要的设备驱动,而OAL被称为OEM Adaption Layer,是WinCE操作系统和底层交互的中间层,其中很多WinCE的功能的支持,都是在OAL原创 2009-01-18 18:47:00 · 7072 阅读 · 2 评论 -
WinCE EBOOT中的BootPart分析
作者:ARM-WinCE 应该说BootPart算是微软提供的一个用于分区的模块,可以在EBOOT中使用。不过说实话,我很少使用它,知道有些厂商的BSP里面支持这个功能,而且也算是EBOOT的一部分,所以还是介绍一下。先看一下架构,如图: 在EBOOT中,BLCOMMON处于最上层,这个在以前已经介绍过,BootPart模块会被OEM函数来调用,而BootPart模块要操作存储原创 2008-11-27 15:23:00 · 5566 阅读 · 1 评论 -
WinCE OAL中的Startup.s介绍
作者:ARM-WinCE 应该说Startup.s是OAL最开始的入口,就像EBOOT中的Startup.s一样,它也是WinCE内核最开始运行的代码。一般在BSP中,EBOOT的Startup.s和OAL的Startup.s的功能应该是一样的,但是还是会有些区别,很多情况取决于BSP的开发者,两个Startup.s之间可以共享很多代码,也可以部分共享或者彼此独立。 OAL中的St原创 2009-01-31 18:42:00 · 4318 阅读 · 5 评论 -
WinCE OAL中的OEMInit函数
作者:ARM-WinCEOEMInit是OAL中的重要函数,用来初始化板级的硬件设备。实际上,WinCE的内核最开始只做了CPU级的初始化,随后会初始化调试串口,然后就会调用该函数了。应该说OAL中的OEMInit函数有点像EBOOT中的OEMPlatformInit函数,我说的是有点像,毕竟应用不同。OEMInit函数主要完成以下功能:1. 初始化相应的硬件外设 2. 根据需原创 2009-02-12 17:37:00 · 3958 阅读 · 0 评论 -
WinCE OAL中的Global Variables介绍
作者:ARM-WinCE 在OAL中可以设置一些全局变量,这些变量在WinCE内核与OAL之间共享,无论是WinCE内核还是OAL都可以基于这些全局变量完成相应的功能。这些全局变量一部分是必要的,一些属于可选的。 由于有些变量和硬件平台相关,所以不同架构的处理器会支持不同的全局变量,这里仅以ARM架构处理器进行介绍,如下: OEMAddressTable:这是一个物理地址到原创 2009-02-21 16:07:00 · 2740 阅读 · 0 评论 -
WinCE Target Control调试介绍
作者:ARM-WinCE Target Control是一种基于命令行的调试工具,在WinCE启动以后,可以在Platform Builder中启动Target Control,通过命令行来调试WinCE。Target Control支持很多强大的命令,通过这些命令可以查看内存,启动进程等。1. 配置Target Control如果想在WinCE中支持Target Control功原创 2008-12-11 17:52:00 · 3339 阅读 · 5 评论 -
WinCE Emulator使用介绍
作者:ARM-WinCE 最近用了一下WinCE的模拟器,我做WinCE有几年了,从来没有用过WinCE的模拟器,第一次接触WinCE的时候就是一块S3C2410的板子和PB4.2的开发平台,然后就开始折腾,后来各种开发板都用过,WinCE也从4.2版本用到了6.0 R2版本,就是没用过模拟器。前段时间要验证点东西,手头又没板子,所以这次也用了一下。我看到网上很多人写过关于WinCE Em原创 2008-12-09 10:15:00 · 9996 阅读 · 5 评论 -
WinCE中的Debug Zone调试
作者:ARM-WinCE 在WinCE的开发环境中支持Debug Zones功能,通常也被称为调试域,通过它可以控制打印信息。当某个调试域被打开以后,在这个域中的打印信息就会被打印出来,如果某个调试域被关闭了,那么这个域中的打印信息就会被关闭。调试域是基于模块的,也就是说一个模块,可能是在一个驱动或者一个应用中都可以定义一个调试域,用来调试该模块。一个调试域最多可以包括16个域,一般在每原创 2008-12-10 10:06:00 · 6858 阅读 · 0 评论 -
WinCE OAL中的OEMIoControl函数
作者:ARM-WinCE关于OEMIoControl函数,我在2008年1月份写过一篇blog叫“WinCE BSP中OAL层中的OEMIoControl介绍”,已经比较详细的介绍了OEMIoControl,今天在这里只是对OEMIoControl中比较常用的case说一说。看看PB的文档就知道OEMIoControl可以包含很多case而且被分了类。下面就我个人接触到的和比较常用的做个说原创 2009-04-22 16:31:00 · 4340 阅读 · 0 评论 -
WinCE远程桌面的实现
作者:ARM-WinCE WinCE支持远程桌面功能,可以在PC端访问目标设备的WinCE桌面。这个功能在调试的时候很有用。有些时候,你的目标板不带显示设备,这时你想访问目标板的WinCE系统感觉很不爽,毕竟习惯了桌面操作。通过WinCE远程桌面,你可以在PC上面访问目标板的WinCE桌面并进行操作。 下面来介绍一下具体步骤:1. 选择支持WinCE远程桌面的组件:在Win原创 2009-07-17 09:52:00 · 13785 阅读 · 12 评论 -
WinCE系统字体的设置
作者:ARM-WinCE 确实很久没有写Blog了,感觉有些对不住曾经看我blog的朋友。刚从美国回来,由于项目原因,春节都在美国工作,现在有点时间,先写一篇简单的,介绍一下WinCE字体的设置。 WinCE系统字体的设置是通过注册表实现的,目前提供以下几种系统字体的设置:系统字体:HKEY_LOCAL_MACHINE/SYSTEM/GDI/SysFnt 菜单字体:HKEY原创 2010-04-19 15:36:00 · 13691 阅读 · 8 评论 -
WinCE Subproject使用介绍
Introduce subproject in WinCE原创 2010-06-28 01:44:00 · 5820 阅读 · 5 评论 -
WinCE Security---简介
Introduce WinCE security module.原创 2010-07-24 09:36:00 · 4844 阅读 · 1 评论 -
WinCE Security --- 系统X509证书库定制
Introduce howto customize the system X509 certificates原创 2010-07-31 08:00:00 · 5047 阅读 · 1 评论 -
WinCE Security --- X509证书及私钥的导入
Introduce howto import X509 certificate and private/public key pair.原创 2010-08-09 02:43:00 · 7418 阅读 · 1 评论 -
WinCE Security --- 文件及证书签名与验证
Introduce howto sign a file or x509 certificate and verify the signature.原创 2010-08-23 08:03:00 · 5947 阅读 · 2 评论 -
WinCE 与Linux之间的签名验证及加解密
Introduce data encryption/decryption and signature verification between WinCE and Linux原创 2010-09-13 06:37:00 · 6128 阅读 · 1 评论 -
WinCE Heartbeat Message的实现
Introduce the implement of hearteat message on WinCE.原创 2010-11-23 13:22:00 · 5287 阅读 · 0 评论 -
WinCE系统 USB Serial实现
作者:ARM-WinCE 回国2周了,时差已经倒回来了,可以继续我的博客了。这里介绍一下USB Serial。USB Serial就是指基于USB的虚拟串口,实际上是将USB作为一个串口设备来进行操作。对于应用程序来说,通讯起来比较简单,就是打开串口,然后接收发送数据就可以了。下面介绍一下具体步骤: 1. 选择USB Client Serial组件在定制WinCE的时原创 2009-12-11 14:49:00 · 12636 阅读 · 19 评论 -
WinCE系统声音定制
作者:ARM-WinCE 2010的第一篇Blog,介绍一下WinCE系统声音的定制。说白了,就是设置注册表。WinCE系统启动的开机音乐,点击触摸屏以及键盘输入的按键音,还有系统运行过程中的各种声音其实都是在注册表里面预先设置好的。这里做个简单介绍: 整个WinCE系统声音注册表设置如下:[HKEY_CURRENT_USER/ControlPanel/Volume原创 2010-01-16 17:36:00 · 10322 阅读 · 11 评论 -
WinCE MUI的实现
作者:ARM-WinCE MUI是指多语言的支持,可以在WinCE系统中支持多种语言,并根据需要进行切换。下面介绍一下具体的实现: 1. 添加多种语言:创建一个WinCE工程,然后在”Solution Explorer”中右击工程,选择”Properties”,会弹出一个对话框。在左侧的列表中选择”Local”,在右侧选择所要支持的语言,这里我选择了French,Japan原创 2009-07-30 16:11:00 · 7564 阅读 · 6 评论 -
WinCE系统USB功能定制
作者:ARM-WinCE USB的广泛应用就不用多说了,相信目前的各个领域的嵌入式产品中,很少有不用USB的。USB是主从结构的,分为USB Host和USB Slave,从USB1.0,USB1.1到现在的USB2.0,基于USB2.0还有USB OTG,也就是同时支持Host和Slave设备。目前最新的好像是USB3.0,刚开始普及吧。 在WinCE6.0中,对USB是有很好的原创 2009-08-12 15:27:00 · 17475 阅读 · 8 评论 -
WinCE系统USB Mass Storage实现
作者:ARM-WinCE Mass Storage的实际应用就是U盘,目标板和PC通过USB相连,PC可以把目标板识别为U盘,在很多产品上都很常用。这里介绍一下在WinCE系统中U盘功能的实现。 在谈WinCE的USB Mass Storage实现之前,首先要具备以下条件:1. 开发板支持USBClient设备。2. 开发板上至少有一种存储设备可以被用来映射为U盘。原创 2009-08-20 15:52:00 · 9740 阅读 · 6 评论 -
WinCE桌面墙纸及图标更换
作者:ARM-WinCE 网上关于WinCE更换墙纸的文章一大堆,我也来写一篇,和网上已有的文章没什么区别。以前写的WinCE Blog大部分都是BSP相关的,以后打算写点WinCE系统定制方面的,就从这里开始吧。 关于WinCE的墙纸,是在注册表中设置的,编译完WinCE工程以后,所有的reg文件中的内容都会被合并为reginit.ini文件。打开这个文件,可以找到如下内容:原创 2009-06-19 13:14:00 · 5496 阅读 · 3 评论 -
WinCE文件目录定制及内存调整
作者:ARM-WinCE 这个说起来比较简单,WinCE的文件目录结构以及文件的位置都是在DAT文件中定义的。所有的dat文件会在WinCE编译时合并成initobj.dat文件,WinCE会根据DAT中的描述生成相应目录。关于DAT的格式,可以参考我以前的一片文章:”WinCE BSP的DAT文件介绍”,看了就明白了。 我一般在project.dat中定制自己想要的目录结原创 2009-06-26 09:57:00 · 8032 阅读 · 0 评论 -
WinCE开始菜单中添加应用程序
作者:ARM-WinCE 添加应用程序到WinCE的开始菜单中应该是一个比较常用的功能,在产品定制的时候,添加本产品的应用到StartMenu中,让用户可以方便启动程序,下面就来介绍一下: 先说一下原理,其实在WinCE启动以后,点击Start,然后点击Programs,里面所能看到的应用其实也都是以文件的形式存放的,它们存放在/Windows/Programs目录下面,都是一原创 2009-07-01 14:32:00 · 7445 阅读 · 7 评论 -
WinCE控制面板添加应用程序
作者:ARM-WinCEWinCE系统中的控制面板和Windows系统中的控制面板原理是一样的,里面就是包含了一些应用程序。WinCE系统的控制面板由Ctlpnl.exe,Control.exe和一些.cpl文件组成,其中Ctlpnl.exe和Control.exe用于控制控制面板的文件夹显示和架构,而.cpl文件和控制面板中的实际应用程序相对应。 WinCE的控制面板中的每个应用原创 2009-07-10 10:22:00 · 7710 阅读 · 4 评论 -
WinCE系统 USB RNDIS实现
作者:ARM-WinCE 好久不写博客了,这段时间实在太忙,和美国人,印度人一起做项目,时差是个大问题,沟通也占用了很多时间,发邮件,开电话会议成了家常便饭。不管怎样,我在博客的道路上也走了快2年了,我会继续坚持写下去,在我有时间的时候。不多废话了,今天说说RNDIS。 RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在U原创 2009-09-15 17:22:00 · 17581 阅读 · 17 评论 -
WinCE EBOOT中的Optional函数
作者:ARM-WinCE 在WinCE的EBOOT中,有一些函数属于Optional的OEM函数,也就是可选择实现的。这些函数会在BLCOMMON模块中被调用,我们需要在EBOOT中实现它们,然后把实现的函数赋值给BLCOMMON中的相应的函数指针上面就可以了,这样BLCOMMON模块在调用这些Optional函数的时候,会首先检查他们是否为NULL,如果为NULL就不执行,如果不是NUL原创 2008-11-24 21:41:00 · 2790 阅读 · 2 评论