![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WinCE BSP
文章平均质量分 57
Logen
超越自我
珍惜拥有
展开
-
嵌入式开发流程
<br />也许很多初涉嵌入式开发领域的程序员会被一系列的新名词搞得头昏脑胀,在这里,我希望能够将嵌入式开发的流程展现给大家。<br />嵌入式开发主要分为三个比较大的部分:1.驱动程序开发<br />这部分开发是从硬件设计开始的,硬件工程师会设计PCB板,为我们提供标准开发板(SDB,standard development board)。当我们拿到开发板之后的第一件事情就是编写boot-loader,让开发板启动起来,一般是通过JTGA将boot-loader烧录到开发板中的。我们可以将boot-loa原创 2011-03-23 00:50:00 · 730 阅读 · 0 评论 -
WinCE操作系统映像调试-ing
<br />留空原创 2011-03-23 13:31:00 · 514 阅读 · 0 评论 -
WinCE的驱动程序
<br />操作硬件是驱动开发的首要任务。<br />在WinCE下所有的驱动都以用户态的DLL文件形式存在。WinCE驱动程序用到的方法及工具与编写其他任何一个普通的DLL没有什么区别。与所有Win32 DLL一样,Windows CE驱动程序DLL中的代码要得以运行,必须被一些进程动态加载到地址空间。<br />优点:<br />Ø 灵活性,运行时动态加载,这样可以轻松实现外设的即插即用。<br />Ø 稳定性,因为放在内核态虽然是程序运行的更快,但在内核态的驱动如果出现崩溃会导致系统崩溃,但处于用户态原创 2011-03-23 14:00:00 · 517 阅读 · 0 评论 -
设备管理器
1.Device.exe简介<br />在WinCE中,系统进程Device.exe负责对几乎所有的外设驱动程序进行管理,它也被称为设备管理器。<br />严格来说,设备管理器不是WinCE操作系统内核的一部分,仅仅是一个用户态下的普通进程,而且没有设备管理器WinCE也一样可以启动、运行。但设备管理器在WinCE中的作用却非常重要。<br />在WinCE系统启动时,设备管理器会随着启动,并且在整个系统运行时都会持续运行。在Common.reg中可以看到device.exe的启动:<br />……<br原创 2011-03-23 14:05:00 · 1107 阅读 · 0 评论 -
驱动程序的资源
<br />驱动程序资源管理是编写设备驱动程序的一个核心,它由以下几部分组成:<br />l 资源管理器;<br />l 中断处理和IST模型;<br />l 设备驱动程序内存管理。1.资源管理器<br />系统的资源(包括IRQ和I/O空间)是由系统表配置和定义的。2.中断处理和IST模型<br />WinCE提供了一个有效的中断处理机制,它把对中断的处理分为两部分:中断服务例程(ISR)和中断服务线程(IST)。ISR通常要求短小精悍,效率要求很严格。它只决定该怎样处理这个中断,一般情况下不应该做太多的原创 2011-03-23 14:15:00 · 581 阅读 · 0 评论 -
驱动程序的电源管理-ing
<br />留空待续原创 2011-03-23 15:38:00 · 445 阅读 · 0 评论 -
BSP工程相关文件介绍
1.pbcxml分析<br />每一个BSP都有一个工程文件,比如MyBSP.pbcxml,里面描述了BSP的信息。下面就来介绍一下BSP的pbcxml文件。<br />文件的大致格式应该是这样的:<br /><CatalogFile …><br /><FileInformation ….><br />….<br /></FileInformation><br /><BSP …><br />…<br /></BSP><br /><Item …><br />…<br /></Item><br /><Item原创 2011-03-23 16:58:00 · 741 阅读 · 0 评论 -
WinCE应用程序开发-ing
留空待续…原创 2011-03-24 00:23:00 · 506 阅读 · 0 评论 -
WinCE发展历程
<br />如下所示为WinCE的发展历程表:<br /><br />而由此看来,WinCE已经发展了好多年了,并且有了很多版本,当然,上面这个图还不全啊,在这以后,微软又更新了Windows Embedded CE 6.0 的SP1和R2;而在2008年4月微软推出了Windows Mobile 6.1,内核仍为Windows CE 5.2;最后,在2009年2月16日微软推出了新一代手机系统——Windows Mobile 6.5,并宣布,Windows mobile 6.5以后的名字不再使用,而是统一原创 2011-03-23 00:49:00 · 781 阅读 · 0 评论 -
PB 6.0环境的搭建与使用
1.安装程序的准备<br />如下图所示为安装开发环境所需的所有软件:<br />2.安装流程<br />参考向导文档Windows Embedded CE 6.0 R3 Install Guide.htm,安装顺序如下:<br />Step<br />Name<br />Setup File[相对安装根目录]<br />Remark<br />1<br />VS2005<br />VS2005 Team Suite_VSS_MSDN_VISIO.iso<br />[/vs/autorun.exe]<br原创 2011-03-23 10:48:00 · 1714 阅读 · 0 评论 -
映像配置文件-ing
1.BIB文件<br />2.REG文件<br />3.DAT文件<br />4.DB文件<br /><br /><br />原创 2011-03-23 13:30:00 · 425 阅读 · 0 评论 -
驱动程序的分类
1.内建的驱动程序与可安装的驱动程序<br />按照驱动程序导出的接口不同,驱动程序可以分为本地设备驱动程序和流接口驱动程序。<br />内建驱动程序(Built-in Driver)有时也称为本地驱动程序(Native Device Driver),它们被静态地链接到GWES。<br />可安装的驱动程序(Installable Driver)也称为流设备驱动程序(Streams Device Driver),它们是由设备管理器(device.exe)动态加载的用户模式的DLL。<br />只有极少数驱动原创 2011-03-23 14:03:00 · 1390 阅读 · 0 评论 -
流接口设备驱动
<br />在WinCE中,最简单的一个驱动程序莫过于一个内置(Built-in)设备的流接口驱动。对于一个不支持热拔插的设备,最快捷的方法就是为其实现一个内置的流接口的驱动。<br />对于这样一类驱动程序,我们只需要按一种特定的规则实现一个动态库,其中实现对所有的硬件功能的调用,再将这个动态库加入系统中,然后设置相关的注册表项,使得在系统启动时设备管理器能识别并且加载这个设备即可。1.流接口设备驱动的架构<br />流接口驱动借助文件系统调用从设备管理器和应用程序接收命令,驱动封装了所有的信息,这些信息原创 2011-03-23 15:24:00 · 954 阅读 · 0 评论 -
CEDDK-ing
<br />留空待续原创 2011-03-23 16:57:00 · 470 阅读 · 0 评论 -
/r/n与/n的区别
<br />/r表示回车,/n表示换行,我们按回车按钮的时候,系统自动产生回车和换行两个字符。 <br />回车仅仅是表示完成,把光标回到行首,换行仅仅是换行,不表示完成,也不把光标放到行首。原创 2011-03-24 00:29:00 · 1615 阅读 · 0 评论 -
OneNand&Nand&Nor三种Flash的区别
OneNand&Nand&Nor三种Flash的区别<br />NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在Flash 闪存内运行,不必再把代码读到系统RAM中。 NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 <br />NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口。 <br />OneNand是针对原创 2011-04-21 18:07:00 · 982 阅读 · 0 评论 -
执行延时检测方式
#if TRUE RETAILMSG(TRUE, (TEXT("******** +delay 2s/r/n"))); for (int nCount = 0; nCount ; RETAILMSG(TRUE, (TEXT("******** -delay 2s/r/n")));原创 2011-03-24 00:30:00 · 528 阅读 · 0 评论 -
内存管理-ing
1.ROM和RAM2.虚拟内存模型3.虚拟地址映射4.用户地址空间原创 2011-03-23 10:33:00 · 378 阅读 · 0 评论 -
RETAILMSG和DEBUGMSG的区别
<br />DEBUGMSG只在DEBUG版中有效,RELEASE版中它被定义成了NULL<br />RETAILMSG在DEBUG和RELEASE版中都可以输出,而且DEBUGMSG可以在运行时刻用DEBUZONE控制要不要输出信息。<br />在ship build 时,RETAILMSG 和DEBUGMSG都无效原创 2011-03-24 00:29:00 · 924 阅读 · 0 评论 -
专业术语解析
1.同步与异步<br />同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。 <br />异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等下才去吃饭。<br />在多数情况下,线程之间难免要相互通信、相互协调才能完成任务。比如,当有多个线程共同访问同一个资源时,就必须保证一个线程正读取这个资源数据的时候,其它线程不能够修改它。这就需要线程之间相互通信,了解对方的行为。<br />再有当一个线程要准备执行下一个任务之前,它必须等待另一个线原创 2011-03-24 00:26:00 · 652 阅读 · 0 评论 -
WinCE系统架构
<br />WinCE系统架构图如下所示:<br /><br />嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。1.硬件层<br />硬件层是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。<br />硬件层比较适合于,电子、通信、自动化、机电一体原创 2011-03-23 10:08:00 · 1108 阅读 · 0 评论 -
文件系统
<br /> 文件系统是一个实现了数据的存储、组织、处理和获取等操作的抽象数据类型。一般分为磁盘文件系统,网络文件系统和特定功能的文件系统。<br />磁盘文件系统主要包括FAT(FAT12、FAT16、FAT32),NTFS、HFS、ext2、ext3,现在ext4也出来了。<br />FLASH文件系统是针对FLASH存储器设计的文件系统。随着移动设备的不断普及,和FLASH存储空间的不断增长,FLASH文件系统也流行起来。在嵌入式系统中,绝大多数都使用FLASH文件系统。<br />数据原创 2011-03-23 10:30:00 · 669 阅读 · 0 评论 -
WinCE自带的远程工具及简介
1.viewbin<br />viewbin是微软提供的一个命令行工具,在WinCE6.0中,可以在"/WINCE600/PUBLIC/COMMON/OAK/BIN/I386"找到它。viewbin工具可以用来查看NK.bin文件。它可以从NK.bin中获得这个NK image的大小,运行的起始地址等。还能查看到里面所包含的模块,应用程序及相关的信息。<br />viewbin的使用格式如下:<br />viewbin [parameter] [filename]<br />在VS2005中“”命令列表下,原创 2011-03-23 11:02:00 · 637 阅读 · 0 评论 -
驱动程序的加载机制
<br />设备驱动程序的加载过程如下图所示:<br /><br />1. 当在OAL中的OEMInit运行时,需要启动以太网调试、串口调试等调试服务;<br />2. OAL可能需要配置和列举一个总线,如PCI总线,以便操作一个用于调试的设备;<br />3. OAL负责将这个资源信息放到一个注册表键,并使驱动程序可访问它。然后,Device.exe被加载和启动,它加载资源管理器以从注册表读取一个可用的资源列表。<br />4. Device.exe从[HKEY_LOCAL_MACHINE/Drivers原创 2011-03-23 15:06:00 · 585 阅读 · 0 评论 -
驱动中注册表的作用
<br />注册表主要键的作用<br />[HKEY_LOCAL_MACHINE/Drivers/Active] :所有已经加载的驱动信息都放在该键下;<br />[HKEY_LOCAL_MACHINE/Drivers/Active] :所有要Device.exe加载的驱动都放在该键下面;<br />驱动主要键的作用<br />DLL:指明了该驱动使用的动态库;<br />Prefix:表明驱动的前缀,前缀通常是3个大写的英文字母,通过前缀就知道导出的函数,例如XXX.Init();<br />Index:原创 2011-03-23 15:07:00 · 803 阅读 · 0 评论 -
总线驱动
<br />总线驱动负责决定加载哪一个驱动,以及以什么顺序加载总线上的设备。<br />总结驱动的例子包括:<br />l PCI总线驱动(PCIBus.dll);<br />l PC Card总线驱动;<br />l IEEE 1394总线驱动;<br />l USB总线驱动。1.Bus Agnostic驱动<br />使用Bus Agnostic驱动模型的驱动程序可以在不同的总结上执行,典型情况下,比其他类型的驱动能更容易在不同的硬件平台之间移植。2.PCI总线驱动<br />PCI总线是可自配置的,它原创 2011-03-23 15:14:00 · 565 阅读 · 0 评论 -
WinCE电池驱动——使用LM339实现
1.概述<br />WinCE电池驱动属于分层驱动,由MDD层和PDD层组成。驱动示例代码位于%_WINCEROOT%/Public/Common/Oak/Drivers/Battdrvr。其中battdrvr.c是MDD层代码,sbattif.c是PDD层代码。MDD层代码微软已经搭好架构,一般不需要修改,我们要实现的是PDD层的代码。2.MDD层<br />电池驱动对外接口函数没有“BAT_”前缀,因为HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Battery/Flags注册表原创 2011-03-23 18:01:00 · 1316 阅读 · 0 评论 -
定制WinCE Shell-ing
<br />留空待续…原创 2011-03-23 23:20:00 · 520 阅读 · 0 评论 -
英文缩写对应
1.A<br />ATLActive Template Library活动模板库2.B<br />BCDBinary-Coded Decimal二进制编码的十进制<br />BIBBinary Image BuilderBIB文件<br />BSPBoard Support Package板级支持包3.C<br />CEDDK WinCE Driver Development KitWinCE驱动程序开发工具<br />COMComponent Object Model件对象模型<br />CSPChip原创 2011-03-24 00:25:00 · 963 阅读 · 0 评论 -
因变量定义位置不同有时出现非法错误
1.异常源码样例:<br />{<br />...fun();<br />DWORD dwLSThreadID = 0;<br />}2.异常表现:<br />error C2275: 'DWORD' : illegal use of this type as an expression3.处理方法:<br />{<br />DWORD dwLSThreadID = 0;<br />...fun();<br />}原创 2011-03-24 00:28:00 · 821 阅读 · 0 评论 -
WinCE基本介绍
<br />Windows CE 是为各种嵌入式系统和产品设计的一种压缩的、具有高效的、可升级的操作系统(OS)。其多线性、多任务、全优先的操作系统环境是专门针对资源有限而设计的。这种模块化设计使嵌入式系统开发者和应用开发者能够定做各种产品,例如家用电器,专门的工业控制器和嵌入式通信设备。Windows CE支持各种硬件外围设备、其它设备及网络系统。包括键盘、鼠标设备、触板、串行端口、以太网连接器、调制解调器、通用串行总线(USB)设备、音频设备、并行端口、打印设备及存储设备,例如PC卡。 <br />原创 2011-03-23 00:48:00 · 1490 阅读 · 0 评论 -
命令行工具
1.WinCE 6.0 NK编译选项介绍<br />在WinCE6.0中,在VS2005的"Build"菜单中,有一个“Advanced Build Commands”,其中有很多编译选项<br />"Sysgen":相当于执行命令"blddemo -q”,一般第一次编译或者是改变了"Catalog"中的item的时候,就用这个了。<br />"Clean Sysgen":相当于执行命令"blddemo clean -q",当修改了 %_WINCEROOT%/PUBLIC/CEBASE/OAK/MISC/C原创 2011-03-23 13:29:00 · 439 阅读 · 0 评论 -
WinCE的Boot Loader
(一)Boot Loader的概念<br />Boot Loader是用来管理目标设备启动过程的目标特定的程序,其功能有如下:<br />1.初始化目标设备硬件(建立系统的内存空间映射图,将系统的软硬件带到一个已知的状态);<br />2.允许将WinCE操作系统运行时映像从开发工作站下载到WinCE目标设备的RAM或者再将它写入到Flash;<br />3.跳转到操作系统的起始点去启动操作系统。(二)Boot Loader两种不同的操作模式1.启动加载模式<br />属于正常工作模式,Boot Loade原创 2011-03-23 13:32:00 · 626 阅读 · 0 评论 -
BSP驱动文件结构及配置说明-ing
1.驱动文件结构图<br />(1)XXX.h文件说明<br />文件头说明如下图所示:<br /><br />定义内、外部函数定打印Log开关:<br />#ifndef __XXXXXX_H__ <br />#define __XXXXXX_H__<br /><br />#define public<br />#defineprivatestatic<br /><br />#define OPEN_XXXXXX_LOGFALSE//打Log开关,FALSE/TRUE:关/开<br /><br />//模原创 2011-03-23 17:02:00 · 992 阅读 · 0 评论 -
WinCE虚拟串口驱动-ing
<br />留空待续原创 2011-03-23 18:01:00 · 562 阅读 · 0 评论 -
WinCE SD驱动分析
1.SD驱动架构<br /><br />如上图所示,WinCE下SD卡驱动协议栈组成 :<br />HOST硬件底层部分 (主控制端驱动)SDHC_XXX.DLL<br />BUS 中间逻辑命令层 (总线驱动)SDBUS.DLL<br />CLIENT上层(客户端驱动)SDMEMORY.DLL(1)主控制端驱动<br />主控制端驱动控制包含主控制器硬件,遵循主控制端驱动接口,它被用于总线驱动通信和设置操作参数。主控制器驱动接口提供一个硬件提取层,在总线和主控制端执行之间。即:SDHC_XXX.DLL是最底原创 2011-03-23 22:39:00 · 960 阅读 · 0 评论 -
do...while(FALSE)的两个妙用
一、使用do...while(FALSE)消除goto语句。通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样:Sample I:bool Execute(){ // 分配资源 int *p = new int; bool bOk(true);原创 2011-06-08 17:36:00 · 740 阅读 · 0 评论