Windows CE
文章平均质量分 79
shevsten
这个作者很懒,什么都没留下…
展开
-
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(8)-USB Function驱动
同样,USB Function驱动也在SMDK2410中实现了.这里像前几篇一样把该驱动从/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/USB复制到/PLATFORM/GEC2410/SRC/COMMON/S3C2410X/USB1.添加组件为了能识别我们插上板子USB口的U盘,我们需要添加Mass Storage组件,以支持存储设备.还需要添加U原创 2010-02-04 16:31:00 · 835 阅读 · 0 评论 -
Windows CE串口驱动简析(2)-PDD层实现:CReg2410Uart和TX部分(基于WinCE5.0 SMDK2410 BSP的Serial驱动)
现在我们就来看看SMDK2410中串口驱动的PDD部分.MDD层和PDD COMMON层都是由微软提供的,一般情况下我们基本无须改动.微软为开发者提供了一个CSerialPDD类作为开发工作的起点.CSerialPDD是个纯虚类,我们需要将驱动程序的PDD层定义成CSerialPDD类的继承类,其成员必须准确全面的反应目标硬件平台的特定类型串口的属性.原创 2010-06-10 14:23:00 · 3744 阅读 · 5 评论 -
Windows CE串口驱动简析(1)-驱动架构(基于WinCE5.0 SMDK2410 BSP的Serial驱动)
WinCE5.0 SMDK2410 BSP的串口驱动由两个文件组成.一个在BSP目录下的/SRC/DRIVERS/SERIAL/ser_smdk2410.cpp,另一个在/WINCE500/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL/pdds3c2410_ser.cpp,为了实现BSP的完整性,并方便修改,在移植到GEC2410的时候,将该目录下的所有文件放到BSP目录下,特别的对于串口驱动,我把pdds3c2410_ser.cpp同样也放到BSP目录原创 2010-06-08 15:05:00 · 3509 阅读 · 2 评论 -
Windows CE USB Function Driver驱动简析(1)-驱动架构及UfnPdd函数(基于WinCE5.0 SMDK2410 BSP的UFBFN驱动)
s3c2410有2个USB Host接口,一个Device接口.首先介绍下USB的几个概念:USB是主从结构的,PC是主端(Host),连接到PC上的设备就是从端(device或function).因此对应的驱动分别叫做USB Host Driver及USB Function Driver。我们的板子可以做host也可以做device,接U盘,鼠标到板子上,板子就是Host.板子连到PC作为Mass Storage或者用Activesync连接就是function.原创 2010-07-15 13:35:00 · 6240 阅读 · 0 评论 -
WinCE6.0 DEVICEEMULATOR BSP在GEC2410开发板上的移植(1)-eboot及串口驱动移植
WinCE6.0自带的DEVICEEMULATOR就是基于s3c2410处理器的模拟器,我们可以经过修改让其运行在我们的GEC2410开发板上.之前想直接用5.0的eboot来下载6.0的镜像,但是始终不成功,理论上应该是可以的,网上也有人成功过.这个以后再来研究,我们首先要让CE6.0的在板子上跑起来.原创 2010-07-09 10:51:00 · 1343 阅读 · 0 评论 -
Windows CE SDHC驱动简析(2)-CSDIOControllerBase类(基于WinCE5.0 SMDK2410 BSP的SDHC驱动)
接下来我们来看看CSDIOControllerBase类,该类实现了主控制器驱动的硬件实现,定义了很多成员变量和函数原创 2010-07-06 10:49:00 · 2541 阅读 · 0 评论 -
Windows CE SDHC驱动简析(3)-CSDIOController类(基于WinCE5.0 SMDK2410 BSP的SDHC驱动)
接下来我们来看看CSDIOControllerBase的继承类CSDIOController,实现在sdiocontroller.cpp.这个类的对象在SDH_Init中通过调用CreateSDIOController来创建其对象,这个函数也在sdiocontroller.cpp中实现:原创 2010-07-07 10:24:00 · 1646 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(19)-Nand Flash驱动(FMD)及其简析(2)
接下来我们来看看对应的流接口驱动函数:1.FMD_InitFMD_Init进行了NAND控制器的初始化,复位Nand Flash(使用CMD_RESET命令),读FlashID看是否成功.具体参数命令见如下代码:附上复位的时序图:代码及注释如下:PVOID FMD_Init(LPCTSTR lpActiveReg, PPCI_REG_INFO pRegIn, PPCI_REG_INFO pRegO原创 2010-04-29 11:24:00 · 1280 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(18)-Nand Flash驱动(FMD)及其简析(1)
CE下的Nand Flash使用了很多,eboot存储及其配置信息到Nand,CE Image存储到Nand, Nand上实现BINFS和FAT分区.这些都离不开Nand驱动的支持.在SMDK2410的BSP提供了FMD,编译成库和dll供eboot和OS调用.在直接移植到GEC2410开发板时,并不能正常使用,特别是erase的时候.经检查后发现需要增加了一些Nand命令才能正常完成操作.也许原原创 2010-04-27 11:52:00 · 1680 阅读 · 0 评论 -
Windows CE串口驱动简析(3)-PDD层实现:RX,MODEM,LINE,IR部分(基于WinCE5.0 SMDK2410 BSP的Serial驱动)
接下来就是接收函数了:15. GetWaterMarkBit和GetWaterMarkWaterMark存储的实际上是接收中断模式,对应与UFCON的第4,5位:原创 2010-06-13 11:20:00 · 2940 阅读 · 0 评论 -
Windows CE USB Function Driver驱动简析(2)-IST函数(基于WinCE5.0 SMDK2410 BSP的UFBFN驱动)
上一篇我们简单分析了UFN驱动中的Ufn_pdd函数,现在我们来看看IST主线程ISTMain函数及相关处理函数.1.ISTMainISTMain在UfnPdd_Start被创建:pContext->hIST = CreateThread(NULL, 0, ISTMain, pContext, 0, NULL);原创 2010-08-10 15:49:00 · 4046 阅读 · 1 评论 -
WinCE6.0 DEVICEEMULATOR BSP的BackLight驱动简析
这里就WinCE6.0 DEVICEEMULATOR BSP的BackLight驱动做下分析, 更多关于电源管理的内容可以参考其他资料.这是一个名称为BKL的流接口驱动,实际上流接口函数,如BKL_Open, BKL_Read, BKL_Read,BKL_Write等都未实现,只有一个空函数框架,因为背光驱动并没有数据的输入输出,而是具体的功能设置.原创 2011-02-24 14:01:00 · 3995 阅读 · 0 评论 -
WinCE6.0 DEVICEEMULATOR BSP的CEDDK简析
WinCE6.0 DEVICEEMULATOR BSP的CEDDK提供了地址转换函数,位于/SRC/DRIVERS/CEDDK/下,有2个目录DDK_BUS和DLL,前者生成ddk_bus.lib,后者生成ceddk.dll,这部分的CEDDK实现了4个函数,data.c中的HalGetBusDataByOffset和HalSetBusDataByOffset,trans.c中的HalTranslateBusAddress和HalTranslateSystemAddress.原创 2011-03-15 11:55:00 · 2924 阅读 · 0 评论 -
WinCE6.0 DEVICEEMULATOR BSP的BatteryDriver驱动简析
WinCE6.0 DEVICEEMULATOR BSP的Battery驱动,位于/SRC/DRIVERS/BATTDRVR下,只有一个battif.c,内容比较简单.实际上是电池驱动的PDD层,实现PDD层中的一个接口函数,这里简要来分析一下.其中MDD层代码位于/WINCE600/PUBLIC/COMMON/OAK/DRIVERS/BATTDRVR下.原创 2011-03-11 14:26:00 · 2969 阅读 · 0 评论 -
WinCE6.0 DEVICEEMULATOR BSP在GEC2410开发板上的移植(3)-PwrButton驱动移植及分析
PwrButton驱动实现了按键关机(PowerOff)和重启(Reset)的功能.我们这里定义开发板上的K1为PowerOff,K3为Reset,对应与CPU的EINT0和EINT2中断.DEVICEEMULATOR BSP中已经基本实现了该驱动,在GEC2410.bat中使能PwrButton,即设置BSP_NOPWRBTN不为1:set BSP_NOPWRBTN=原创 2011-01-19 11:56:00 · 2639 阅读 · 0 评论 -
WinCE6.0 DEVICEEMULATOR BSP在GEC2410开发板上的移植(2)-FAT分区和HIVE注册表在Nand上的实现
FAT分区在Nand上的实现与CE5.0下的实现方法一样,请参考5.0实现的笔记:http://blog.csdn.net/shevsten/archive/2010/03/04/5344716.aspx需要注意的是需要包含Third Party-GEC2410-Storage Devices-PCI NAND Flash Driver组件.使能CE_MODULES_SDNPCID.原创 2010-09-27 11:38:00 · 2453 阅读 · 0 评论 -
Windows CE SDHC驱动简析(1)-驱动架构(基于WinCE5.0 SMDK2410 BSP的SDHC驱动)
Windows CE的SD卡驱动包括总线驱动(bus driver),主控制器驱动(host controller driver)和客户端驱动(client driver).总线驱动是客户端驱动和主控制器驱动之间的抽象管理层.提供了标准API允许SD卡客户端驱动运行在任何包含Sdbus.dll的Windows CE设备上.总线驱动独立于应用程序和客户端驱动,可以不加修改的移植到不同处理器平台.原创 2010-06-24 10:01:00 · 2759 阅读 · 0 评论 -
Windows CE串口驱动简析(4)-PDD层实现:CPdd2410Serial1和CPdd2410Serial2(基于WinCE5.0 SMDK2410 BSP的Serial驱动)
最后就需要实现针对特定串口的CPdd2410Uart的继承类CPdd2410Serial1和CPdd2410Serial2.分别对应于串口UART0和UART2.1.CPdd2410Serial1(1)构造函数CPdd2410Serial1和析构函数~CPdd2410Serial1原创 2010-06-17 09:43:00 · 2209 阅读 · 7 评论 -
Windows CE 触摸屏(TouchPanel)驱动简析(2)-DDSI函数-(基于WinCE5.0 SMDK2410 BSP的TouchPanel驱动)
接下来我们来看看具体的DDSI函数.1.DdsiTouchPanelAttach和DdsiTouchPanelDetachDLL entry进入或结束执行,这里不需要任何工作,直接返回0LONGDdsiTouchPanelAttach(VOID){ return(0);}LONGDdsiTouchPanelDetach(VOID){ return原创 2010-04-23 10:28:00 · 2269 阅读 · 0 评论 -
Windows CE 触摸屏(TouchPanel)驱动简析(1)-原理及驱动架构(基于WinCE5.0 SMDK2410 BSP的TouchPanel驱动)
之前的文章http://blog.csdn.net/shevsten/archive/2010/01/14/5188898.aspx介绍了如何获得触摸屏坐标,设置注册表,将CSP下的Touch搬运到BSP目录下等移植应用工作.现在我们来具体分析下WinCE下触摸屏驱动是如何实现的.1.首先简单介绍下触摸屏的原理.从网上搜集了一些资料:很多LCD模块都采用了电阻式触摸屏,这些触摸屏等效于将物理位置转原创 2010-04-21 10:19:00 · 2618 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(16)-CS8900 NDIS Miniport driver简析(2)
4.NDIS51_MINIPORT_CHARACTERISTICS结构的其他handler在DriverEntry里注册了其他一些handler,如CS8900Halt,CS8900HandleInterrupt等,下面来一一介绍:(1)HaltHandler: CS8900HaltMiniportHalt函数的入口:当网卡去除或者停止时该函数进行资源的释放.必须实现.MiniportHalt i原创 2010-04-06 14:27:00 · 1230 阅读 · 0 评论 -
EVC创建DLL及调用的基本方法
记录下在EVC4中如何创建DLL的方法,供以后参考.WINCE下的DLL有4种:1.WINCE DLL 2.MFC Regular DLL 3.MFC Extension DLL 4. Resource DLLWINCE DLL:导出函数使用标准C接口,可被MFC或非MFC程序调用MFC Regular DLL:是使用MFC创建,导出函数也使用标准C接口,可以被MFC或非MFC程序调用MFC Ex原创 2010-02-23 13:40:00 · 1792 阅读 · 1 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(9)-BINFS在Nand上的实现(OS镜像的烧写与加载)
之前的调式运行都是PB通过以太网下载到板子的RAM中运行,也就是CE直接运行在内存中.但是最终CE都是在设备上电后自动运行.这就需要将CE的OS镜像存储在非易失性设备中,然后bootloader将其复制到RAM中并运行.板子上有64M的Nand Flash,我们就将系统镜像存储在Nand Flash中.PB首先通过以太网下载OS镜像到RAM,然后eboot再将其烧写到Nand Flash中.系统上原创 2010-02-08 15:59:00 · 2013 阅读 · 0 评论 -
VirtualAlloc,VirtualCopy和MmMapIoSpace
在WinCE的驱动程序里经常要去访问硬件设备,对硬件设备寄存器进行操作,如CPU的IOPORT,中断寄存器等,这就要使用VirtualAlloc,VirtualCopy或者MmMapIoSpace进行地址的分配及映射.如SMDK2410 BSP中的SDHC驱动中Sdiocontrollerbase.cpp: //----- 1. Map the GPIO registers needed t原创 2010-02-05 11:34:00 · 1375 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(7)-Serial串口驱动
SMDK2410已经实现了串口驱动,因此不需要大的改动,其中PDD库位于/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL下,生成dll的驱动位于/PLATFORM/GEC2410/SRC/DRIVERS/SERIAL.为了更好的研究串口驱动,我们把/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL原创 2010-02-02 13:36:00 · 1261 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(6)-SDHC驱动
SMDK2410已经自带了SDHC的驱动,位于/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SDHC,为了更好的研究SD驱动,我们把这个文件夹复制到/PLATFORM/GEC2410/SRC/COMMON/S3C2410X/SDHC/下,这里先介绍移植的工作,然后就来分析该驱动.1.添加组件/SDHC下有2两个目录SDHC和SDHCBASE,SDHCBAS原创 2010-01-29 11:35:00 · 1139 阅读 · 1 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(5)-TouchPanel驱动
SMDK2410默认已经把TouchPanel的驱动实现了,在/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/TOUCH/下,这个驱动不需要再进行修改.这里只介绍移植过程,具体的分析以后在写.通过EBoot从PB把OS下载到内存中运行,然后会发现可以点击,但是坐标不对,我们需要进行触摸屏坐标的调整.一.触摸屏坐标调整1.在PB File-New Proj原创 2010-01-14 10:43:00 · 1964 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(2)-基于Nand Flash的Eboot
有了NBoot进行复制引导,Eboot就能运行在RAM中了,WinCE5.0自带SMDK2410 BSP与GEC2410硬件配置很接近,只要进行少量的修改就能运行在GEC2410上了。一、开发环境编译器: Platform Builder 5.0目标板: GEC2410 S3C2410A,NAND Flash:64M K9F1208,NOR Flash:2M SST39VF1601 SDRAM原创 2009-07-06 20:58:00 · 1844 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(1)-NBoot
GEC2410开发板自带的Eboot需要通过自带的Bootloader下载后才能运行,这个Eboot只起到下载内核镜像的作用,重启后是通过Nboot启动内核而不是Eboot。而且也不支持KITL,BSP的结构也完全是4.2下的,非常凌乱。不知道开发板商为什么不能按照5.0的架构做一个支持KITL内核调试的Eboot。因此产生了移植一个上电后能直接运行的Eboot的想法。由于S3C2410支持4K的原创 2009-06-28 13:56:00 · 1421 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(10)-FAT分区在Nand上的实现
上一篇Nand的前一部分用作BINFS分区,剩余的空间则可以用来作为FAT扩展分区.实际上在烧写OS镜像时就已经进行FAT分区的工作了,在WriteDiskImageToSmartMedia函数中的最后: hPartEx = BP_OpenPartition( NEXT_FREE_LOC, USE_REMAINING_原创 2010-03-04 10:08:00 · 1174 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(4)-LCD驱动
在WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(2)(3)两节中,我们实现了Eboot在Nor Flash和Nand Flash上运行.因为在烧写Eboot到Nor Flash比较快速(使用H_Jtag),Nand Flash将来就仅仅用来存放OS Image.我们使用PB下载系统镜像到RAM中运行的方式来运行CE OS,待可以成功运行后在保存到Nand Flash中实原创 2009-12-29 15:23:00 · 1679 阅读 · 0 评论 -
Windows CE LCD显示驱动简析(2)(基于WinCE5.0 SMDK2410 BSP的LCD显示设备驱动)
现在就来看看我们需要实现的GPE继承类S3C2410DISP.在ddi_if_cpp(/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/DISPLAY/GPE)实现了一个SafeGetGPE函数,其代码如下:GPE *SafeGetGPE( HANDLE hDriver ){ GPE * pGPE = NULL; __try原创 2010-04-16 09:22:00 · 3121 阅读 · 0 评论 -
Windows CE LCD显示驱动简析(1)(基于WinCE5.0 SMDK2410 BSP的LCD显示设备驱动)
SMDK2410 BSP(CE5.0,6.0中是DEVICEEMULATOR)已经实现了一个显示驱动,对应的GPE继承类是S3C2410DISP.首先简单介绍下WinCE的显示驱动架构,然和分析了需要用户开发的显示驱动部分GPE(或者DDGPE)继承类.以下内容参考了MS帮助和一书.1.Windows CE显示驱动架构Windows CE的显示设备驱动接口(DDI)是Windows NT DDI的原创 2010-04-13 10:39:00 · 2423 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(17)-CS8900 NDIS Miniport driver简析(3)
接下来就是对CS8900A网卡的实际操作了,首先介绍下cs8900A网卡芯片:CS8900芯片是Cirrus Logic公司生产的一种局域网处理芯片,在嵌入式领域中使用非常常见。它的封装是100-pin TQFP,内部集成了在片RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口,一般在单片机中,使用了CS8900的8位接口模式。可选择1:1.414 YL18-1064S或1:2.5原创 2010-04-08 13:50:00 · 1186 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(15)-CS8900 NDIS Miniport driver简析(1)
如何开发一个NDIS Miniport的网卡驱动,CS8900这个例子是个很好的参考.接下来我们就来分析下这个驱动,这样将来开发其他网卡驱动就知道怎么做了.驱动共有4个文件:cs8900.c:直接操作网卡的函数interrupt.c:中断处理miniport.c:NDIS miniport驱动接口实现wince.c:驱动dll入口 1.wince.c我们先来看wince.c(应该改名为cs8900原创 2010-03-29 10:06:00 · 1621 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(14)-移植CS8900A网卡NDIS Miniport驱动
还有一个没有实现的重要驱动就是网卡驱动了,在eboot里有一段网卡的处理程序,实际上是一些网卡的读写函数,用于PB下载和KITL的,而在CE最终运行时如果我们需要进行网络通信,那就需要NDIS架构的网络驱动.在WinCE中,通过NDIS(The Network Driver Interface Specification),WinCE系统和网卡及网络协议进行交互。NDIS提供了一个完全的网络驱动的原创 2010-03-29 09:58:00 · 1477 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(13)-HIVE注册表实现
之前我们已经实现了Multi-Bin,CE已经可以正常启动运行.但是我们修改的系统设置在重启后就又恢复成初始状态.那是因为我们的注册表是基于RAM的,要实现注册表永久保存就需要实现HIVE注册表.我们把注册表保存在Nand flash的FAT分区中.在注册表中,HIVE BOOT SECTION和END HIVE BOOT SECTION直接的注册表内存就保存在HIVE中.1.添加HIVE组件Hi原创 2010-03-25 14:49:00 · 1028 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(12)-不连续地址的内存配置
上一篇文章已经实现了Multi-Bin,那样原来整个NK占用的内存就释放了许多,80402000到82000000的地址的内存就可以供CE使用.NK 80402000 02BFF000 NANDIMAGE而在oemaddrtab_cfg.inc里映射的内存虚拟地址为:DCD 0x80000000, 0x32000000, 32 ; 32 MB DRAM BAN原创 2010-03-22 10:33:00 · 921 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)
之前我们都是把整个系统镜像复制到RAM中运行,这样启动时间较慢,也占用内存.使用Multi-Bin的模式,将需要复制到RAM的组件和可存放在存储设备(如Nand)中的组件分开,系统启动时只需要将CE核心组件复制到内存中运行,然后需要的组件从Nand中读取即可.之前我们已经在eboot中添加了操作BINFS分区的支持.然后就可以进行系统镜像的定制了.如何实现可以参考PB帮助How to Implem原创 2010-03-17 11:51:00 · 1461 阅读 · 0 评论 -
WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(3)-基于Nor Flash的Eboot
之前的两篇文章介绍了基于Nand Flash的Eboot,通过使用Nboot来引导Eboot的方式。其实GEC2410开发板配有1片2M Bytes的Nor Flash(SST39VF1601),程序可以直接运行在Nor Flash上,就不需要Nboot来引导了。当然最终Eboot还是运行在RAM中,Eboot会自我复制到RAM中运行。原来使用自带的sjf410烧写非常慢,后来找到了H-JTA原创 2009-07-18 13:35:00 · 1699 阅读 · 1 评论