08 2010 档案

摘要:请参考 http://blog.csdn.net/FLandY1982/archive/2009/12/24/5070059.aspx 阅读全文
posted @ 2010-08-31 17:37 温工 阅读(428) 评论(0) 推荐(1) 编辑
摘要:1. PDD层代码简单分析PDD层的主要包含了以下2个类:CSerialPDDPowerUpCallback,CSerialPDD,下面简单的分析这2个类的作用。1.1 CSerialPDDPowerUpCallbackCSerialPDDPowerUpCallback类用于串口电源上电时的处理。在调用CSerialPDD::Init()后会创建一个CSerialPDDPowerUpCallbac... 阅读全文
posted @ 2010-08-31 17:34 温工 阅读(1615) 评论(0) 推荐(1) 编辑
摘要:在WinCE5.0中,在"Build OS”菜单中,我们会看到不同的编译选项:"Sysgen","Build and Sysgen"和"Build and Sysgen current BSP"Sysgen:不用多说,当你在"Catalog"中添加或删除了新的item的时候,就用这个吧。Build and Sysgen:当你更新了\public目录下的源代码的时候,你就需要用这个了。一... 阅读全文
posted @ 2010-08-31 16:10 温工 阅读(666) 评论(0) 推荐(0) 编辑
摘要:1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectio... 阅读全文
posted @ 2010-08-31 16:09 温工 阅读(2347) 评论(0) 推荐(1) 编辑
摘要:在WinCE中有很多的环境变量,那么如何设置/删除/查询这些环境变量呢:   1. 查询环境变量:无论是在WinCE5.0还是WinCE6.0,当我们在PB里打开或者创建一个工程以后,我们可以在菜单中点“build”->“Open Release Directory in Build Window”,然后会弹出命令行对话框。在对话框中输入&ld... 阅读全文
posted @ 2010-08-30 13:59 温工 阅读(1757) 评论(0) 推荐(1) 编辑
摘要:在WinCE下面,创建工程,然后编译是需要花很长时间的。当我们第一编译完工程以后,如果需要改我们的驱动或者BSP,我们是不需要重新编译整个工程的:   1. 如果更改了driver,以WinCE6.0为例,我们可以在菜单里面选择“build”->“Open ReleaseDirectory in Build Window”,然后在弹出的命令行窗... 阅读全文
posted @ 2010-08-30 13:47 温工 阅读(329) 评论(0) 推荐(0) 编辑
摘要:作用:告诉编译器,已经使用了该变量,不必检测警告!在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告。当你生命了一个变量,而没有使用时,编译器就会报警告:“warning C4100: ''XXXX'' : unreferenced formal parameter.”所以,为了让编译器不必检测你的警告,就使用UNREFERENCED_PAR... 阅读全文
posted @ 2010-08-30 11:27 温工 阅读(231) 评论(0) 推荐(0) 编辑
摘要:调用directshow出现链接错误,如何解决? player.obj : error LNK2001: unresolved external symbol _IID_IVideoWindowplayer.obj : error LNK2001: unresolved external symbol _IID_IMediaControl这是因为链接器没有找到合适的.lib文件。两种办法:1、在E... 阅读全文
posted @ 2010-08-28 11:15 温工 阅读(698) 评论(0) 推荐(0) 编辑
摘要:/*******************************************作 者:温子祺*联系方式:wenziqi@hotmail.com*说 明:WINCE常见错误码*内容版权:Microsoft******************************************/在编写WINCE驱动的时候,我们总是常见到如下的错误码如 ERROR_SUCCESS ERROR_... 阅读全文
posted @ 2010-08-26 14:34 温工 阅读(1812) 评论(0) 推荐(0) 编辑
摘要:导读:从本篇文章开始,将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型。主人公阿愚将在这里与大家分享SEH的学习过程和经验总结。  SEH有两项非常强大的功能。当然,首先是异常处理模型了,因此,这篇文章首先深入阐述SEH提供的异常处理模型。另外,SEH还有一个特别强大的功能,这将在下一篇文章中进行详细介... 阅读全文
posted @ 2010-08-26 14:19 温工 阅读(3978) 评论(0) 推荐(0) 编辑
摘要: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 温工 阅读(311) 评论(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 温工 阅读(324) 评论(0) 推荐(0) 编辑
摘要:在BSP开发中经常会用到物理地址与虚拟地址的转换,一般都是基于物理地址获得相应的虚拟地址来访问硬件。在WinCE6.0中,可以在WINCE600\Platform\Common\Src\Inc\Oal_memory.h文件中找到相关的操作函数,这些函数用来虚拟地址与物理地址之间的转换,它们都是基于OEMAddressTable表的。也就是说,首先要在OEMAddressTable中定义虚拟地址到物... 阅读全文
posted @ 2010-08-25 14:37 温工 阅读(401) 评论(0) 推荐(0) 编辑
摘要:在WinCE OAL中的电源管理主要由OEMIdle和OEMPowerOff两个函数实现。应该说OEMIdle实现的是处理器级的电源管理,而OEMPowerOff实现的是板级的电源管理。在WinCE系统运行的时候,如果没有任何线程可以执行,那么内核就会调用OEMIdle函数。一般在OEMIdle中,处理器都会进入sleep模式或者idle模式,这取决于处理器本身所能支持的低功耗模式。应该说,这个时... 阅读全文
posted @ 2010-08-25 14:32 温工 阅读(316) 评论(0) 推荐(0) 编辑
摘要:在WinCE的开发环境中支持Debug Zones功能,通常也被称为调试域,通过它可以控制打印信息。当某个调试域被打开以后,在这个域中的打印信息就会被打印出来,如果某个调试域被关闭了,那么这个域中的打印信息就会被关闭。调试域是基于模块的,也就是说一个模块,可能是在一个驱动或者一个应用中都可以定义一个调试域,用来调试该模块。一个调试域最多可以包括16个域,一般在每一个模块中都会有一个全局变量dpCu... 阅读全文
posted @ 2010-08-25 14:29 温工 阅读(355) 评论(0) 推荐(0) 编辑
摘要:代码 阅读全文
posted @ 2010-08-25 14:24 温工 阅读(580) 评论(0) 推荐(0) 编辑
摘要:对于实时系统,如何调试是一个很难解决的问题,包括对系统内核的调试,对驱动程序的调试,对应用程序的调试等。对于应用程序,通常各集成开发环境都提供了常规的单步跟踪等调试手段。而对于另两个的调试,Platform Builder除了为我们提供了常规的断点跟踪等手段以外,还和系统的源程序配合使用了一种新的调试手段——Debug Zones调试区。通常,我们都是利用OutputDeb... 阅读全文
posted @ 2010-08-25 14:13 温工 阅读(495) 评论(0) 推荐(1) 编辑
摘要:在WinCE中支持两种类型的注册表:RAM-Based和HIVE-Based,默认情况下使用的是RAM-Based注册表。 1.RAM-Based注册表   RAM-Based的注册表是将所有的注册表数据存储在对象存储(object store)中,也就是存放在RAM里面。一般用在有电池备份RAM的系统上面,也就是说,当系统掉电以后,会自动切换成电池供电,此时RAM还有供电,所以上面的数据不会丢失... 阅读全文
posted @ 2010-08-24 18:32 温工 阅读(2055) 评论(0) 推荐(0) 编辑
摘要:嵌入式设备与桌面PC的一个显著不同是它的应用程序中通常需要直接访问某一段物理内存,这在驱动程序中对物理内存的访问尤为重要,尤其是像ARM体系结构下,I/O端口也被映射成某一个物理内存地址。因此,与桌面版本Windows相比,Windows CE提供了相对简单的物理内存访问方式。无论是驱动程序还是应用程序都可以通过API访问某一段物理内存。Windows CE的有些函数中需要用到物理内存结构体PHY... 阅读全文
posted @ 2010-08-24 18:27 温工 阅读(1133) 评论(0) 推荐(0) 编辑
摘要:Windows CE 6.0有4个基本的注册表键值, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS。其它的都是这4个注册表的子键。我 们以一个内建的串口驱动为例,它在注册表文件Platform.reg中的描述如下: 其中Prefix 和 Dll项是必不可少的,Prefix代表设备文件名前缀, 与Index合... 阅读全文
posted @ 2010-08-24 18:25 温工 阅读(4324) 评论(0) 推荐(1) 编辑
摘要:在config.bib(boot.bib?)文件中,有如下三个设置:ROMSTART=xxxxROMWIDTH=xxxxROMSIZE=xxxxxx这3个变量必须被赋值.nk.bin 和nk.nb0都是CE的镜像。然而,我们在下载的过程中常常会遇到,有时候下载nk.bin,有时确是下载nk.nb0,这两者到底有什么区别呢? 首先,NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。... 阅读全文
posted @ 2010-08-24 18:21 温工 阅读(836) 评论(0) 推荐(1) 编辑
摘要:很多人对CRITICAL_SECTION的理解是错误的,认为CRITICAL_SECTION是锁定了资源,其实,CRITICAL_SECTION是不能够“锁定”资源的,它能够完成的功能,是同步不同线程的代码段。简单说,当一个线程执行了EnterCritialSection之后,cs里面的信息便被修改了,以指明哪一个线程占用了它。而此时,并没有任何资源被“锁定&r... 阅读全文
posted @ 2010-08-24 17:26 温工 阅读(770) 评论(0) 推荐(0) 编辑
摘要:如何解决Error: failed PB timebomb check 编译windowsCE6.0的EBOOT的时候,都最后跳出来一个错误:Error: failed PB timebomb check定时炸弹?于是网上搜索,找到了解决方法1.更改系统时间,将系统时间前推几个月再makeimage就好了。我试了这种方法可行的,就是麻烦些。2.下载某强大MVP大牛crack后的romimag.ex... 阅读全文
posted @ 2010-08-24 13:46 温工 阅读(679) 评论(0) 推荐(0) 编辑
摘要:映射硬件寄存器当然PAGE_NOCACHE是必须加的。TransBusAddrToStatic函数负责将物理地址映射到ISR能够访问的静态虚拟地址空间中,当出现中断共享时,ISR要负责访问硬件设备的某一个寄存器来判断中断源,所以将寄存器的物理地址映射到静态虚拟地址空间中是必要的(ISR只能访问静态的虚拟地址空间)。所谓静态虚拟地址空间是指在OEMAddressTable中定义的虚拟地址空间(当然是... 阅读全文
posted @ 2010-08-23 17:49 温工 阅读(295) 评论(0) 推荐(0) 编辑
摘要:函数SerInit接着调用函数Ser_InternalMapRegisterAddresses转换IO地址并且映射地址,Ser_InternalMapRegisterAddresses在内部调用系统提供的HalTranslateBusAddress(Isa, 0, ioPhysicalBase, &inIoSpace, &ioPhysicalBase)函数将与总线相关的地址转换为系... 阅读全文
posted @ 2010-08-23 17:48 温工 阅读(357) 评论(0) 推荐(0) 编辑
摘要:在这里顺便提一下可安装ISR,读者在我以前发表的关于OAL的文章中可以了解到OEM在OEMInit函数中关联IRQ和SysIntr,当硬件设备发生中断时,ISR会禁止同级和低级中断,然后根据IRQ返回关联的SysIntr,内核根据ISR返回的SysIntr唤醒相应的IST(SysIntr与IST创建的Event关联),IST处理中断之后调用InterruptDone解除中断禁止。在OEMInit中... 阅读全文
posted @ 2010-08-23 17:47 温工 阅读(344) 评论(0) 推荐(0) 编辑
摘要:SysIntr由CE在文件Nkintr.h中预定义,用于唯一标识中断设备。OEM可以在文件Oalintr.h中定义自己的SysIntr。常见的预定义SysIntr有SYSINTR_NOP(中断只由ISR处理,IST不再处理),SYSINTR_RESCHED(重新调度线程),SYSINTR_DEVICES(由CE预定义的设备中断ID的基值),SYSINTR_PROFILE、SYSINTR_TIMIN... 阅读全文
posted @ 2010-08-23 17:46 温工 阅读(334) 评论(0) 推荐(0) 编辑
摘要:Windows CE下的串口驱动程序能够处理所有I/O行为类似串口的设备,包括基于16450、16550 UART(通用异步收发芯片)的设备和一些采用DMA的设备,常见的有9针串口、红外I/O口、Modem等。在%_WINCEROOT%\Public\Common\OAK\Drivers\Serial目录下,COM_MDD2子目录包含新的串口驱动MDD层函数代码。COM16550子目录包含串口驱动... 阅读全文
posted @ 2010-08-23 17:45 温工 阅读(446) 评论(0) 推荐(0) 编辑
摘要:(1)IO接口是XSCale处理器的外部设备,对于一般的单片机,可以直接操作硬件,即通过直接读写IO端口来访问硬件.而对于WICNE操作系统,它屏蔽了用户应用程序对硬件访问的权限,只有内核应用程序才可以访问硬件资源.如果要直接访问某一址的物理内存(对于ARM核的MCU,IO端口地址通常被映射到物理内存中,内存和IO统一编址)可以采用内存映射方法,将该硬件寄存器映射到普通的内存空间,像操作内存地址一... 阅读全文
posted @ 2010-08-23 17:41 温工 阅读(991) 评论(0) 推荐(0) 编辑
摘要:/****************************************************作 者:温子祺*联系方式:wenziqi@hotmail.com***************************************************/1:在options文件允许#define KITL_SERIAL_UART0或者允许#define KITL_SERIAL_... 阅读全文
posted @ 2010-08-23 13:36 温工 阅读(234) 评论(0) 推荐(0) 编辑
摘要:/****************************************************作 者:温子祺*联系方式:wenziqi@hotmail.com***************************************************/例子1:PB6.0通过Clear SysGen产生的TOC编译信息。Found pTOC at 0000156cNo impo... 阅读全文
posted @ 2010-08-23 13:17 温工 阅读(391) 评论(0) 推荐(1) 编辑
摘要:CheckSum是一种用于检查数据文件有没有发生变化的方法,对于一些重要的数据文件为了检查传输过程过程中有没有数据的损坏或丢失,常常会用到CheckSum算法。WinCE中经常用到CheckSum的地方就是对即将烧写进Flash中的image文件进行校验,和烧写完对写入的数据进行完整性检查,一般这里的image有OSimage和UT的bin文件两种。CheckSum的原理是把一个文件以二进制的方式... 阅读全文
posted @ 2010-08-23 10:12 温工 阅读(251) 评论(0) 推荐(0) 编辑
摘要:网上不少介绍三星24x0系列的BINFS启动方式实现,有些内容上描述的不是非常全面下面就WinCE6上的BINFS实现,从基本原理到修改BSP,再到如何烧录启动做一个较全面的讲解一 BINFS到底是什么?其实BINFS就是MS给CE做的一种存放系统镜像的一个文件系统。一说文件系统,大家可能比较头大。那么这么说,其实就是一个结构体(说是文件系统确实比较勉强,结构体可能更合适),里面有记录各模块的起始... 阅读全文
posted @ 2010-08-23 10:12 温工 阅读(896) 评论(0) 推荐(0) 编辑
摘要:执行cebuild.bat批处理文件。cebuild.bat调用sysgen.bat批处理文件。sysgen.bat调用cesysgen.bat批处理文件,cesysgen.bat负责在*.wce文件中搜索用户选择的特征,然后形成一系列环境变量。之后PB会显示这些变量,下面几个步骤就是显示收集的变量。产生SYSGEN变量。每个SYSGEN变量对应一个特征。产生CE_MODULE、COREDLL_C... 阅读全文
posted @ 2010-08-23 10:10 温工 阅读(1680) 评论(0) 推荐(0) 编辑
摘要:在这里只是对OEMIoControl中比较常用的case说一说。看看PB的文档就知道OEMIoControl函数可以包含很多case而且被分了类。下面就我个人接触到的和比较常用的做个说明:1. IOCTL_HAL_INIT_RTC:对应OALIoctlHalInitRTC函数,该case用于重新原始化RTC。在系统冷启动的时候,内核会调用它来配置时钟。dwIoControlCode:IOCTL_H... 阅读全文
posted @ 2010-08-23 10:08 温工 阅读(499) 评论(0) 推荐(0) 编辑
摘要:2 OAL层中断程序汇总关于WinCE的中断处理,OAL中主要是实现了ISR部分,一般IST会在设备驱动中实现。架构如图:硬件中断产生以后,会导致内核ISR的运行,然后由OAL中的ISR来处理相应的中断,最后导致相对应的IST运行完成真正的中断处理。所以在WinCE中,中断处理由ISR和IST共同完成。ISR主要完成中断源的确定,屏蔽该中断并返回给内核相对应的系统中断号,ISR应该尽量短小。IST... 阅读全文
posted @ 2010-08-23 09:37 温工 阅读(495) 评论(0) 推荐(0) 编辑
摘要:1.总体了解流程首先描述wince5.0 (2440BSP)的中断流程:流程1.创建事件aà创建线程ISTà用InterruptInitialize〈系统中断号绑定线程IST〉à线程IST进入等待事件a状态(挂起状态)。流程2.外部引发中断à OEMInterruptHandler<屏蔽中断à把物理中断转换成系统中断,其他... 阅读全文
posted @ 2010-08-23 09:35 温工 阅读(1045) 评论(0) 推荐(1) 编辑
摘要:去耦电容和旁路电容的区别 旁路电容不是理论概念,而是一个经常使用的实用方法,在50 -- 60年代,这个词也就有它特有的含义,现在已不多用。电子管或者晶体管是需要偏置的,就是决定工作点的直流供电条件。例如电子管的栅极相对于阴极往往要求加有负压,为了在一个直流电源下工作,就在阴极对地串接一个电阻,利用板流形成阴极的对地正电位,而栅极直流接地,这种偏置技术叫做“自偏”,但是对(... 阅读全文
posted @ 2010-08-17 09:33 温工 阅读(525) 评论(0) 推荐(0) 编辑
摘要:电容器在电子电路中几乎是不可缺少的储能元件,它具有隔断直流、连通交流、阻止低频的特性。广泛应用在耦合、隔直、旁路、滤波、调谐、能量转换和自动控制等电路中。熟悉电容器在不同电路中的名称意义,有助于我们读懂电子电路图。1.滤波电容它接在直流电源的正、负极之间,以滤除直流电源中不需要的交流成分,使直流电平滑。一般常采用大容量的电解电容器,也可以在电路中同时并接其他类型的小容量电容以滤除高频交流电。2.退... 阅读全文
posted @ 2010-08-17 09:32 温工 阅读(1757) 评论(0) 推荐(0) 编辑
摘要:在看芯片资料和电路原理图中常常遇见诸如VCC,VDD之类的标志,它们究竟是如何这样命名的呢?它们的命名有如何含义呢?经过查资料才发现它们是这样的:VCC表示连接到三极管集电极(C)的电源。VEE表示连接到三极管发射极(E)的电源。VDD表示连接到场效应管的漏极(D)的电源。VSS表示连接到场效应管的源极(S)的电源。通常VCC和VDD为电源正,而VEE和VSS为电源负或者地。AGND:模拟地PGN... 阅读全文
posted @ 2010-08-17 09:26 温工 阅读(845) 评论(0) 推荐(0) 编辑
摘要:/*---------------------------------------------------------------作 者:温子祺联系方式:wenziqi@hotmail.com说 明:软件ECC文件来源:Microsoft---------------------------------------------------------------*/文件路径 C:\WINCE600... 阅读全文
posted @ 2010-08-16 16:00 温工 阅读(839) 评论(0) 推荐(0) 编辑
摘要:/*---------------------------------------------------------------作 者:温子祺联系方式:wenziqi@hotmail.com说 明:WINCE复位操作---------------------------------------------------------------*/C:\WINCE600\PLATFORM\Mini2... 阅读全文
posted @ 2010-08-16 15:33 温工 阅读(488) 评论(1) 推荐(1) 编辑
摘要:/*---------------------------------------------------------------文件名称:ASSERT.h说 明:ASSERT宏作 者:温子祺创建时间:2010-08-06联系方式:wenziqi@hotmail.com博 客:http://www.cnblogs.com/wenziqi/小 组:http://group.ednchina.com/... 阅读全文
posted @ 2010-08-13 15:11 温工 阅读(649) 评论(0) 推荐(1) 编辑
摘要:代码(请复制整个下载地址到迅雷、快车、QQ旋风进行下载)下载地址:http://files.cnblogs.com/wenziqi/SmartMUdpDll.rar 阅读全文
posted @ 2010-08-07 11:13 温工 阅读(927) 评论(0) 推荐(1) 编辑
摘要:代码(请复制整个下载地址到迅雷、快车、QQ旋风进行下载)下载地址:http://files.cnblogs.com/wenziqi/SmartMTcpDll.rar 阅读全文
posted @ 2010-08-07 11:11 温工 阅读(1081) 评论(0) 推荐(0) 编辑
摘要:代码(请复制整个下载地址到迅雷、快车、QQ旋风进行下载)下载地址:http://files.cnblogs.com/wenziqi/SmartMUsbHidDll.rar 阅读全文
posted @ 2010-08-07 11:10 温工 阅读(3283) 评论(2) 推荐(0) 编辑
摘要:代码(请复制整个下载地址到迅雷、快车、QQ旋风进行下载)下载地址:http://files.cnblogs.com/wenziqi/SmartMCH37xDll.rar 阅读全文
posted @ 2010-08-07 11:07 温工 阅读(716) 评论(0) 推荐(0) 编辑
摘要:代码(请复制整个下载地址到迅雷、快车、QQ旋风进行下载)下载地址:http://files.cnblogs.com/wenziqi/SmartMComDll.rar 阅读全文
posted @ 2010-08-07 11:04 温工 阅读(2050) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示