自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

转载 S3C2440休眠和唤醒流程解析(WinCE 6)

<br />在WinCE中,有3种方式可以使系统进入休眠:<br />1、用户在开始菜单选择挂起<br />2、用户短按电源键,请求系统进入休眠(需要电源按键驱动的支持,比如设为长按关机,短按休眠)<br />3、用户长时间无操作,系统状态由POWER_STATE_ON转为POWER_STATE_USERIDLE,POWER_STATE_IDLE状态,最后进入POWER_STATE_SUSPEND即休眠状态<br />休眠之前,对于支持电源管理的驱动,系统会调用此驱动的XXX_PowerDown接口关闭设备

2011-05-13 10:19:00 655

转载 S3C2440 TFT LCD驱动程序编程要点

<br />1、打开LCD背光<br />将LCD背光对应的GPIO设置为禁止上拉(GPxUP相应位写入1),选择output类型(GPxCON相应位写入01),输出为高电平(GPxDAT相应位写入1)。<br /><br />2、打开LCD电源<br />可以将GPG4选择为LCD_PWREN(GPGCON:9-8写入11),这时候LCD电源的打开/关闭可以通过LCDCON5:3来控制。<br />也可以自定义其他GPIO用作LCD电源开关,只需将此GPIO设置为禁止上拉(GPxUP相应位写入1),选择o

2011-05-13 10:18:00 674

转载 Platform Builder: Find the Source of a Data Abort; an Example

<br />Previously I posted instructions for finding the source of a data abort, see  Windows CE: Finding the cause of a Data Abort.  This will walk through those steps to find the source in a real application for.  This is specific to Windows CE and later.

2011-05-12 14:32:00 545

转载 如何开发一个WinCE 6的流设备驱动

<br />•在BSP的Drivers目录下,创建新驱动程序的目录,比如MyDriver<br />•修改dirs文件,在变量DIRS中增加新目录MyDriver<br />•创建文件Sources,内容如下:<br />view plaincopy to clipboardprint?<br />01.TARGETNAME=MyDriver   <br />02.RELEASETYPE=PLATFORM   <br />03.TARGETTYPE=DYNLINK    <br />04.DEFFILE=M

2011-05-12 14:31:00 612

转载 Printed Exception strings - what do all those flags mean?

<br />Printed Exception strings - what do all those flags mean?<br />Data Abort: Thread=9352cc9c Proc=90876ea0 'shell32.exe'<br />AKY=00000005 PC=03f74680(coredll.dll+0x00014680) RA=03257104(aygshell.dll+0x00037104) BVA=060000e0 FSR=00000007<br />AKY à "Ac

2011-05-12 14:29:00 488

转载 如何定位WinCE产生Data Abort错误的位置

