<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LifeIce的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LifeIce</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LifeIce]]></copyright><item><title><![CDATA[谈谈C语言中函数定义/声明冲突时的处理]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/8280803</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/8280803</guid><author>LifeIce</author><pubDate>Tue, 11 Dec 2012 09:09:30 +0800</pubDate><description><![CDATA[首先，本文中讨论的例子采用C语言，而非C++语言。
使用示例分析这个问题：
例子1



[cpp] 
view plaincopyprint?


#include 
    void hello(int a);  void hello(int a, int b);    void hello(int a)  {      printf("hello, %d\n", a);]]></description><category></category></item><item><title><![CDATA[SPI Flash Parts]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/8216655</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/8216655</guid><author>LifeIce</author><pubDate>Fri, 23 Nov 2012 14:59:33 +0800</pubDate><description><![CDATA[Related Files
  $(EFI_SOURCE)\$(PROJECT_FAMILY)\$(PROJECT_NAME)\Common.dsc
  $(EFI_SOURCE)\Library\RuntimeDxe\FdSupportLib\FdSupportLib.inf
  $(EFI_SOURCE)\Library\RuntimeDxe\FdSupportLib\FdSupport]]></description><category></category></item><item><title><![CDATA[How to implement an UEFI Shell Application]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/8207897</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/8207897</guid><author>LifeIce</author><pubDate>Wed, 21 Nov 2012 14:36:36 +0800</pubDate><description><![CDATA[1.在$(EFI_SOURCE)\Application\Shell下创建一个文档HelloWorld,包括：
        C header file (HelloWorld.h)
        C source file (HelloWorld.c)
         A component  description HelloWorld.inf file
HelloWorld.i]]></description><category></category></item><item><title><![CDATA[Shell环境下增加Internal Command]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/8207634</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/8207634</guid><author>LifeIce</author><pubDate>Wed, 21 Nov 2012 13:48:39 +0800</pubDate><description><![CDATA[1.在$（EFI_SOURCE）\Application\shell\下建立一个文件，命名为Hello
      包括Hello.c、Hello.h、Hellostrings.uni
2.在$（EFI_SOURCE）\Application\shell\Shell.inf orShellFull.inf中的【sources.common】
添加               Hello\He]]></description><category></category></item><item><title><![CDATA[修改开机LOGO]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/8150484</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/8150484</guid><author>LifeIce</author><pubDate>Mon, 05 Nov 2012 22:43:09 +0800</pubDate><description><![CDATA[有两种方法：一种是通过EzH20工具，另一种是在代码中更改加载的Logo.
 
1.EzH20工具
（1）把编译生成的*.fd文件加载到EzH20中
（2）在工具的logo选项中选择要加载的logo
（3）保存修改的*.fd
（4）把修改的*.fd文件合成bin文件，下到DEMO板上
2.在\Platform\Generic\Logo\InsydeBoot下修改*.bmp为要更改的l]]></description><category></category></item><item><title><![CDATA[Add option ROM]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/8054791</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/8054791</guid><author>LifeIce</author><pubDate>Wed, 10 Oct 2012 09:11:46 +0800</pubDate><description><![CDATA[• Step1:
          Create folder for new option ROM: including 3 components
          1.makefile.new
          2.OptionRombin file
          3.INF file
example:$(PROJECT_FAMILY)\$(PROJECT_NAME)\B]]></description><category></category></item><item><title><![CDATA[UEFI HOB]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7989229</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7989229</guid><author>LifeIce</author><pubDate>Mon, 17 Sep 2012 20:29:05 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/celiaqianhj/article/details/6799799
 
 

HOB：Hand-off Block
在PEI的执行过程中，PEI Phase提供了一种简单的机制来为数据存储分配内存，这个数据存储区被称为HOBs。
这个数据存储区的基本内容为Hand-off Block，即HOB。
在内存中，连续存在的HOBs对PEI]]></description><category></category></item><item><title><![CDATA[CONTAINING_RECORD IN EFI]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7988270</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7988270</guid><author>LifeIce</author><pubDate>Mon, 17 Sep 2012 16:28:06 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/hgf1011/article/details/4635888
CONTAINING_RECORD IN EFI
 
EFI BIOS几乎全部用C完成，它几乎将C语言的各种技巧发挥到了极致。C的精髓泰半是指针，另外宏也是非常值得称道的。程序员对于宏的评价可谓褒贬不一，有人说它是万恶之源，有人则赞其为一把利刃。我个人觉得运用之妙，存乎一心，宏不是]]></description><category></category></item><item><title><![CDATA[UEFI Images]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7987606</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7987606</guid><author>LifeIce</author><pubDate>Mon, 17 Sep 2012 14:45:21 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/celiaqianhj/article/details/6763071

1. 什么是UEFI Images？
UEFI Images是UEFI定义的、包含可执行代码的一类文件，最显著的特征是包含一个用来定义这段可执行代码格式的PE/COFF header，这个header定义了Processor Type和Image Type。（Microso]]></description><category></category></item><item><title><![CDATA[如何理解c和c++的复杂声明]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7986507</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7986507</guid><author>LifeIce</author><pubDate>Mon, 17 Sep 2012 10:10:02 +0800</pubDate><description><![CDATA[转自：百度文库
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗？本文将由易到难，一步一步教会你如何理解这种复杂的C/C++ 声明。



　　我们将从天天都能碰到的较简单的声明入手，然后逐步加入const修饰符和typedef，还有函数指针，最后介绍一个能够让你准确地理解任何C/C ++声明的“右左法则”。



　　需要]]></description><category></category></item><item><title><![CDATA[深入理解C语言指针的奥秘]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7986465</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7986465</guid><author>LifeIce</author><pubDate>Mon, 17 Sep 2012 09:59:40 +0800</pubDate><description><![CDATA[转自： http://blog.youkuaiyun.com/maokor/article/details/241102
 




深入理解C语言指针的奥秘


 







指针的概念 

　　指针是一个特殊的变量，它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容：指针的类型，指针所指向的 类型，指针的值或者叫指针所指向的内存]]></description><category></category></item><item><title><![CDATA[硬断点和软断点的区别]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7982542</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7982542</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 16:49:51 +0800</pubDate><description><![CDATA[转自macrossdzh
硬断点--break point
软断点--assert
 
简单的解释：
硬件断点：硬断点需要硬件寄存器提供支持，断点的数目受Embedded ICE中的Watchpoint数目的限制，但是可以在任何地方设置断点。
软件断点：软件断点通过在运行起来的程序中设置特征值实现，其数目不受限制，但是一般情况下软件断点只能在可写的存储器的地址中设置（比如：RAM），而]]></description><category></category></item><item><title><![CDATA[UEFI BIOS ROM文件格式]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7981262</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7981262</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 09:25:39 +0800</pubDate><description><![CDATA[转自CeliaQianhj
 
1. FD (Firmware Device)
整个BIOS ROM 就是一个FD，即Firmware Device。
2. FV (Firmware Volume)
整个BIOS ROM 又被分成多个小的逻辑区块，这就是FV，即Firmware Volume。
每个Firmware Volume Image包括 Header 和 FFS Image，]]></description><category></category></item><item><title><![CDATA[UEFI Boot Flow 系列之BDS]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7981252</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7981252</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 09:19:01 +0800</pubDate><description><![CDATA[转自CeliaQianhj

BDS: Boot Device Select
 BDS阶段的任务：
1. Initialize console devices base on the ConIn, ConOut and StdErr environment variables.
2. Attempt to load all drivers listed in the Driver####]]></description><category></category></item><item><title><![CDATA[UEFI Boot Flow系列之DXE]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7981244</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7981244</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 09:17:44 +0800</pubDate><description><![CDATA[转自CeliaQianhj
DXE: Driver Execution Environment
为什么要有DXE Phase？
大部分系统的初始化工作都是在DXE 阶段实现的。
DXE Phase由以下几部分组成：
1. DXE Core (DXE Foundation)
     产生一组Boot Services, Runtime Services, DXE Services。 由]]></description><category></category></item><item><title><![CDATA[UEFI Boot Flow 系列之PEI]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7981230</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7981230</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 09:07:50 +0800</pubDate><description><![CDATA[转自CeliaQianhj
PEI：Pre-EFI Initialization
为什么要有PEI Phase？
1. ROM空间的问题，所有的Code都没有压缩
2. Memory还没有初始化
3. Chipset没有初始化
PEI Phase的特性：
1. 在ROM上执行
2. 都是没有被压缩的代码
3. PEI Core与硬体没有关联
PEI Phase的任务：
1.]]></description><category></category></item><item><title><![CDATA[UEFI Boot Flow 系列之SEC]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7981223</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7981223</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 09:04:21 +0800</pubDate><description><![CDATA[转自CeliaQianhj
 
为什么要有SEC Phase?
1. 需要用汇编语言来完成C无法处理的工作，如C语言无法处理CPU的特殊寄存器（MSR，MTRR，CRX）。
2. C语言需要Memory当成Stack来处理Local 变数，而刚开机Memory还没有被初始化，还不可用，所以需要CAR（Cache As Ram）的初始化。
3. 让CPU进入Protected Mode(F]]></description><category></category></item><item><title><![CDATA[UEFI Boot Flow 系列之概述]]></title><link>https://blog.youkuaiyun.com/LifeIce/article/details/7981218</link><guid>https://blog.youkuaiyun.com/LifeIce/article/details/7981218</guid><author>LifeIce</author><pubDate>Sat, 15 Sep 2012 09:00:11 +0800</pubDate><description><![CDATA[转自CeliaQianhj
有图有真相：

1. SEC Phase （Security）
开机之后，系统开始执行第一条指令，此时就已经进入了SEC阶段。这时的Memory还没有被初始化，还不可用，所以这一阶段最主要的工作就是建立一些临时的Memory，它可以是处理器的Cache，或是system Static RAM(SRAM)。并且使CPU进入Protect Mode。   另外，SE]]></description><category></category></item></channel></rss>