Win CE Mobile
文章平均质量分 79
zhandoushi1982
这个作者很懒,什么都没留下…
展开
-
控制Windows Mobile的LED之四:多色呼吸LED SN3199的驱动
<br /> SN3199是一款多色呼吸的LED驱动控制芯片,用来支持我目前项目上的LED控制。因为项目需求在内核和BOOT LOADER中都需要闪烁,所以用这种One Shot控制的芯片是最有效最省资源的。<br /> 芯片采用I2C控制方式,通讯时序如下:<br /><br />以上是典型的读写方式,该芯片还支持地址自加模式,即只要往某地址写入了一系列数据,后续的数据会自动写入接连自加的地址中。时序图如下:<br /><br />所以读写函数如下:<br />XLLP_STATUS_原创 2011-02-11 23:41:00 · 1825 阅读 · 0 评论 -
Mobile的SD卡升级系统之一:两种升级方式
<br /> 公司现在要实现sd卡升级操作系统,我查了下相关资料。发现目前有两种方式,在CE下和在bootloader下都可以实现更新NK。<br />(1)在CE下,可以直接用文件系统API读出NK.bin,放到内存buffer中,在通过DEVICEIOCTL的方式来调用nand驱动的一些接口来直接对nand flash进行写操作。<br />好处:跳过boot section,FAT/FAT32文件系统的解析;对内存大小无要求。<br />缺点:NAND驱动需要暴露读写的IOCTL,必须进入O转载 2011-02-13 11:58:00 · 1515 阅读 · 0 评论 -
Mobile的SD卡升级系统之二:热升级
<br /> 开机升级主要是通过读取U盘中的内核文件,然后把它替换掉旧的文件就可以了。要实现在系统下应用程序直接调用FMD_ReadSector()和FMD_WriteSector()读写FLASH是不行的。但是可以通过FMD_OEMIoControl()函数来实现。所以要在FMD_OEMIoControl添加我要想要的函数。如下:<br />(1)<br />BOOL FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nIn转载 2011-02-13 23:36:00 · 1040 阅读 · 0 评论 -
FAT16文件系统格式说明
<br /> 本文回答了什么是FAT16文件系统,并对它进行很好解析。在嵌入式开发中,一般会在flash中建立该文件系统。在很多DOS系统中也用该文件系统。硬盘上的数据按照不同的特点和作用大致可分5部分:MBR区、DBR区、FAT区、DIR区和DATA区。我们来分别介绍一下: (1)MBR区(主引导扇区) <br /> MBR (Main Boot Record),按其字面上的理解即为主引导记录区,位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中转载 2011-02-22 23:06:00 · 2191 阅读 · 0 评论 -
WINCE的RTC驱动
RTC就是实时时钟(real time clock)。目前大部分32bit处理器都自带RTC模块,也有外接RTC模块的。一般外接的RTC都是通过I2C来访问。如果CPU本身自带RTC,那通过读取内部寄存器就能访问RTC模块。如果是外接的,还要写个I2C的驱动来访问外部RTC模块。(1)主要函数 在WinCE6.0里面,RTC的驱动是在OAL里面实现的,文件名一般都叫rtc.c。在这个文件里面有3个重要的函数,只要实现了他们,RTC的驱动就完成了,函数如下:BOOL OEMGetReal转载 2011-03-17 22:57:00 · 1755 阅读 · 0 评论 -
WIFI之四:WINCE 500上WIFI工具的编写
<br /> 在 Windows CE 下自带有无线网卡的配置和连接程序,但是如果系统剪裁掉了资源管理器和任务栏,就会导致自带的无线网卡配置程序不能再使用了,那么可以利用微软自带的WZC函数来重新编写一个新工具。<br /> 所以设置WIFI,第一步就是要获取这个无线路由器的名称,WINCE 500提供了获取这个名字的API,叫WZCQueryInterfaceEx(),用这个函数需要升级PB补丁到最新版,不然就用WZCQueryInterface()。设置中主要用的函数都在wzctoo转载 2011-05-23 19:34:00 · 2534 阅读 · 0 评论 -
基于线程的WINCE测试程序
<br /> 在嵌入式开发中,我们通常会碰到需要测试驱动程序完整性效果的地方。比如,一个LED工作在不同模式下会体现不同的特性,由于多种工作模式不容易模拟出来,这个时候我们要使用随机数程序来生成LED全部的工作路径,从而来测试LED驱动的完整性。<br /> 在线程中建立随机数执行路径,有两种方式:<br />(1)WaitForSingleObject带无限时间<br />HANDLE Nled_Test_Event; //线程事件申明<br />i初始化:<br />原创 2011-04-15 21:53:00 · 1443 阅读 · 0 评论 -
WINCE的电源管理
(1)WINCE电源管理的架构 使用电源管理器,设备可以接收电源状态改变的通知,这个通知是以I/O控制的方式(IOCTL控制码)的方式来和设备驱动通信的。因为I/O控制运行在线程上下文环境中,驱动开发者可以很灵活去实现电源状态的改变。使用I/O控制的方式来管理电源也可以让设备电源状态独立于整体的OS电源状态。转载 2011-06-20 22:37:00 · 1520 阅读 · 0 评论 -
WINCE背光驱动
在大多2440开发板WINCE 5.0 的BSP中,SMDK2440/DRIVERS/backlite目录下一般都有背光驱动。开机时确实可以打印"!!!!!!!!!!!! BACKLIGHT ON !!!!!!!!!!!!,如果没有操作大概1分钟后也可以打印!!!!!!!!!!!! BACKLIGHT OFF !!!!!!!!!!!!。但打印 OFF后,就算有触发事件(在触摸屏上点击)转载 2011-06-27 11:34:00 · 1733 阅读 · 0 评论 -
WinCE平台上的DMA
CEDDK提供了DMA的相关函数,在CEDDK/DDK_DMA/ddk_dma.c中定义。最有用的就两个函数,HalAllocateCommonBuffer(..)和HalFreeCommonBuffer(..)分别用于为DMA申请和释放内存。(1)首先介绍一下会用到的DMA适配器结构,在ceddk.h中定义,如下:typedef struct _DMA_ADAPTER_OBJ转载 2011-06-28 11:52:00 · 2533 阅读 · 0 评论 -
WINCE 音频驱动之一:分类
CE目前有3种音频模式:MDD/PDD、WaveDev2和UAM。这些模式的存在是有历史原因的,下面具体说明一下。首先,这3个模式是使用同一套WaveAPI的驱动接口,在系统中以驱动形式存在,都会导出WAV_Open、WAV_Close等接口。通过IoControl带入IOCTL_WAV_MESSAGE,与waveapi的子系统配合使用。对下都是控制硬件,它们不同之处在于内部的设计。转载 2011-06-29 10:23:00 · 1687 阅读 · 0 评论 -
WINCE 音频驱动之二:驱动模型
音频驱动采用Wavedev2模式来实现,这是单层的驱动模式,平台相关的都在hwctxt.h和hwctxt.cpp中,此外还加入了midi支持、software mixer支持、S/PDIF接口、gain class接口、forcespeaker接口等等。 (1)转载 2011-06-29 11:41:00 · 2634 阅读 · 0 评论 -
WIFI之三:WIN MOBILE平台上的88W8688驱动
(1)缩写术语OID-object identifierSSID-service set identifier BSS-basic service setESS-extended service setRSSI-received signal strength indicationNIC-Network Interface CardsNDIS-Network Driver Interface Specification(2)WLAN接口层 网络的驱动,无线和有线都是去填充NDIS的预留接口。关键函转载 2011-05-09 16:31:00 · 3237 阅读 · 0 评论 -
全局函数如何访问对话框控件
很多时候我们在一个全局函数中会访问到应用程序控件,由于全局函数不属于具体的某个对话框类,所以它里面是无法访问某个对话框,当然也就访问不到对话框控件了。有以下几种情况和对应的处理方式。(1)全局线程函数中访问对话框控件 创建一个对话框后,放置一个进度条,添加对应的控制变量myProgressCt,在CPP添加一个线程控制标志volatile BOOL m_bRun2。进度条是个状态显示量,跟后台数据处理是独立的,所以需用多线程。在对话框初始化添加进度条的默认值处理: myProgress转载 2010-11-25 11:51:00 · 1795 阅读 · 0 评论 -
USB软硬件知识之五:WINCE USB设备驱动程序导读
随着USB设备的不断增加,我们这些开发人员也就多了对USB设备进行驱动程序开发的工作。通过本文,我希望能让更多的朋友理解Windows CE下对USB设备的驱动模型及样例程序中的实现过程,以样例代码为基础理顺USB设备驱动程序的开发思路。在看样例程序之前,我们就先来看下图:在此图中,我们可以非常清晰的看到主机和物理外设之间的结构方式,在主机端,通过USBD模块和HCD模块使用默认的PIPE访问一个通用的逻辑设备,实际上就是说USBD和HCD是一组抽象出来的访问所有USB设备的逻辑接口,它们负责管转载 2010-11-22 17:08:00 · 2127 阅读 · 0 评论 -
程序访问物理地址之MmMapIoSpace 与 OALPAtoVA
(1)MmMapIoSpace 用法 在程序中使用的都是虚拟地址,如果要对物理地址进行操作,需要用到MmMapIoSpace把物理地址映射到虚拟地址,如:pBaseAddress = (PUCHAR)MmMapIoSpace(ioPhysicalBase, Size, FALSE);访问pBaseAddress的指向地址,就是访问被映射后ioPhysicalBase定义的物理地址。原创 2009-09-22 19:27:00 · 8551 阅读 · 1 评论 -
inf文件规则
INF文件即Device Information File(设备信息文件),主要用来指示安装Windows驱动程序。INF文件是Windows系统下用来描述设备或文件等数据信息的文件,是一个文本文件。INF的组成有节(Sections)、键(Key)和值(value)3部分,INF文件的节按照层次结构排列,以方括号的形式开始,后面紧跟该节的各个项和值。INF文件的节主要分为以下:1原创 2010-01-03 22:16:00 · 3896 阅读 · 0 评论 -
WINCE的原子操作
一,今天在看HAL时看到一段关于初始化CPU的代码,在Processor.c (hal/halx86/generic)文件中,如下:VOID NTAPI HalInitializeProcessor(IN ULONG ProcessorNumber,IN PLOADER_PARAMETER_BLOCK LoaderBlock){ /* Set default IDR and stall转载 2010-05-18 14:00:00 · 1798 阅读 · 0 评论 -
控制Windows Mobile的LED 之一:基础函数
操作LED的API在coredll.dll里面有,只是在SDK里面没有声明。首先,包含nled.h头文件以及声明两个函数(取得LED信息和设置LED状态)# include extern " C "{ BOOL NLedGetDeviceInfo(INT nID, PVOID pOutput); BOOL NLedSetDevice(INT nID, PVOID pOutput);}(1)下面的函数可以取得设备上LED总数,如果你的系统支持振动,那么振动电机也是被当作一转载 2010-10-30 21:34:00 · 1437 阅读 · 1 评论 -
CreateEvent、setevent、ResetEvent和WaitForSingleObject
(1)CreateEvent函数原型:HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性 BOOL bManualReset, // 复位方式 BOOL bInitialState, // 初始状态 LPCTSTR lpName // 对象名称 ); lpEventAttributes:一个指向SECURITY_ATTRIBUTES结构的指针,确定返回的句柄是转载 2010-11-01 22:46:00 · 11866 阅读 · 0 评论 -
控制Windows Mobile的LED 之二:控制三个LED指示灯
<br /> 最近做的一个项目要求用三个GPIO同时独立的控制三个不同颜色的LED灯,且每个LED灯存在亮、灭、快闪、慢闪等四种状态。一开始想到在一个线程里面完成,但无法独立的控制三个LED灯的闪烁频率,无法避免相互影响。无奈之下,先用三个线程控制三个LED实现该功能,如果以后熟悉了线程定时器的做法,再优化。<br />(1)NLED设置结构体说明<br />struct NLED_SETTINGS_INFO<br />{<br /> UINT LedNum;原创 2010-11-05 23:24:00 · 2233 阅读 · 1 评论 -
Windows CE中的进程和线程
<br />(1)进程<br /> 进程是一个正在运行的应用程序的实例,它由两部分组成:A,管理这个进程的操作系统的内核对象;B,该进程拥有的地址空间。每一个进程都有独占的、受到保护的32MB的地址空间。Windows CE系统最大允许32个独立的进程同时进行。当系统启动的时候,最少有4个默认的进程被启动,即:nk.exe(提供有关内核的服务);filesys.exe(提供有关文件系统的服务);gwes.exe(提供对GUI系统的支持);device.exe(装载和管理设备的驱动程序)。以下是一系转载 2010-11-14 23:27:00 · 2378 阅读 · 0 评论 -
WIN CE的驱动程序模型
WinCE系统在驱动设计上有一个很方便的功能,就是原始设备制造商(OEMs)和独立硬件开发商(IHVs)可以自主开发设备驱动程序来支持他们的硬件。因此,深入了解WinCE系统驱动方式是非常有必要的。(1)从驱动加载方式上的分类 要编写WinCE驱动程序首先要确定它是属于哪类驱动。一般来说,WinCE平台上使用的设备可分为两类:内建设备和可安装设备。因此,从驱动加载方式上WinCE可分为内建设备驱动(Built-In Driver)和可加载驱动(Loadable Driver)。转载 2010-11-17 22:47:00 · 4790 阅读 · 0 评论 -
微调按钮SpinButton及实例
<br /> 微调按钮(SpinButton)是个简易的滑动条,它经常与一个称为“兄弟窗口”(Buddy Window)的编辑控件结合起来使用,它们可以很好地配合,以响应用户的输入。本实例实现调节RGB三个颜色分量,控制合成的颜色显示。完成的界面如下:<br /> <br />(1)新建一个基于对话框的应用程序,在上面分别添加三个静态文本、三个编辑框(IDC_EDIT_RED,IDC_EDIT_GREEN,IDC_EDIT_BLUE)原创 2010-11-23 11:49:00 · 12007 阅读 · 0 评论 -
滑动条SliderCtrl及实例
滑动条是一种交互式的、直观的控件。它包括一个沿着控件长度滑动的滑动框和用于显示值范围的可选刻度标志。滑动条控件还有一个内置的键盘界面,所以可用键盘上的箭头键来移动滑块。原创 2010-11-24 09:47:00 · 4828 阅读 · 1 评论