string

string
posts - 26, comments - 176, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2015年7月12日

     摘要: 介绍UEFI系统从加电到CPU执行第一条指令的过程,并且介绍系统UEFI ROM的组成,.fdf文件的格式  阅读全文

posted @ 2015-07-12 10:17 djx_zh 阅读(10044) | 评论 (3)编辑 收藏

2015年2月8日

对《UEFI原理与编程》一书有疑问,或在学习UEFI的过程中有疑问,请到www.biosuefi.com#/uefi提出您的问题



第7页 (2)SEC阶段执行流程

原文 :2)从实模式转换到32位平坦模式(包含模式)
修订 :2)从实模式转换到保护模式、32位平坦内存模型

 

第15页 2.1.1安装所需开发工具
原文 3)安装IASL编译器(https://www.acpica.org/downloads/binary_tools)
4)IASL用于编译.asl文件。.asl是高级配置与电源接口(Advanced Configuration and Power Interface)源文件。
修订 3)安装IASL编译器(https://www.acpica.org/downloads/binary_tools)
    IASL用于编译.asl文件。.asl是高级配置与电源接口(Advanced Configuration and Power Interface)源文件。
4)安装NASM编译器(www.nasm.us)


第15页,2.1.2 配置EDK2 开发环境

原文 :C:\> EDK2Edksetup.bat
修订C:\EDK2> Edksetup.bat

 

第35页 5.[Protocol]块 (1)语法
原文[LibraryClasses]
修订[Protocols]

 

第35页 5.[Protocol]块 (2)示例
原文 :工程文件的[LibraryClasses]
[LibraryClasses]
修订 :工程文件的[Protocols]
[Protocols]

 

第89页 [示例 5-5] 分配指定地址处的3个页面
原文 :Status = gBS->(AllocateAddress, EfiBootServicesData, 3, &pages);
修订 :Status = gBS->AllocatePages(AllocateAddress, EfiBootServicesData, 3, &pages);

 

第115页 6.3.1提升和恢复任务优先级
原文 :RaiseTPL和RestoreTPL必须成对出现,执行了RaiseTPL后,必须尽快调用RaiseTPL将任务优先级恢复到原来的值
修订 :RaiseTPL和RestoreTPL必须成对出现,执行了RaiseTPL后,必须尽快调用ResoreTPL将任务优先级恢复到原来的值

 

第129页 7.1GPT硬盘
原文 :20世纪90年代末,英特尔(Inter)公司开发了
修订 :20世纪90年代末,英特尔(Intel)公司开发了

 

第221页,6)执行如下命令播放视频
原文fs0:> testc.efi piano 2.wav
修订fs0:> testc.efi piano.wav

  

第278页
原文 :Print(L"字体加载成功");
修订 :Print(L"字体卸载成功");

 

第278页
原文 :Print(L"Failed to load font: %r\n", Status);//字体注册失败
修订 :Print(L"Failed to unload font: %r\n", Status);//字体卸载失败

 

-----------------------------------------------------------------------------------

感谢

感谢robin.xu

感谢kurtqiao

感谢Max

posted @ 2015-02-08 07:45 djx_zh 阅读(1578) | 评论 (16)编辑 收藏

书中讲到了如何利用_asm int 3 调试代码。
_asm int 3需要配合Nt32Pkg使用。也就是说通过Nt32Pkg编译出的.efi文件才能够调试。
如果你带_asm int 3语句的工程是通过非Nt32Pkg编译出来的(例如AppPkg),在SecMain模拟器中调试会导致断点停在Image.c文件如下代码中
   Image->Status = Image->EntryPoint (ImageHandle, Image->Info.SystemTable);
在模拟器控制台会输出
WARNING: No source level debug
表明SecMain在加载你的模块时没有成功加载调试符号。
解决方案
在.inf文件中添加如下代码
[BuildOptions]
  MSFT:DEBUG_*_IA32_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE




posted @ 2015-02-08 03:08 djx_zh 阅读(3269) | 评论 (13)编辑 收藏

2015年1月9日

经过近一年的修改,终于面世了。

谢谢大家给予的支持以及耐心的等待,抱歉让大家久等了。
源代码可以从 googlecode , github或 百度网盘下载。
部分编译好的可执行文件可从google drive   下载。
图书可以在各个网上书店购买,例如:
国外的朋友可以从amazon上购买,amazon是可以邮寄到海外的。  

