<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/fredzeng" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/fredzeng" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 13 Jul 2010 12:06:00 GMT</lastBuildDate><title>Do you have little time</title><description>zzZ zZZ zzz...</description><link>http://blog.csdn.net/blogrss.aspx?username=fredzeng</link><item><title>Application Verifier 工具及指南</title><link>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732658.aspx</link><description>&lt;br /&gt;&lt;br /&gt;这个工具的作用是用于判断一个wince的AP及其组件对内存堆的分配释放，对句柄的创建销毁进行检查，对AP退出后没有释放的内存堆和句柄log出来，帮助开发者分析问题解决问题。&lt;br /&gt;当然对驱动它也可以搞定，我本人还木搞懂，所以先捂着还没热的一点经验，给大家一些引导，一是让大家知道有这么个东西（昨天我还不知道有这么个东西呢，嘿嘿），而是让大家知道怎么能最快用起这个东西，三是让大家知道怎么它的log。&lt;br /&gt;&lt;br /&gt;1.先把设备端的目录拷贝到设备上执行，看到下面的对话框，呵呵，你的屏幕一定要够大才行哦。&lt;br /&gt;&lt;br /&gt;勾上要执行的hook，然后点击add来添加需要检查的exe，如图。&lt;br /&gt;2.从对话框里面选择要添加的exe&lt;br /&gt;&lt;br /&gt;3.新exe会出现在list列表，选择后点击run，如图。&lt;br /&gt;&lt;br /&gt;点击run后你的exe就运行起来了，模拟运行一段时间后关闭你的exe，记住一定要正常关闭，不能kill掉。&lt;br /&gt;这个时候会在根目录生成一个Appverifier_XXX.log的文件，这就是输出的结果。&lt;img src=&quot;http://www1.feedsky.com/t1/390804089/fredzeng/csdn.net/s.gif?r=http://blog.csdn.net/fredzeng/archive/2010/07/13/5732658.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390804089/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390804089/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Jul 2010 20:06:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2010/07/13/5732658.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732658.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390804089/1065983</fs:itemid></item><item><title>注意，CE6下OAL内无法调用API</title><link>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732638.aspx</link><description>CE6下，oal.exe（即nk.exe）是个特殊的进程，它不能享受其他AP的进程那样，link一个lib的方式来和一个dll建立隐式链接，包括coredll.OAL.exe也不能用Loadlibrary方式来加载dll，因为loadlibrary本身就是API，可以使用它的exe必须link coredll.lib。可怜的oal只能访问kernel.dll，但是也是用特殊的方法（NKGlobal）来做到的，具体方法是，romimage帮忙吧NKGlobal的地址fixup在pTOC， oal通过pToc得到kernel.dll的入口地址和几个少的可怜的函数接口。在这里LoadOneLibrary和GetProcessAddrA之类的函数依然是在kernel实现，但是这些接口并没有默认提供给OAL，郁闷吧！？ 因为heap在cE6下依然是coredll实现的，kernel可以通过loadlibrary的方式来搞定coredll，从而可以调用LocalAlloc之类的heap分配，但是oal就望尘莫及了，所以oal里面的东西比如kernelioctrl&lt;img src=&quot;http://www1.feedsky.com/t1/390802223/fredzeng/csdn.net/s.gif?r=http://blog.csdn.net/fredzeng/archive/2010/07/13/5732638.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390802223/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390802223/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Jul 2010 19:51:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2010/07/13/5732638.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732638.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390802223/1065983</fs:itemid></item><item><title>哈哈，微软的CE6简直是大门洞开啊</title><link>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732635.aspx</link><description>&lt;br /&gt;最近通过看LocalAlloc的问题结合之前研究如何用AP去读写CE6的物理地址的过程，发现CE6的内核存在巨大安全隐患。&lt;br /&gt;如果说CE5是蜗牛壳，那么CE6就是鸡蛋壳了，骚味动点脑筋，CE6的核心就能马上被你控制，下面简述几个CE6设计上的败笔。&lt;br /&gt;败笔1：KDataStuct位置固定&lt;br /&gt;稍微了解一点wince的都知道这个结构体吧，这个结构体在wince初始化的最早期的时候会由OAL先去初始化放置于一个“kernel才有特权”的专属地址，以CE6为例，它位于虚拟地址0xffffc800，此结构体放置大量关键内核信息，此败笔在于此地址固定，而且只需要得到“kernel特权”就可以访问此结构体。&lt;br /&gt;败笔2：CE6的OAL和NK的global结构体&lt;br /&gt;CE6和CE5最重要的区别之一就算OAL和kernel正式分家了，以前CE5因为OAL和Kernel打包成一个exe，外界很难进入和破坏里面的链接关系。但是CE6为了把OAL和kernel.dll分开而又要考虑让它们之间可以建立一些必要的联系，创造性的设计了两个新结构体：_NKGLOBAL和&lt;img src=&quot;http://www1.feedsky.com/t1/390801956/fredzeng/csdn.net/s.gif?r=http://blog.csdn.net/fredzeng/archive/2010/07/13/5732635.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801956/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801956/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Jul 2010 19:49:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2010/07/13/5732635.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732635.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801956/1065983</fs:itemid></item><item><title>CE6实体内存管理之找到Free page</title><link>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732627.aspx</link><description> 内存管理，你肯定可以在网上找到一堆关于wince虚拟内存架构的文章。今天我想和大家分享的内存管理的侧重点不在于整个虚拟内存的架构，换了一个冷门，来摸索wince的实体内存管理。我也是最近有一个需求需要知道wince到底有多少物理内存是没有被使用的才开始看这个部分的，经过对微软核心代码的一些简单追踪，找到了一些蛛丝马迹。然后把所有的蛛丝马迹汇总起来，找到了一个比较通用（即可以摆脱CE环境，比如在Eboot下亦可采用）的方法，来记录wince环境下，物理内存的使用情况。（还有第二种方法可行，但是需要改动到kernel的源码或者需要提供kernel.map文件才行）。Note：此次研究的平台是基于CE6的，具体是R几可以don‘t care，CE5下这部分的微软对于实体内存的管理可能不尽相同。先来看一下在我们的sdram或ddr里面，数据整体上是怎么进行划分的（我的目的是找出下面垂直箭头指向的page）：我大致把内存化为如上图所示的架构，而且是站在wince的角度来看内存的，这种架构只是一个sample，控&lt;img src=&quot;http://www1.feedsky.com/t1/390801274/fredzeng/csdn.net/s.gif?r=http://blog.csdn.net/fredzeng/archive/2010/07/13/5732627.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801274/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801274/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Jul 2010 19:44:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2010/07/13/5732627.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2010/07/13/5732627.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801274/1065983</fs:itemid></item><item><title>PB5.0 features/sysgen参数和ceconfig.h中宏定义的对应关系</title><link>http://blog.csdn.net/fredzeng/archive/2007/10/31/1859418.aspx</link><description>在实际的运用中，AP可以＃include一个名为“ceconfig.h”的头文件，这个头文件里面都是类似”CE_MOULDLE_***  SHELL_MODULES_***  COREDLL_****”之类的宏定义，这些宏定义可以直接被AP用来判定image内是否具备其需要的一些组件，比如MFC，AYGSHELL等等。Ceconfig.h是在sysgen的阶段自动由系统的批处理生成的，由于ceconfig.h的重要性，所以有必要搞清楚通过PB的catalog生成的sysgen_环境变量是如何和ceconfig.h内部的宏对应起来的。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801276/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801276/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 31 Oct 2007 13:58:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2007/10/31/1859418.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2007/10/31/1859418.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801276/1065983</fs:itemid></item><item><title>VirtualCopy in WinCE6.0</title><link>http://blog.csdn.net/fredzeng/archive/2007/04/04/1551898.aspx</link><description>virtualcopy在CE6.0下的使用&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801277/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801277/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 04 Apr 2007 16:56:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2007/04/04/1551898.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2007/04/04/1551898.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801277/1065983</fs:itemid></item><item><title>Samsung nand flash ID spec</title><link>http://blog.csdn.net/fredzeng/archive/2006/12/14/1442753.aspx</link><description>三星在nand flash存储方面也是投入了很多精力，对于pure nand flash、OneNAND（带controller的nand flash模块）以及nand的驱动都有很深层的开发。后面说的nand都会基于Samsung的产品，包括驱动。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801278/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801278/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Dec 2006 14:40:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2006/12/14/1442753.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2006/12/14/1442753.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801278/1065983</fs:itemid></item><item><title>Intel PXA27x平台中的UART接口驱动</title><link>http://blog.csdn.net/fredzeng/archive/2006/09/27/1296195.aspx</link><description>UART是一种非常古老但是却一直保存在现有计算机系统中的接口，它可以把处理器对数据的并行处理转换成为串行的数据加以传输，这种接口非常简单但是依然特别常用，目前的嵌入式微处理器都Build-In了这种接口。本人有幸在项目中接触了PXA270处理器，针对其中的UART做过一些研究，想通过本文和大家分享。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801279/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801279/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 27 Sep 2006 18:10:00 +0800</pubDate><author>鹏虾</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2006/09/27/1296195.aspx</guid><dc:creator>鹏虾</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2006/09/27/1296195.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801279/1065983</fs:itemid></item><item><title>从AP中获取电池和电源信息变更通知的方法</title><link>http://blog.csdn.net/fredzeng/archive/2006/09/05/1181192.aspx</link><description>在WinCE的项目开发过程中经常要编写AP来获取电池的电量和电源的来源等信息,本文实现了使用WinCE电源管理内部的消息提醒服务来实现对电池信息变更的判断以提高效率。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801280/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801280/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 05 Sep 2006 19:01:00 +0800</pubDate><author>fredzeng</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2006/09/05/1181192.aspx</guid><dc:creator>fredzeng</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2006/09/05/1181192.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801280/1065983</fs:itemid></item><item><title>WinCE中的Flash分区和CheckSum点滴</title><link>http://blog.csdn.net/fredzeng/archive/2006/08/25/1118423.aspx</link><description>最近在分析如何在WinCE运行时得到保存在FLASH的binfs分区中的image数据的完整性，积累了一些CheckSum和image数据结构，FLASH分区原理的经验点滴，分享一下，有些地方可能存在猜测的成分，仅供参考。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/fredzeng/390801281/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/fredzeng/390801281/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 25 Aug 2006 16:42:00 +0800</pubDate><author>fredzeng</author><guid isPermaLink="false">http://blog.csdn.net/fredzeng/archive/2006/08/25/1118423.aspx</guid><dc:creator>fredzeng</dc:creator><fs:srclink>http://blog.csdn.net/fredzeng/archive/2006/08/25/1118423.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/fredzeng/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/fredzeng/~1065983/390801281/1065983</fs:itemid></item></channel></rss>