<br />在调试WinCE程序的时候,有时候会碰到Data Abort的异常,系统会在调试控制台输出如下类似信息:<br />Exception 'Data Abort' (4): Thread-Id=03d3000e(pth=83a9e024), Proc-Id=00400002(pprc=81d48308) 'NK.EXE', VM-active=00fa000a(pprc=83a20ecc) 'explorer.exe'<br />PC=c0883660(s3c2440disp.dll+0x0000

2011-05-12 14:27:00 495

转载 Fix: time stamp mismatch on celog.rel

<br />Posting a full explanation of this error from CE 5.0.<br />Error: Mismatched time stamp on .rel file for module celog.dll requesting <br />kernel fixup.  Valid .rel file is required for kernel fixups.<br />It happens if you set the IMGCELOGENABLE bui

2011-05-12 14:26:00 655

转载 打印函数总结RETAILMSG(..) DEBUGMSG(..) NKDbgPrintfW(..)

<br /> 不管在WinCE5.0还是在WinCE6.0中,我们在调试驱动或者应用的时候都会用到打印函数。在驱动里面,我们可能会用DEBUGMSG(..),RETAILMSG(..),还有NKDbgPrintfW(..)。在我们使用这些打印函数调试我们的程序之前,我们需要实现串口打印功能。<br />在WinCE的BSP中,如果想调用DEBUGMSG(..)或者RETAILMSG(..)来从串口打印信息,必须在我们的BSP中的OAL层找到debug.c,在这个文件里面实现下面的4个函数:<br />voi

2011-05-12 14:25:00 503

转载 WinCE中的Debug Zone调试

<br />在WinCE的开发环境中支持Debug Zones功能,通常也被称为调试域,通过它可以控制打印信息。当某个调试域被打开以后,在这个域中的打印信息就会被打印出来,如果某个调试域被关闭了,那么这个域中的打印信息就会被关闭。调试域是基于模块的,也就是说一个模块,可能是在一个驱动或者一个应用中都可以定义一个调试域,用来调试该模块。一个调试域最多可以包括16个域,一般在每一个模块中都会有一个全局变量dpCurSettings,该变量用于描述调试域的相关信息,它由一个模块名字,16个域的名字和一个掩码组成。

2011-05-12 14:24:00 338

转载 如何诊断Windows CE的应用程序崩溃

<br /> 无论你是一个单纯的电脑用户还是一名高级软件工程师,都一定对程序崩溃不陌生。做为一名Windows CE应用程序开发者,你也一定遇到过下图这种场景:<br />这个对话框告诉你,有一个叫installer.exe的程序在地址00019320处崩溃了。如果这个程序归你负责,那么你的问题就来了:怎么找出这个BUG?这篇文章我想谈谈我在这方面的一些经验。<br />Windows CE的崩溃界面给出的信息十分的少,其中最有用的无疑是崩溃地址,如果你能从崩溃地址定位到源代码去,这个问题可以说就解决了一半

2011-05-12 14:23:00 958 1

转载 Integrating your project in the PUBLIC tree

<br />Introduction<br />Have you ever wondered how you can integrate your code under the PUBLIC tree in Windows Embedded CE 6.0? This can be useful if you want to distribute code/components that are not part of a BSP. In this post I’ll explain how to creat

2011-05-12 14:17:00 443

转载 WinCE中,环境变量的添加,删除和查询

<br />在WinCE中有很多的环境变量,那么如何设置/删除/查询这些环境变量呢:<br />1. 查询环境变量:无论是在WinCE5.0还是WinCE6.0,当我们在PB里打开或者创建一个工程以后,我们可以在菜单中点“build”->“Open Release Directory in Build Window”,然后会弹出命令行对话框。在对话框中输入“set”命令,然后回车,就会看到当前工程下所有的环境变量以及相应的值。<br />2. 添加环境变量:有两种方法添加环境变量,一种是点“build”->

2011-05-12 14:16:00 372

转载 PB5.0 features/sysgen参数和ceconfig.h中宏定义的对应关系

<br />使用PB建立一个wince image之前先要建立一个workspace来控制除OEM BSP之外的所有的image的属性,包括的内容等等。这些内容主要是通过PB的catalog来管理的,通过PB的viewàcatalog打开的视窗,我们从全部的window ce的可选组件中选择我们需要的加入到workspace中,这样的话我们sysgen出来的image就具备了相应的功能。从catalog的视窗中,我们可以通过查询任意一个组件的属性来获得它唯一对应的一个sysgen_开头的变量。但是这些变量并

2011-05-12 14:11:00 523

转载 深入理解.bin文件和.nb0文件的结构

<br /><br />http://blog.sina.com.cn/s/blog_455851af0100d9gi.html<br />.bin文件是一个描述性质的映像文件,它由文件头(head)、镜像数据目的起始地址(ImageStart)、镜像数据长度(ImageLength)和多条相对独立的记录(record)构成。<br />文件头(head)由7个字节组成,内容是:42 30 30 30 46 46 0A,即“B000FF/x0A”,这是判断镜像文件是.bin类型的依据。<br />镜像数据目

2011-05-12 13:45:00 448

转载 WinCE BSP工程文件pbcxml分析

<br />一.pbcxml分析<br />每一个BSP都有一个工程文件,里面描述了BSP的信息。<br />下面就来介绍一下BSP的pbcxml文件。<br />文件的大致格式应该是这样的:<br /><CatalogFile …><br /><FileInformation ….><br />….<br /></FileInformation><br /><BSP …><br />…<br /></BSP><br /><Item …><br />…<br /></Item><br /><Item …><

2011-05-12 13:44:00 386

转载 WINCE下修改config.bib文件中的FSRAMPERCENT设置值改变内存百分比

<br />CSDN上的相关贴子<br />http://topic.csdn.net/u/20090801/00/4f7f18fa-9327-41ad-9690-69c7eedb6951.html?seed=319379432&r=62915971#r_62915971<br />1。config.bib文件中的FSRAMPERCENT说明<br /><br />FSRAMPERCENT设置属于CONFIG字段!!!<br />FSRAMPERCENT: <br />格式:FSRAMPERCENT = n

2011-05-12 13:42:00 552

转载 WINCE6.0下修改了PUBLIC下的源代码的快速编译方法

<br />因为WINCE的组件都是分成一个个LIB/DLL的形式存在,所以只要把单个LIB/DLL编译更新然后再重新连接NK就可以起到快速编译NK的方法。<br />不过由于NK里面的各个组件都是DLL的形式,这些DLL依存一些对应的LIB文件,所以要更新DLL就得先更新那些LIB的内容先,而WINCE60下的PUBLIC<br />下的组件一般是以LIB文件的形式存在,所以要快速编译PUBLIC下的源代码就先编译这些LIB文件,更新完这些LIB文件再更新依赖这些LIB文件的DLL<br />,也只有把D

2011-05-12 13:41:00 814

转载 WinCE5.0和WinCE6.0下编译选项介绍续

<br />目前,在国内Windows CE的开发可以说是一种Windows CE.NET 4.2、Windows CE.NET 5.0、Windows Embedded CE 6.0多版本共存的情况。由于Windows CE.NET 4.2成熟的技术、丰富的I/O设备驱动以及被大多数的开发人员所熟悉,所以目前仍是嵌入式产品开发的主流。Windows CE.NET 5.0是CE 4.2的升级版。Windows Embedded CE 6.0是目前微软最新的嵌入式操作系统,强大的操作系统功能,于桌面开发系统开

2011-05-12 13:40:00 693

转载 深入浅出Wince的存储

刚学wince那会,对wince下面的文件存储老是理解不了,或者说容易搞混. 最近公司在做一个wince下的终端移植项目,中间也遇到了一些存储方面的问题,我自己学wince也有一段时间了,现在对wince的几个存储的概念也可以谈论一二了. 现在市场上的基于wince的板子,基本上有下面几种存储设备, nand flash, nor flash, SDRAM, SD卡, u 盘. SD卡和U盘不说了,跟PC机没什么驱别.  先说说nand flash(nor flash就不说了,类似), 你可以把它理解为电脑

2011-05-12 13:39:00 420

转载 WinCE6.0 R3的安装步骤

<br />很早以前装过一次R3,装完以后直接导致编译不过,当时也没找到解决办法,最后只能放弃,一直没再动它。这两天ZWF在调试程序的过程中发现了一个BUG,应用程序无法正确设置文件夹的隐藏属性。起初我以为是NAND驱动或者是注册表配置的问题。但从这两方面入手都没能成功。后来通过实验发现,在根目录下可以将文件夹设置为隐藏并且能生效,同样的代码在NAND目录下就不能正常工作。在根目录下设置为隐藏的文件夹,拷贝到另外任意一个目录下,会变成非隐藏的。据此猜测,可能是WinCE文件系统本身的BUG。于是找到09年全

2011-05-12 13:38:00 538

转载 WinCE文件目录定制及内存调整

<br />本文介绍了WinCE文件目录定制及内存调整的操作方法。WinCE的文件目录结构以及文件的位置都是在DAT文件中定义的。所有的dat文件会在WinCE编译时合并成initobj.dat文件,WinCE会根据DAT中的描述生成相应目录。 <br />这个说起来比较简单,WinCE的文件目录结构以及文件的位置都是在DAT文件中定义的。所有的dat文件会在WinCE编译时合并成initobj.dat文件,WinCE会根据DAT中的描述生成相应目录。<br />关于DAT的格式,可以参考我以前的一片文章:

2011-05-12 13:38:00 404

转载 winCE6.0 目录下工程的编译顺序

有时候会碰到某个目录下自动编译提示找不到*.lib文件,但先编译其他目录再编译出错的工程,则又是成功的。 这是由于编译顺序不正确造成的,研究了下,dirs文件里的顺序很重要,还有,要调用其他工程生成的*.lib文件的工程sources文件里要加入同步指示语句。例如:zlib,xml目录下是库文件,生成*.lib被src目录下的程序调用,则dirs文件,DIRS=/ zlib/ xml/ src     //# sources has SYNCHRONIZE_DRAIN=1如果写成DIRS=/ src/ xm

2011-05-12 13:37:00 438

转载 winCE 注册表相关讨论

<br /> 保存到注册表中<br />这一章主要讲解Windows CE.NET下注册表相关技术。<br />1、 对象存储(object store)<br />  对象存储是Windows CE默认的数据存储机制。任何新创建的内核中都默认包含对象存储器。对象存储的实质是在RAM中创建一个文件系统,将文件保存在RAM中,这些文件来源于ROM。当设备启动时,引导程序将ROM中的内核文件解压并存放在RAM中。"/windows"目录就是基于对象存储的。对象存储的特点是文件可以压缩、支持事务机制(和数据库中的

2011-05-12 13:36:00 448

转载 WinCE中的文件系统文件

<br />文件系统文件(.dat)定义了在目标设备初始化时设置的文件和文件夹的位置,当目标设备冷启动时,Filesys.exe将会使用这些文件系统文件在内存中来创建文件夹,链接和文件等。<br />       通过修改Project.dat文件中文件夹和文件位置的定义,你可以定义任何除了Windows文件夹以外的根文件夹,另外,你还能够从ROM中的Windows文件夹复制或链接文件。这些文件和链接通过.dat文件被创建在RAM文件系统中对象存储区域里。<br />       下面的代码是Project

2011-05-12 13:35:00 474

转载 PB 配置文件解析

<br />这篇文章主要讲解PB的配置文件。从用途方面分析,PB包含两种配置文件。分别是源码配置文件和镜像配置文件。下面分别讲解这两种配置文件。<br />一、源码配置文件<br />  源码配置文件用于编译源码时使用。这里的源码是指Windows CE公开的源码,如驱动程序、系统应用程序等。PB在编译平台时将这些公开的源码即时编译并将编译链接后的文件复制到平台工程子目录里。记得前面讲过PB在开始编译时调用cebuild.bat批处理文件,cebuild.bat执行的一个步骤是针对_DEPTREES变量指定

2011-05-12 13:35:00 1027

转载 CE6内核启动过程-新角度

<br />开发人员有必要理解CE系统启动过程。首先回顾一下系统怎样建立起来的。微软工具链生成.exe和.dll文件。这些文件都包含了Portable Executable格式,简称PE格式。它们的结构都是一样的:<br />1、  是一种common object文件格式的扩展<br />2、  有导入、导出表<br />3、  头部有入口点,是开始执行的地方。<br />操作系统都是由编译器生成的,一个exe(nk.exe)不会连接到任何外部的库或者DLL。当这个文件执行时候,系统中还没有任何东西。Ex

2011-05-12 13:31:00 429

转载 WinCE上BINFS实现详解

<br />作者:www.armce.com  wwfiney<br />网上不少介绍三星24x0系列的BINFS启动方式实现,有些内容上描述的不是非常全面<br />下面就WinCE6上的BINFS实现,从基本原理到修改BSP,再到如何烧录启动做一个较全面的讲解<br />一 BINFS到底是什么?<br />其实BINFS就是MS给CE做的一种存放系统镜像的一个文件系统。<br />一说文件系统,大家可能比较头大。那么这么说,其实就是一个结构体(说是文件系统确实比较勉强,结构体可能更合<br />适),

2011-05-12 13:29:00 350

转载 Power Management

<br />本文对Power Management这部分代码的研究是基于Wince5.0的(注:在最新的Wince 6.0上对电源管理的架构做了较大改变)。 <br />这部分的代码在/PUBLIC/COMMON/OAK/DRIVERS/PM下,在OS中以PM.dll的形式存在。<br /><br />--------------------------------------------------------------------------------<br />一、PowerManagement

2011-05-12 13:27:00 964

转载 IClass与电源管理

<br />前段时间为J9项目上添加电源管理,中间走了一些弯路。之前错误的认为,IClass只是与电源状态的改变方法有关,也就是说IClass的正确与否只会影响到设备电源状态的正确与否,而不会造成设备是否可以支持设备电源状态的转换。<br />结果后来整USB的时候,发现完全不是这么回事,郁闷了两天。<br />担心忘记了,电源管理中与IClass相关知识赶紧写下来。<br />一.PM中的相关内容说明<br />1.结构体DEVICE_LIST<br />首先看一下结构体DEVICE_LIST的定义:<b

2011-05-12 13:25:00 517

转载 Windows CE Virtual Memory Layout for Debugging

<br />from:http://blogs.msdn.com/sloh/archive/2005/02/25/380475.aspx<br />Windows CE Virtual Memory Layout for Debugging<br />I want to blog about how to resolve symbols manually, and realized I would have to assume that the reader would understand the CE

2011-05-12 13:19:00 426

转载 Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)

<br />GPIO 是ARM芯片最基本的输入输出通道,在ADS下操作就是一个单片机工作,直接读写其寄存器。在ARM9平台上,Windows CE系统将GPIO的实地址(例如2410的GPIO的基地址为0x56000000)映射到虚拟地址空间(GPIO对应为0xB1600000),这样,通过对这段虚拟地址空间的操作,就能够完成对GPIO或者其他片内资源的控制、输入输出工作。<br />要操作一个平台的GPIO,在其对应BSP中按照基地址,找到虚拟地址,并且找到方便操作这个地址的数据结构就可以了,关键函数就是

2011-05-12 13:16:00 427

转载 基于Windows CE的KITL技术

<br />  KITL(Kernel Independent Transport Layer)是基于Windows CE平台的一种软件技术,开发商基于它可以很容易地支持各种调试功能。因为Windows CE的调试是一种远程调试,所以开发工作站(运行PB的机器)和设备端必须要有相应的通信通道,不同的硬件平台会有不同的通信硬件,这样会增加开发的难度。KITL的目的就是将硬件层和通信协议层分开,开发商只要根据相应的API实现控制通信硬件的代码就可以实现KITL。 <br />    KITL要工作必须要具备两个

2011-05-12 13:13:00 382

转载 使用KITL的详细教程

<br /> 在几个以前,我曾经玩过一下子KITL,但是那时候什么都不懂,根本没有了解KITL是什么东西,更别说是工作原理了,这段时间都是在调试一些键盘等本机驱动(系统启动时候就启动的驱动),这个驱动不能使用驱动调试助手来调试,所以非常郁闷,每次都要打包烧写内核,不仅效率非常低,而且烧写过程很容易使电脑重启,哈哈,搞多几次,估计硬盘会严重受损。调试本机驱动,非请KITL这个大神不可!<br />     现在我们就来一步一步操作吧。<br />     首先,修改BSP一些配置。<br /> <br /> 

2011-05-12 13:12:00 415

转载 Mini2440 Ethernet KITL调试

<br />前几天把串口的KITL调试完成,就想着之前一直用网络KITL,而且串口KITL比较慢,所以就想也把2440的网络kITL架起来。<br />但是最终还是失败了,原因很简单,自己太菜了啊!好多问题知道的人都不屑于告诉你啊。哎...只能暂时搁置,磨刀去.....<br />这里先把这两天调试的过程记下了,方便后续继续进行。<br />步骤1.在PLATFORM/mini2440/Src/Inc/option.h文件中,打开Ethernet KITL开关。<br />// --- by custome

2011-05-12 13:12:00 498

转载 Kitl是怎样工作的?

<br />part1. <br />kitl初始化 <br />------------- <br />Kitl的加载于其他调试服务之前,以提供为这些调试服务发布调试信息和接收主机调试命令的的通道。通常kitl在系统HAL初始化工作完成后进行加载,MS建议在OEMInit中启动kitl。这样就可以使用NIC或者是serial/Pal作为kitl的物理传输介质。 <br />kitl的初始化由KitlInit完成,这部分代码主要负责:(to be fill later) <br />下面我们来看看kitl的

2011-05-12 13:10:00 466

转载 配置config.bib的注意事项以及错误分析

<br />一、编译出NK,但是但是下载NK后不会启动。<br />原因:就是DNW设置地址不对,并不是每个NK下载到0x32000000都能运行的。欲知详情,请看下面。<br />先看这个能在0x32000000运行的NK的内存映射表<br />OEMAddressTable <br />    ;;;------------------------------------------------------------- <br />    ;;; Virt Addr   Phys Addr   MB

2011-05-12 13:04:00 364

转载 Eboot启动代码分析

<br />启动代码通常都是用处理器相应的汇编代码写成,比较晦涩,但是却包含了很多与平台相关的信息,对初始化代码进行分析有利于对平台的理解。本文将对Eboot的初始化代码进行分析,主要包含从Reset到进入C的main开始。<br />mov     r0, #0x48000000         ; Memory controller base physical addr.<br />    add     r0, r0, #0x4            ; Add offset of MDREFR<br

2011-05-12 13:03:00 561

转载 bootloader 开发,最郁闷前三步

<br />在书市和网上溜达一圈,只发现两本关于Bootloader的开发资料。一个是电子工业出版社出版的《Windows CE.NET实用开发技术》;另一个是PB的HELP文件。其他大多为介绍Bootloader相关知识的,最多也就是修改一下官方的Bootloader源码。 <br />觉得没什么意思!如果官方不给源码呢?咱还是要从零开始。也算是发扬自力更生、艰苦奋斗的革命精神。由于本人的英文太差,在金山词霸的帮助下,花了三天时间(没办法,白天要上班,晚上要照顾媳妇,自己能支配的时间实在是少的可怜)才看了

2011-05-12 13:02:00 588

转载 WinCE5.0 BSP BOOTLOADER开发详解-生成bin和nb0

<br />一,生成EBOOT.exe <br />1,在D:/WINCE500/PLATFORM/Sun2410/SRC/BOOTLOADER/EBOOT目录下,建立名为Startup.s的汇编文件。 <br />源代码如下: <br />OPT 2 <br />INCLUDE kxarm.h <br />OPT 1 <br />OPT 128 <br />STARTUPTEXT <br />LEAF_ENTRY StartUp <br />nop <br />END <br />2,在D:/WINCE5

2011-05-12 13:01:00 494

转载 Bootloader 的主控函数bootloadermain函数分析

<br />startup.s对底层进行初始化后,调用main()此函数一般位于main.c下面<br />main函数调用BLCOMMON.c下的BootloaderMain()函数,bootloader的主控权丧失。<br />学习何老师书的内容摘抄如下:<br /> //目录是%/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/ETHDBG/BLCOMMON下的BLCOMMON.c文件中的内容<br />void BootloaderMain (void)<br />{<br /

2011-05-12 12:59:00 740

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除