希望这本书能够给大家带来帮助吧。也非常期望能得到大家的指正。

posted @ 2015-01-09 12:27 djx_zh 阅读(2434) | 评论 (2)编辑 收藏

2014年12月10日

新书目前进入排版和印刷阶段。书中的代码可以到https://code.google.com/p/uefi-programming-guider/下载。

posted @ 2014-12-10 11:45 djx_zh 阅读(594) | 评论 (0)编辑 收藏

2013年12月28日

征人试读

曾经参与过这样一个游戏,根据节拍猜歌。 主持人在纸阄上写下几个非常流行的歌曲名,选一个人A抓阄选出一首歌,然后A敲到出这首歌的节拍,其他人猜歌名。A敲打节拍之前先估计有多少人能猜出结果, 敲打完节拍后统计有多少人猜出结果。游戏进行很多轮。每次猜中歌名的人的数目都远远低于节拍敲打者估计的数目。 A 是信息的发布者,其他人是信息的接受者。信息的发布者因为占有比接受者多的多的信息, 总是会过高的估计信息被接受的程度。

新书UEFI编程指南断断续续写了近2年,写作过程中深感写作水平有限,写着写着就会疑惑:写出来的东西是读者想要的东西吗? 我想这个问题的答案会提高这本书的质量。所以希望写作完成之前能得到一些反馈。 这就是为什么要征人来试读并提意见。

如果你感兴趣,并愿意反馈给我您的意见,请您发邮件至djx.zhenghua@gmail.com,  来信请写出您最感兴趣的章节和您的姓名。谢谢!

下面是本书的章节

前言 
第1章UEFI体系结构 
第2章UEFI 开发环境搭建 
第3章 UEFI  工程模块 
第4章UEFI中的protocol 
第5章 UEFI的基础服务 
第6章 Event 
第7章 硬盘及文件系统 
第8章开发UEFI服务 
第9章开发UEFI驱动 
第10章 用C++开发UEFI应用 
第11章GUI基础 
第12章GUI 
第13章多任务 
第14章网络应用开发 
第15章使用STD函数 
第16章Shell及常用命令 

 

posted @ 2013-12-28 10:46 djx_zh 阅读(1710) | 评论 (9)编辑 收藏

2013年5月11日

Uefi相关代码可以到 www.photovas.com/cgi-bin/uefi下载 有问题 可以到 www.photovas.com/cgi-bin/bbs 提问
抱歉给大家带来不方便,但新网址的bbs交流要方便一点。

posted @ 2013-05-11 20:16 djx_zh 阅读(787) | 评论 (1)编辑 收藏

2013年3月10日

32-bit SimpleThread Protocol 可以到 UEFI 编程 下载
测试程序到 Test SimpleThread 下载
实现SimpleThread的思路在
http://www.cppblog.com/djxzh/archive/2012/01/15/163593.html 中有所论述。

posted @ 2013-03-10 03:14 djx_zh 阅读(924) | 评论 (1)编辑 收藏

2012年12月23日

https://code.google.com/p/videoanalyze/
一个动态编译器项目,用于编译视频处理脚本.VAS
下载vas setup

Quick Start 
1. Download K-Lite_Codec_Pack and install it.
2. Create a .vas file test.vas
3. Copy the following lines into test.vas and save test.vas
invideo = "C:\Users\Public\Videos\Sample Videos\Wildlife.avi";     //视频文件
outvideo = stdout;      // 处理后的视频输出到屏幕
oframe=(frame[1] - frame)*sobel;  // oFrame为输出帧;Frame 表示当前帧;frame[1]是后一帧; sobel 是sobel因子; 此处的*表示滤波。

4. double click test.vas
The edge of objects in the video will show up.

another example  laplas.vas 
// 命令行参数 第一个参数为输入文件, 第二个为输出文件
invideo = $1;     //视频文件
outvideo = $2;     // 处理后的视频输出到文件
oframe= frame*laplas; // Frame 表示当前帧;sobel 是soble因子; 此处的*表示滤波。
Then, run laplas.vas in cmd line
c:\Users\dzh>laplas.vas in.avi out.avi

posted @ 2012-12-23 06:54 djx_zh 阅读(573) | 评论 (0)编辑 收藏

2012年6月5日

     摘要: 利用structure of Array自动并行化程序。  阅读全文

posted @ 2012-06-05 10:11 djx_zh 阅读(2288) | 评论 (2)编辑 收藏