CE
龙图腾
驱动工程师真心喜欢学习真心喜欢技术
展开
-
Wince 6.0 教程---第三课. WINCE6.0 文件结构简介
第三课. WINCE6.0 文件结构简介 private 内核及一些测试代码, 测试代码里面有一大堆的好东西哦。public 平台无关的公共组件代码platform 平台相关代码 四种文件:BIB,REG,DAT,DBBIB文件是一个二进制格式的构造文件,定义了模块与文件如何被包含在一个操作系统镜像中,其中, config.bib还定义了对内存表的分配。make转载 2011-12-08 11:34:07 · 671 阅读 · 0 评论 -
Wince 6.0 教程---第一课 环境搭建
第一课. 环境搭建1.安装vs20052.安装vs2005sp1,文件为VS2005sp1-KB926601-X86-ENU.exehttp://www.microsoft.com/downloads/info.aspx?na=41&SrcFamilyId=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&SrcDisplayLang=zh-cn&u=http%转载 2011-12-08 11:33:14 · 841 阅读 · 0 评论 -
USB设备驱动程序
一. USB加载式流接口驱动要点分析为了支持不同类型的外围设备,WinCE平台提供了具有定制接口的流接口驱动程序模型。因为大部分USB外围设备由于功能性更适合流接口驱动的结构,所以一般都采用加载式流接口驱动程序模型来开发USB设备驱动程序。(1)USB系统结构分析WinCE下USB系统软件由两层组成:较高USB设备驱动程序层和较低的USB函数层。较低的USB函数层本身又由两部分组成:较转载 2011-12-08 11:32:32 · 1017 阅读 · 0 评论 -
TGA透明贴图
终于知道纹理的GL_MODULATE是怎么回事了一张有透明通道的图片,做纹理贴图时除了要内部数据为RGBA都保存,而且应该设置GL_TEXTURE_ENV_MODE为GL_MODULATE 。glTexImage2D(GL_TEXTURE_2D, 0, 4, size, size, 0/*No border*/, GL_RGBA, GL_UNSIGNED_BYTE, buf); glT转载 2011-12-08 11:32:02 · 1856 阅读 · 0 评论 -
WINCE快捷方式详解
1.WINCE快捷方式结构WINCE的快捷方式和WIN2K,XP的不同,只是一个后缀名为.LNK的文本文件.其格式如下:数字#路径比如,有个快捷方式写法如下:23#/Windows/ToolViewer.exe指的是指向WINDOWS文件夹下的Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的ACSII字符 的数量,转载 2011-12-08 11:31:37 · 444 阅读 · 0 评论 -
KernelIoControl函数5.0和6.0的区别
在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。 在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoControl函数,这样应用程转载 2011-12-08 11:29:33 · 548 阅读 · 0 评论 -
基于wince的录音机
基于wince的录音机基于D:\WINCE500\PUBLIC\COMMON\SDK\SAMPLES\AUDIO\WAVREC 的录音程序建立: PCRecord MFC 工程工程加入:wavrec.cppwavefile.cppwavefile.h将wavrec.cpp 的 winmain 函数声明去掉,把 winmai转载 2011-12-05 17:27:39 · 1767 阅读 · 0 评论 -
WinCE6.0下如何动态设置系统分辨率
由于WinCE的显示驱动是本地驱动,不能像流驱动一样动态加载。所以,一般情况下不能动态修改和调试。前两天曾介绍过一种在应用程序中针对相同分辨率但不同尺寸的LCD的调试方法。这里继续介绍WinCE6.0下动态设置系统分辨率的一种方法。我们可以通过系统提供的ChangeDisplaySettingsEx()函数实现动态修改系统的分辨率。 设定系统分辨率的参考代码如下: DW原创 2011-12-01 21:25:48 · 1893 阅读 · 0 评论 -
WinCE动态修改启动LOGO
前两天介绍了WinCE启动界面的定制,在实际应用中经常还需要让用户方便修改启动LOGO。通常情况下,启动LOGO是编译到BOOT代码中的。为了实现动态修改启动LOGO,需要将LOGO保存至Flash中,BOOT启动时从特定的位置将其读取出来,并填入FrameBuffer。另外,必须让用户能够通过应用程序在WinCE系统中修改Flash中保存的LOGO。为了方便BOOT中显示,一般会在PC上利用Im转载 2011-11-14 19:03:04 · 585 阅读 · 0 评论 -
关于资源的修改
前两天写一个程序修改exe的资源信息。资源信息的读取API还是比较多的,但是修改的就不多了。经常使用的ResHack工具,修改资源方便的很,但是却没有源码参考。只得自己动手。修改资源的方法可以从API和PE两种方式入手。一、首先介绍从PE入手修改资源:这里我从网上摘抄了一个修改ICON的例子。首先,我们需要两个可执行文件,并且已知这两个exe文件都有图标资源。1、 peSour转载 2011-12-02 13:33:17 · 1237 阅读 · 0 评论 -
ActiveSync合作关系对话框的配置
当设备与PC同步时,ActiveSync软件经常会弹出如下图所示对话框。一般在调试阶段,选择“否”并点击“下一步”按钮,关闭该对话框。为了省去每次点击的麻烦,可以修改注册表,使其在同步时并不弹出该对话框,设置如下,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services]"GuestOnly"=dword:000000转载 2011-12-02 09:45:45 · 433 阅读 · 0 评论 -
WinCE 6.0中断驱动程序分析
Windows Embedded CE 6.0的中断处理过程主要分为两部分: 中断服务例程(ISR):处于内核中的低级处理程序,中断发生时首先被调用。中断服务线程(IST):处于驱动或者应用中的中断处理线程,由系统调度,完成大部分的中断处理工作。ISR的实现在OAL(OEM适配层)中,它只处理最低级的中断响应,通常是获取IRQ和SYSINTR并设置MCU内部的中断控制寄存器。中断处理的转载 2011-12-02 09:34:33 · 1126 阅读 · 0 评论 -
S3C2410下WinCE6.0的启动过程详解
通过前两篇文章的介绍,我们已经知道NBOOT用来引导EBOOT,继而EBOOT加载并引导WinCE操作系统(NK)。那么,WinCE6.0的启动过程又是怎样的呢?本文基于S3C2410的平台做一个详细的分析。需要说明的是,WinCE6.0的整个启动过程对于同一类型的MCU来说大同小异,如S3C2410和PXA270同属ARM平台的MCU,所以他们的启动过程是类似的,可以说唯一的不同就在OAL处,而转载 2011-12-02 09:16:44 · 1156 阅读 · 0 评论 -
WinCE6.0的EBOOT概要
为一个新的硬件设备定制WinCE6.0操作系统,一般需要完成以下几个主要步骤:1. 针对特定的硬件设备创建板级支持包(Board Support Package缩写为BSP),BSP必须包括BOOTLOADER、OEM适配层(OEM Adaptation Layer缩写为OAL)和一些必要的驱动。2. 利用创建的BSP,定制一个系统设计(OS Design)。即通过转载 2011-12-02 09:13:10 · 445 阅读 · 0 评论 -
WinCE下应用程序的单实例运行
实现应用程序的单实例运行有很多种方式。如果是有窗口的应用程序,可以通过FindWindow()查找窗口来确认是否已有同名窗口存在。如果是无窗口的应用程序,可以用互斥体等内核对象实现。一般来说,在程序的入口处检查是否已有实例在运行。如果没有,则继续执行。如果有,则退出本次运行。基本流程如下图所示。 以互斥体实现的单实例参考代码如下。Code hi转载 2011-12-01 21:50:29 · 905 阅读 · 0 评论 -
Wince 6.0 教程---第四课 XIP与HIVE
第四课、XIP与HIVEpower 10:48 2009-8-25我们的Image主要由两部分组成:XIPKERNEL.bin和NK.bin,XIPKERNEL.bin中的东西就是那些WinCE中比较核心的又需要经常加载的一些程序和DLL文件,这些文件会被Boot Loader在刚启动的时候拷贝到RAM中去,这样就可以在RAM中XIP(Excute in place)了。在NK.bin转载 2011-12-08 11:34:44 · 683 阅读 · 0 评论 -
Wince 6.0 教程---第五课.更改任意文件夹路径
==============更改任意文件夹路径============power 11:53 2008-11-121.需要知道的一点知识a.在C:/WINCE600/PUBLIC/COMMON/OAK/FILES/common.reg 中 ; The path lookups for SHGetSpecialFolderPath; @CESYSGEN IF CORED转载 2011-12-08 11:35:52 · 630 阅读 · 0 评论 -
WinCE中BSP的Clone
WinCE中BSP的Clone 谈到WinCE的BSP Clone实际上就是BSP的复制,只不过是改变了一些BSP中的信息。在WinCE中,BSP的克隆应该很简单,今天就做个简单的介绍. 我很少用到BSP的克隆,做WinCE也有几年了,就用过几次,最开始是为了学习克隆了几次,但没有什么实际用途。后来我在一家IC Design公司工作,公司开了一个新的ARM芯片,基于公司老的ARM提高转载 2011-12-08 11:36:52 · 463 阅读 · 0 评论 -
飞思卡尔启动过程
原创 2012-04-24 19:22:05 · 2116 阅读 · 0 评论 -
wince电源管理等级
原创 2012-04-24 19:17:54 · 490 阅读 · 0 评论 -
wince touch驱动
WinCE中的Touch Panel驱动是由GWES模块来管理的,Touch Panel驱动接收用户的触摸信息,并将其转换为屏幕上的坐标信息,传给GWES模块。在WinCE中,Touch Panel驱动是分层的,分为MDD层和PDD层,这和其他WinCE设备驱动是一样的。MDD层由微软提供,用户只需要实现MDD和PDD层间的DDSI函数就可以了。如图 WinCE中的GW转载 2012-04-24 12:22:10 · 744 阅读 · 0 评论 -
cmos sensor (图像传感器) CSI接口
Chapter 39(Page 1429)CMOS Sensor Interface(CSI) 本章介绍了CMOS图像传感器接口(CSI)的架构,操作守则以及编程原型。该CSI接口能够使得MX27直接连接到外部的CMOS图像传感器上。CMOS图像传感器分为两类,非智能和智能。非智能的这类图像传感器只是支持传统的摄像头时序(场同步和行同步),然后输出一个Bayer(拜耳)以及统计的数转载 2012-03-06 14:43:15 · 20607 阅读 · 4 评论 -
WinCE6.0 Platform Builder180天过期破解方法
在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Platform Builder\6.00\Directories项里面有Install Dir与IDE Install Dir字符串子项,如果没有创建。里面的值是一个路径,比如D:\WINCE600\,注意,一定要带最后一个“\”。修改系统时间,比如到2020.12.24日,然后在这个路径下创建文件et转载 2012-02-24 14:17:35 · 1266 阅读 · 0 评论 -
WinCE6.0 Platform Builder有试用时间限制,使用此方法破解限制。
WinCE6.0 Platform Builder有试用时间限制,使用此方法破解限制。1、"在PB安装目录下有个etkremov.inf,试用期是以此文件的创建日期来计算的。将其删除,然后新建一个文件(注:具体创建方法见步骤2),再重命名为etkremov.inf,不要直接新建这个文件,否则由于filesystem tunnel,会导致新建的文件总是沿用老文件的创建时间。2、在HKEY转载 2012-02-24 14:33:57 · 1664 阅读 · 0 评论 -
C++ 注册表编程
1.基础知识注册表的组织方式跟文件目录比较相似,主要分为根键、子键和键值项三部分,与文件目录对应的话就是根目录、子目录和文件。分别介绍一下这三部分:(1)根键。分为5个,分别为HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS和HKEY_CURRENT_CONFIG,把它们理解成磁盘的五个分区可以了。(2原创 2011-12-14 09:35:52 · 796 阅读 · 0 评论 -
WinCE6.0中应用程序如何直接访问物理空间
在实际开发过程中,经常希望能在应用程序中直接读写设备的物理空间。以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求。但这种方式有一个明显的缺陷,每次读写都必须经由它才能完成。如果只是读取GPIO,那问题不算大。如果想通过这种方式实现视频播放的加速就比较困难了。估计非但不能加速,反而会变得更慢。 早先曾与ZL仔细的讨论过这个问题,他当时在WinCE6.0转载 2011-12-15 11:48:58 · 509 阅读 · 0 评论 -
SetWaitableTimer定时器的使用
使用SetWaitableTimer定时器前先了解一下几个函数:HANDLE CreateWaitableTimer( LPSECURITY_ATTRIBUTES lpTimerAttributes, //安全描述符,可以为NULL BOOL bManualReset, //是否为手动定时器,如果是手动的,需要调用SetWaitableTimer才能将定转载 2011-12-14 15:23:11 · 1499 阅读 · 0 评论 -
WinCE 6.0 增加IOCTL以及在应用中读取调试串口输入
最近在做FCT测试程序,需要用调试串口和测试台进行通信,发现调试串口只有输出,例如RETAILMSG,以及Console.WriteLine都是最后走到了OEMDebugWriteByte函数。但是WinCE系统貌似并没有把Console.ReadLine和OEMDebugReadByte绑定在一起。也没发现在应用中可以读取串口输入的方法。其实最简单的办法就是增加一个IOCTL,在应用中调用Ker转载 2011-12-15 11:48:20 · 595 阅读 · 0 评论 -
WinCE下如何获取进程所在的目录
众所周知,WinCE下没有当前目录的概念,所有路径都以根目录"\\"为参考。获取进程所在目录的参考代码如下。 GetModuleFileName(NULL,gszPath,MAX_PATH); int len = wcslen(gszPath); TCHAR *p = gszPath + len; while (*--p != _T('\\'))转载 2011-12-02 09:48:44 · 712 阅读 · 0 评论 -
Windows CE下流驱动的动态加载
我想很多WinCE的开发人员,尤其是刚入门并且做驱动开发的工程师,都曾碰到这样一个问题,要编写一个外围设备的驱动,拿最简单的GPIO驱动来说,编写驱动本身可能只花了一会儿功夫,可要把编译生成的DLL打包到先前做好的操作系统映像当中,最简单也得MakeImg一下,还要修改BIB文件、注册表文件,以让系统启动的时候就加载该驱动,所有工作都做完了,还得花几分钟下载整个操作系统到内存去运行,这也得要个好几转载 2011-12-02 09:12:40 · 673 阅读 · 0 评论 -
WinCE虚拟串口驱动
//======================================================================== //TITLE: // WinCE虚拟串口驱动(一) //AUTHOR: // norains //DATE: // Saturday 28-March-2009 //Environment转载 2011-12-12 16:33:52 · 785 阅读 · 0 评论 -
驱动向应用程序发送消息
驱动向应用程序发送消息这里介绍一下常见的两种办法。 1、驱动程序调用API SendNotifyMessage,发送特定的消息给应用程序,这就要求应用程序要有消息循环机制并且要事先做好消息的处理。参数 1为窗口句柄,可以设置HWND_BROADCAST表示广播消息。要注意的是不要在参数中传递指针(虚拟地址),因为执行驱动程序的线程和应用程序并不在同一个进程空间中。解决办法可以利用内存转载 2011-12-08 11:38:26 · 1491 阅读 · 0 评论 -
WINCE 任务栏的显示隐藏
直接看代码 1. windowsXPvoid CTaskBarDlg::OnHide() { // TODO: Add your control notification handler code here FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);}void CTaskBarDlg::O转载 2011-12-08 11:37:53 · 661 阅读 · 0 评论 -
WinCE控制面板添加应用程序
WinCE系统中的控制面板和Windows系统中的控制面板原理是一样的,里面就是包含了一些应用程序。WinCE系统的控制面板由Ctlpnl.exe,Control.exe和一些.cpl文件组成,其中Ctlpnl.exe和Control.exe用于控制控制面板的文件夹显示和架构,而.cpl文件和控制面板中的实际应用程序相对应。WinCE的控制面板中的每个应用程序都由两部分组成:应用程序本身和所对转载 2011-12-02 10:26:38 · 574 阅读 · 0 评论 -
WinCE下自定义的大软键盘
WinCE下默认的大软键盘如下图所示。 在实际应用中,很多按键,如最上面一行的F1~F12几乎很少使用,只有数字、字母和几个重要的功能键用的较多,所以,我们可以根据自己的需求定制软键盘。 WinCE6.0中,其源代码位于C:\WINCE600\PUBLIC\COMMON\SDK\SAMPLES\LARGEKB。至于如何修改,这里就不做介绍了,应该转载 2011-12-01 22:05:03 · 1154 阅读 · 0 评论 -
RAS拔号上网
这两天把CE板儿上的拔号程序初步完成,第一个是CE板儿上自带的MODEM无法使用,最终还是从网上看到一个牛人说改注册表然后映射到COM2口上,很简单的事情,有些时候儿没有弄过就会不知道如何下手。软件倒是费了些周章,从网上找了一个RAS的拔号软件,但他那个有点儿小问题,经过同事的指点,直接调用设置好的连接即可。比如你在CE板儿上建立了一个“我的连接”,直接把这个名字传到RASDIALPARAMS 变转载 2011-12-01 14:39:27 · 1568 阅读 · 0 评论 -
wince 6.0 HIVE注册表
CE的HIVE注册表可以使用户操作的相关设置以注册表的形式保存到DOM等存储设备中.加了HIVE的相关组件后,可以通过手动或自动方式保存信息到存储设备里. 手动存储方式是执行一个软件后,把用户设置的相关信息回写到HIVE注册表里面 自动存储方式是在Platform.reg中把RegistryFlags设置成1,当用户启动系统后,设置相关信息就会自动的保转载 2011-11-09 20:21:44 · 645 阅读 · 0 评论 -
WinCE 控制面板的创建
//=====================================================================================================//AUTHOR:// norains//DATE:// Saturday 25-Feb-2006//==================================转载 2011-11-29 15:44:33 · 412 阅读 · 0 评论 -
详解WINCE的控制面板
//========================================================================//TITLE:// 详解WINCE的控制面板//AUTHOR:// norains//DATE:// Tuesday 29-August-2006//====================================转载 2011-11-29 13:41:59 · 455 阅读 · 0 评论 -
用脚本实现对WINCE控制面板功能的直接调用* B
控制面板其实也是个动态链接库,区别只在于后缀名为.cpl如何调用.cpl7 /2就像PC机中.dll文件不能直接运行,需要借助rundll32.exe来运行一样,WinCE下的.cpl也需要相应的程序来调用,这个程序就是:"ctlpnl.exe".比如我们需要调用系统自带的cplmain.cpl的"电源管理",只要在开始菜单的运行中输入:"ctlpnl.exe /windows/cpl转载 2011-11-29 13:40:21 · 1118 阅读 · 0 评论