Parse how to write flash in uefi shell.
Step:
1. Enable
2. Read
3. Write
4. Disable
FI_GUID gEfiSFlashProtocolGuid = FLASH_PROTOCOL_GUID;
FLASH_PROTOCOL* pFlashProtocol;
EFI_PHYSICAL_ADDRESS Flash4GBMapStart;
EFI_STATUS Status;
UINT8 *StrBuffer; Status = pBootServices->LocateProtocol( &gEfiSFlashProtocolGuid, NULL, &pFlashProtocol); Status = pBootServices->AllocatePool(//start: allocate mem check point hear
EfiBootServicesData,
sizeof(UINT8) * FLASH_BLOCK_SIZE,
(VOID*)&StrBuffer);
if (EFI_ERROR(Status) || StrBuffer == NULL) {
error code here…..
} MemSet(StrBuffer, (sizeof(UINT8) * FLASH_BLOCK_SIZE), );
Flash4GBMapStart = 0xFFFFFFFF - FLASH_SIZE + ; //Enable DeviceWrite to read real Flash address, not memory mapping.
Status = pFlashProtocol->DeviceWriteEnable();//step1. enable
if (EFI_ERROR(Status)) {
error code here…..
}
Status = pFlashProtocol->Read(//step2. Read
(VOID*)Flash4GBMapStart,
FLASH_BLOCK_SIZE,
(VOID*)StrBuffer); *(StrBuffer+PcieLaneSettingAddr) = PcieLaneSetting;
Status = pFlashProtocol->Write(//step3. Update or write
(VOID*)Flash4GBMapStart,
FLASH_BLOCK_SIZE,
(VOID*)StrBuffer); pFlashProtocol->DeviceWriteDisable(); //step4. Disable
pBootServices->FreePool(StrBuffer);//end: free memory
Parse how to write flash in uefi shell.的更多相关文章
- UEFI Shell命令操作总结
什么是UEFI ShellUEFI Shell是一种特殊对待UEFI_APPLICATION.提供用户和UEFI系统之间的一个接口.它有很强大的功能,但是正常启动计算机系统时,不会用到UEFI She ...
- UEFI Shell --常用命令解释
UEFI Shell解释 UEFI Shell 是一个提供用户和UEFI系统之间的接口,进入UEFI Shell可以对计算机系统进行配置 命令解释: 单独的help就可以输出所有指令,不做特殊说明,内 ...
- UEFI+GPT引导实践篇(二):UEFI引导安装64位Win7/Win8
下文是在联想Y480笔记本上以UEFI方式启动安装Windows8的全过程,安装Windows7过程基本相同.注意,如果你的电脑硬盘是MBR分区结构,安装过程中将要删除硬盘上所有数据,请安装前备份硬盘 ...
- UEFI模式下安装Win 7系统
转载自:http://huayi898.blog.163.com/blog/static/2581351620144442319155/ 下载win7_64bit原版官方系统 1.用软碟通制作U盘启动 ...
- UEFI BIOS Rootkit Analysis
catalog . BIOS简介 . UEFI BIOS . EFI编程简介 . UEFI Rootkit 1. BIOS简介 BIOS("Basic Input Output System ...
- uefi下如何启动linux?
1. 有两种方式 1.1 直接从uefi shell启动linux内核 1.2 从uefi shell启动grub,然后再从grub启动linux内核 2. 需要哪些东西? 2.1 linux内核 2 ...
- uefi是如何启动linux内核的?
答:uefi启动linux内核有两条路径: 1. uefi直接进入uefi shell来启动linux内核 2. uefi直接进入uefi shell启动grub启动器,然后进入grub shell启 ...
- 笔记三(UEFI详解)
1.SEC 安全验证 SEC(Security Phase)阶段是平台初始化的第一个阶段,计算机系统加电后进入这个阶段. 1)接收并处理系统启动和重启信号:系统加点信号.系统重启信号.系统运行过程中的 ...
- x86 构架的 Arduino 开发板Intel Galileo
RobotPeak是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotPe ...
随机推荐
- logrotate日志管理工具
一.概述 logrotate是一个Linux系统默认安装了的日志文件管理工具,用来把旧文件轮转.压缩.删除,并且创建新的日志文件.我们可以根据日志文件的大小.天数等来转储,便于对日志文件管理. log ...
- Oracle in和exists效率问题分析
--------------------------in和exists效率问题------------- 单说in和exsist,in的效率较差.关于EXISTS与IN的区别:EXISTS检查是否有结 ...
- springboot 中文文档
springboot 中文文档https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/
- 使用 sqlyog 导入导出数据显示 lost connection to mysql server during query
mysql中经常需要备份数据,在使用 sqlyog 进行备份数据库为转储文件,然后在其他数据库中导入发生 lost connection 经过查询大量资料是数据库配置的 max_allowed_pac ...
- java、oracle对CLOB处理
oracle CLOB字段转换位VARCHAR 1.实际上处理CLOB字段的时候,直接TO_CHAR,当长度超过4000的时候,会报错,提示列被截取: CLOB转varchar2:select to_ ...
- vmware磁盘文件(vmdk)迁移
原因:由于虚拟机安装时硬盘分配20G,随着虚拟机数据增多,磁盘占用也增多.磁盘总可用空间不能满足虚拟机数据增多.虽然虚拟机数据还没到20G,但磁盘总可用空间小,导致虚拟机继续运行时报空间不足. 解决办 ...
- collections集合的总括。
序言 突然遇到集合的有关面试题,感觉很懵逼,所以特意总结了一下,关于我们常用的 ArrayList.LinkedList.Set等集合的一些区别和用法. 还有,这份微小型总结肯定是从很多博文中摘取精华 ...
- ios开发中的一些小技巧
1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码: UIImage *image = [UIImage imageNamed:filename]; CGImageRe ...
- Python运维自动化开发之Fabric模块
本章讲解fabric模块,与上一章的paramiko模块功能类似,fabric是在paramiko基础上又做了一层封装,操作起来更方便.主要用于多台服务器批量执行任务. 非内置Python模块,需要手 ...
- 关于casperjs的wait方法的执行顺序
var casper = require('casper').create({ viewportSize:{ width:1920, height:1080 } }); var url1 = 'htt ...