![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Wince 驱动开发
Jicky1984
这个作者很懒,什么都没留下…
展开
-
基于WINCE6.0的nandflash驱动(基于K9F1G08U0B)
<br />*******************************LoongEmbedded********************************<br />作者:LoongEmbedded<br />时间:2010.11.26<br />类别:WINCE驱动开发<br />********************************LoongEmbedded********************************<br /> <br /> <br />1. nan转载 2010-12-09 12:46:00 · 1202 阅读 · 0 评论 -
WinCE动态修改启动LOGO
<br />前两天介绍了WinCE启动界面的定制,在实际应用中经常还需要让用户方便修改启动LOGO。通常情况下,启动LOGO是编译到BOOT代码中的。为了实现动态修改启动LOGO,需要将LOGO保存至Flash中,BOOT启动时从特定的位置将其读取出来,并填入FrameBuffer。另外,必须让用户能够通过应用程序在WinCE系统中修改Flash中保存的LOGO。为了方便BOOT中显示,一般会在PC上利用Img2LCD将图片文件转换为能够直接填充进FrameBuffer的格式。如果要让该功能更灵活,则必须在原创 2010-11-22 17:40:00 · 924 阅读 · 0 评论 -
Windows CE 6.0 启动过程分析(2)
3、KernelStart函数主要作用:◆完成OEMAddressTable表中的物理地址到虚拟地址和虚拟地址到物理地址之间的映射;◆对存储器页表和内核参数区存储空间(RAM或DRAM)进行清零处理。◆读出CPU的ID号,内核需要根据该ID决定ARM的MMU处理,因为ARMV6和ARMV6之前的ARM处理器的MMU处理过程有所区别;◆设置并开启MMU和Cache,因为在Startup函数关闭MMU和Cache;◆设置ARM处理器工作模式的SP指针,ARM处理器共用7种不同的工作模式(USER、FIQ、IRQ原创 2010-11-22 17:58:00 · 774 阅读 · 0 评论 -
Windows CE 6.0 启动过程分析 3
4、ARMInit函数: 在ARMInit之前,系统仍无法使用全局变量,因为系统的全局还在ROM区域,对于操作系统而言,出于安全考虑,只有XIP程序才有读取ROM区域数据的权利,对于大部分Windows CE 操作系统,只有将数据拷贝到RAM区域后才能进行读写,ARMInit函数中通过调用KernelRelocate函数对pTOC全局变量重新定位,定位之后,对内核启动所需要的KDataStruct结构体进行初始化,其中OEMInitGlobals便是交换oal.exe和kernel.dll之间的全局指转载 2010-11-22 17:59:00 · 1009 阅读 · 0 评论 -
WinCE 触摸屏驱动开发详解
<br />1.触摸屏驱动程序的模型<br />1.1 分层触摸屏驱动层序结构<br />本触摸屏驱动采用分层驱动程序结构,其驱动模型如下图所示,这种结构将驱动程序代码区分为上层模型设备驱动层(MDD),下层是依赖平台的驱动层(PDD)。其中MDD层通常无需修改就可以直接使用,改部分提供面向GWES的DDI的接口,而MDD通过指定的DDSI函数接口调用PDD,这就是我们通常驱动要实现的部分。PDD部分和MDD部分除了DDSI函数集接口外,还要实现一些指定的变量的定义或变量初始化动作(比如,gIntrTouc原创 2010-11-22 17:10:00 · 1829 阅读 · 1 评论 -
WinCE的电池驱动实现
<br />wince电池驱动的实现<br />wince6的PUBLIC目录下,已经建立了电池驱动的架构,分为MDD层与PDD层,MDD层我们基本不用改动,我们需要修改的部分是PDD层,加入与自己系统硬件相关的部分就可以<br />为了不发动PUBLIC下的代码,我们需要将PDD层的相关代码复制到自己的BSP目录下:如/PLATFORM/XXXX/SRC/DRIVERS。(注册表文件与def文件也要拷过去),所以,我们只有一个C文件battif.c,需要增加的内容如下:<br />1、BOOL WINAP原创 2010-11-22 17:16:00 · 1407 阅读 · 0 评论 -
WinCE 实现屏幕旋转的方法
<br />在WinCE中做Screen Rotation,首先确认显示设备的驱动是否支持Screen Rotation功能。在显示设备支持的前提下,可以通过以下两种方法做Screen Rotation:1. 通过修改注册表做Rotation默认情况下,屏幕都是正常显示的,也就是说翻转角度为0度。可以通过修改注册表来做屏幕翻转,通过修改”Angle”的值来完成,具体设置如下:[HKEY_LOCAL_MACHINE/System/GDI/Rotation] "Angle"=dword:5A原创 2010-11-22 17:29:00 · 984 阅读 · 0 评论 -
WinCE 6.0中断驱动程序分析
<br />Windows Embedded CE 6.0的中断处理过程主要分为两部分:☆中断服务例程(ISR):处于内核中的低级处理程序,中断发生时首先被调用。☆中断服务线程(IST):处于驱动或者应用中的中断处理线程,由系统调度,完成大部分的中断处理工作。<br /> <br />ISR的实现在OAL(OEM适配层)中,它只处理最低级的中断响应,通常是获取IRQ和SYSINTR并设置MCU内部的中断控制寄存器。中断处理的主要部分在驱动或者应用的中断处理线程中。中断处理线程与其他普通线程一样,使用同一个线原创 2010-11-22 17:36:00 · 581 阅读 · 0 评论 -
WinCE5.0的USB Camera流接口驱动开发
<br />http://www.yymcu.com/a/TechDocu/WinCE/2010/0919/1446.html原创 2010-11-22 17:45:00 · 653 阅读 · 0 评论 -
Windows CE 6.0的内核启动顺序
<br />Windows CE 6.0以前的WinCE版本,系统进程和应用程序的启动顺序通过设置注册表项HKEY_LOCAL_MACHINE/Init下的子键来完成,并且内核启动过程把filesys.exe作为第二个进程(第一个进程为NK.exe),而对于Windows CE 6.0,大部分系统进程变成了动态链接库(DLL)的形式装载在内核进程中,系统采用一种同时支持动态链接库(DLL)和可执行文件(.exe)的机制。1、进程启动顺序的配置 虽然我们可以通过设置注册表项HKEY_LOCAL_MA转载 2010-11-22 21:24:00 · 1701 阅读 · 0 评论 -
WinCE系统下BootLoader的开发
摘要:介绍WinCE.NET系统的旧方法;说明板级支持包(BSP)的基本构成;从开发实际出发,详细阐述如何开发BSP中的重要部件--BootLoader。关键词:WinCE.NET BSP BootLoader DOC<br />引言<br />Windows CE.NET是微软公司向嵌入式领域推出的一款操作系统。它最大程度继承了桌面版Windows操作系统的丰富功能,同时又副入了许多新特性,以适应嵌入式领域的实际情况和要求。无论是商业应用需求,还是人们的多媒体消费需求,都能被采用CE操作系统的设备很轻转载 2010-11-22 21:26:00 · 801 阅读 · 0 评论 -
Windows CE下驱动程序开发基础
<br />Windows CE下的串口驱动程序能够处理所有I/O行为类似串口的设备,包括基于16450、16550 UART(通用异步收发芯片)的设备和一些采用DMA的设备,常见的有9针串口、红外I/O口、Modem等。在%_WINCEROOT%/Public/Common/OAK/Drivers/Serial目录下,COM_MDD2子目录包含新的串口驱动MDD层函数代码。COM16550子目录包含串口驱动PDD层代码。SER16550子目录包含的一系列函数专用于控制与16550兼容的UART,这样PDD转载 2010-11-22 21:32:00 · 651 阅读 · 0 评论 -
在Windows CE 下申请大容量物理内存
<br />申请大容量的物理内存看起来不是难事。这里的大容量是指几十MB甚至更多的物理内存。对于C++程序员来说可能平时习惯了使用"new"操作符来实现。我也是这样。使用"new"非常简单,申请之后只需判断返回的指针是否是空即可。在其它的Windows操作系统上的确不需要在申请大容量物理内存上过多考虑。但是在Windows CE上就不同了。如果只用"new"就能搞定,那就太省事了。<br />不知道Windows CE下软件开发者是否遇到过这种情况,如果使用"new"申请超过30MB的物理内存,那么返回的一转载 2010-11-22 21:33:00 · 1355 阅读 · 0 评论 -
Wince6.0 添加IOCTL
<br />在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoControl函数,这样应用程序和驱动程序就可以访问到OAL中的资源了。但在WinCE6.0中,提供了更好的安全性,应用程序能够访问OEMIoControl中的case受到了限制,只有下面的这些case是可以让应用程序访问的:IOCTL_HAL_GET_CACHE_INFO<br />IOCTL_HAL_GET_DEVICE_INFO<br />IOCTL_HAL原创 2010-11-22 17:17:00 · 996 阅读 · 0 评论 -
WinCE 微秒和毫秒级延时函数
<br />//WINCE 微秒级延时函数void delay_us(int n){LARGE_INTEGER litmp; <br />LONGLONG QPart1,QPart2; <br />double dfMinus, dfFreq, dfTim; <br />if(QueryPerformanceFrequency(&litmp)==FALSE) <br /> { <br /> MessageBox(NULL,TEXT("Error:QueryPerformanceFrequen原创 2010-11-22 17:15:00 · 1863 阅读 · 0 评论 -
在Windows CE增加自定义中断处理
基于S3C2410,Windows CE4.2,BSP是smdk2410。WinCE的中断处理是三个映射关系:ISQ --> Interrupt ID(逻辑中断号) --> Event对象。当中断发生时,ISR(中断服务例程)返回该中断号对应的逻辑中断号,然后尽可能快地返回;随后CE就set该逻辑中断号对应的Event对象(如果有的话),以唤醒在该Event等待的IST(中断服务线程),大部分工作都是由IST来完成。一般来说IST是存在驱动程序里,单其实放在普通的应用程序里也可以,尤其是对应只有一个应用程原创 2010-11-22 10:36:00 · 534 阅读 · 0 评论 -
LCD控制器时序参数的确定(基于TFT LCD: KD50G9-40NM-A3)
<br />LCD控制器时序参数的确定(基于TFT LCD: KD50G9-40NM-A3)<br /> <br />********************************LoongEmbedded********************************<br />作者:LoongEmbedded(kandi)<br />时间:2010.10.30<br />类别:WINCE驱动开发<br />********************************LoongEmbedded***转载 2010-11-22 10:53:00 · 1020 阅读 · 0 评论 -
Wince 串口驱动详解
<br />1、(oalintr.h)注册串口中断<br />//SP-A1<br />/*<br />打开oalintr.h文件,我们添加一个新的串口,并定义中断号。<br />添加: <br />//SP-A8没什么说的就是注册中断<br />#define SYSINTR_SERIAL1 (SYSINTR_FIRMWARE+19)<br />这里,我们可以看到SYSINTR_SERIAL1定义到16+19=35=0x23,与注册表中一致。<br />然后修改下这个地方:<br />MapIrq2Sy原创 2010-11-22 17:13:00 · 1305 阅读 · 0 评论 -
WinCE6下的kernelIoControl使用方法
<br />WinCE6下的kernelIoControl可不是谁都可以调的。<br />这个可能很多人曾经知道,但是老是忘记,比如我,哈哈。<br />kerneliocontrol以前在CE5下面耍惯了,用这个接口,AP简直可以无法无天啊,动不动就reset你,哼!who怕who(AP不要 kernelicontrol还是可以无法无天,fullkernel啊,哈哈)<br />最近加了一个CE6下的kerneliocontrol,这种事情不晓得做过多少啦,所以信手拈来。<br />1.加IOCTL的co原创 2010-11-22 17:18:00 · 1520 阅读 · 0 评论 -
WinCE KernelIoControl函数5.0和6.0的区别
<br />在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。<br />在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoControl函数,这样应用程序和驱动程序就可以访问到OAL中的资源了。但在WinCE6.0中,提供了更好的安全性,应用程序能够访问原创 2010-11-22 17:19:00 · 2161 阅读 · 0 评论 -
WinCE6下的kernelIoControl使用方法
<br />WinCE6下的kernelIoControl可不是谁都可以调的。<br />这个可能很多人曾经知道,但是老是忘记,比如我,哈哈。<br />kerneliocontrol以前在CE5下面耍惯了,用这个接口,AP简直可以无法无天啊,动不动就reset你,哼!who怕who(AP不要 kernelicontrol还是可以无法无天,fullkernel啊,哈哈)<br />最近加了一个CE6下的kerneliocontrol,这种事情不晓得做过多少啦,所以信手拈来。<br />1.加IOCTL的co原创 2010-11-22 17:20:00 · 5362 阅读 · 1 评论 -
WinCE启动界面的定制
<br />本文将以模拟器为例,简单介绍如何定制WinCE的启动界面,实现动画效果。在实际硬件平台上一般在BOOTLOADER中定制开机界面。如果BOOT从Flash加载NK到内存的时间较长,通常也会加一个进度条显示。如果从NK加载完成到进入CE桌面的时间也很长,那加一个开机动画也是不错的。<br />首先在backlight驱动中添加相关代码,实现动画效果,代码如下。 1 void slash()<br /> 2 {http://files.cnblogs.com/we-hjb/BOOT_LOGO.rar原创 2010-11-22 17:41:00 · 1227 阅读 · 1 评论 -
Windows CE OAL层的结构与开发
<br />http://www.yymcu.com/a/TechDocu/WinCE/2010/0911/1178.html转载 2010-11-22 17:46:00 · 557 阅读 · 0 评论 -
Windows CE 6.0 启动过程分析1
<br />在Windows CE 6.0中,内核(Kenerl)和OEM代码被分成oal.exe、kernel.dll和kitl.dll三个部分,其中启动代码(startup)和 OAL层的实现部分不再与内核链接生成NK.exe,取而代之的是启动代码(startup)和硬件相关且独立于内核的OAL层的实现部分编译成 oal.exe,而与内核相关且独立于硬件的OAL层代码包含在kernel.dll中;内核无关传输层(KITL)的支持代码从OAL层分离出来编译成 kitl.dll。 从表面上看,好像只是原创 2010-11-22 17:53:00 · 604 阅读 · 0 评论 -
Windows CE 6.0 启动过程分析1
<br />在Windows CE 6.0中,内核(Kenerl)和OEM代码被分成oal.exe、kernel.dll和kitl.dll三个部分,其中启动代码(startup)和 OAL层的实现部分不再与内核链接生成NK.exe,取而代之的是启动代码(startup)和硬件相关且独立于内核的OAL层的实现部分编译成 oal.exe,而与内核相关且独立于硬件的OAL层代码包含在kernel.dll中;内核无关传输层(KITL)的支持代码从OAL层分离出来编译成 kitl.dll。 从表面上看,好像只是原创 2010-11-22 17:56:00 · 855 阅读 · 0 评论 -
Windows CE 6.0的内核启动顺序
<br />Windows CE 6.0以前的WinCE版本,系统进程和应用程序的启动顺序通过设置注册表项HKEY_LOCAL_MACHINE/Init下的子键来完成,并且内核启动过程把filesys.exe作为第二个进程(第一个进程为NK.exe),而对于Windows CE 6.0,大部分系统进程变成了动态链接库(DLL)的形式装载在内核进程中,系统采用一种同时支持动态链接库(DLL)和可执行文件(.exe)的机制。1、进程启动顺序的配置 虽然我们可以通过设置注册表项HKEY_LOCAL_MA转载 2010-11-22 21:24:00 · 959 阅读 · 0 评论 -
wince驱动开发学习笔记
<br />首先是wince驱动的分类问题。按照书上讲的说CE下驱动分成单体驱动和分层驱动,而看到另一种说法是本机驱动和流式驱动。经过microsun大哥的指点,把这两种分类法分开了。在这里引用一下:<br />“单体与分层只是从代码的形式上做的分类.分层驱动代码上分为PDD与MDD,一般的微软已经实现了MDD,可能也实现了PDD,我们只需要对PDD做些修改就能使用,比如音频的驱动,显示的驱动。单层驱动是把PDD与MDD写在一起,没有做严格的区分,通常这种驱动比较简单,比如:ATADISK。<br />嵌入原创 2010-11-22 15:49:00 · 530 阅读 · 0 评论 -
wince5.0多按键中断驱动问题
<br />http://topic.csdn.net/u/20100806/10/14b17e7e-06c1-42ec-a7a2-124673ce2081.html转载 2010-11-23 11:38:00 · 557 阅读 · 0 评论