自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (5)
  • 收藏
  • 关注

原创 《UEFI内核导读》全集,2023年11月更新

序言随着国家十四五新战略规划的推出,众多国内企业都参与到国产芯片替代浪潮中来,可以预测未来越多的国产芯片会被设计、生产和使用在我们日常所使用的电子产品中,国产芯片拥有巨大的市场前景。目前国产芯片采用的体系架构主要有X86、ARM、MIPS、RISC V、PowerPC、Alpha等。我们知道电子产品正常工作必须要有操作系统和各种应用软件,没有操作系统和应用软件的芯片就是一堆废铁,而大多数人并不知道的是没有系统固件来加载操作系统的电脑亦是一堆废铁, UEFI就是由UEFI行业协会提出和......

2020-11-21 19:58:31 3417 3

原创 UEFI PEI CORE的二个阶段与PeiCore函数的3次调用流程简介

UEFI PEI CORE的二个阶段与PeiCore函数的3次调用流程简介

2023-11-27 20:16:55 1043

原创 《UEFI内核导读》如果没有内存,程序代码还能不能执行?

SSE支持8个128bit的XMM寄存器,8个64bit MMX寄存器可以在UEFI环境下使用特定的pinsrd/ pinsrw/ pshufd/movd指令在通用寄存器之间传递数据,进而可以把XMM、MMX寄存器当做普通32bit数据暂存器来使用。子过程Function是需要被调用的过程,在堆栈还没有准备好的情况下,可以使用如下代码来实现,只要在Function内部保持通用寄存器不被修改(具体方法是把通用寄存器保存在MMX和XMM寄存器当中)就可以保证Function的调用不会破坏执行环境。

2023-01-11 21:25:55 604

原创 《UEFI内核导读》UEFI Application Binary Interface (ABI)简介

不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误,支持可变参数的函数。编译器,有类似的机制,区别在于使用不同的寄存器来传递参数和返回值。所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。,其他类型的参数根据参数类型不同其传递方式稍有不同,如下表。个参数使用寄存器传递,从第五个开始使用堆栈传递,例如,拥有。调用约定仅在输出函数名前加上一个下划线前缀,如,原函数为。寄存器,而不是通过堆栈来传递,同样函数返回值通过。不会要求调用者传递参数数量,

2023-01-09 20:34:16 1008

原创 《UEFI内核导读》SecCore与PeiCore简介(I)

PeiCore的32bit入口地址是可以被映射到0xFFFFFFE0连续的4个字节(小端模式)。整个PeiCore文件也可以被映射到BFV或其他的FV的任何位置,前提是需要SecCore创建EFI_PEI_CORE_FV_LOCATION_GUID类型的PPI,通过此PPI获取PeiCore所在的FV地址,进而在BFV或其他的FV里面去搜索EFI_FV_FILETYPE_PEI_CORE类型的FFS文件,从而得到PeiCore的映射地址,并跳转到PeiCore执行。敬请关注:“固件C字营。

2023-01-06 22:22:49 1162

原创 《UEFI内核导读》UEFI Firmware Storage简介

UEFI提供了基本的服务来访问Fireware File,在PEI阶段用EFI_PEI_SERVICES->(FfsFindNextFile, FfsFindFileByName、FfsGetFileInfo),在DXE阶段用EFI_FIRMWARE_VOLUME2_PROTOCOL->(ReadFile, ReadSection、WriteFile、GetNextFile), 或EFI_BOOT_SERVICES->LoadImage()。

2023-01-01 16:31:40 1781 1

原创 ​《UEFI内核导读》UEFI中驱动的执行顺序

UEFI中DXE驱动或PEIM的执行顺序有三种不同的机制,分别如下。其中APRIORI的优先级最高,Depex次之,FV布局为默认顺序,可以根据需要进行调整。开发过程中,可以选用三种方式中的任何一种来调整驱动的被执行的顺序,以此到达提前或延后执行某个驱动的目的,上例会先执行A驱动,然后执行B驱动。3. 合理设置驱动在FV的位置,一般在FDF脚本使用。2. Depex,一般在INF脚本内部使用。例1:ModulePEI.inf。例:project.fdf。例:project.fdf。

2022-12-31 18:08:30 1518

原创 《UEFI内核导读》UEFI是不是操作系统?

从上面四点来看,“管理并控制计算机操作”,“运用和运行硬件、软件资源”,“提供公共服务”,“提供用户交互”UEFI已经具备了操作系统的所有的基本功能,因此从笔者角度来看UEFI已经是一个不折不扣的微型操作系统了!UEFI提供了丰富的服务并提供了驱动模型,可以管理计算机所有的硬、软件资源,包括,CPU、内存、硬盘、显示、网络、键盘、鼠标等,用户可以在UEFI环境操作和控制整个计算机系统。UEFI提供的服务来运用和运行硬件和软件资源,比如可以在UEFI环境下,连接HTTP上网,FTP、绘图、访问磁盘文件等。

2022-12-31 18:02:47 895

原创 《UEFI内核导读》VS2019社区版EDK2开发环境搭建

以前的开发环境因更换电脑被破坏,重新基于最新的版本在Windows环境下使用VS2019社区版搭建UEFI/EDK2开发环境,简单记录。

2022-11-21 23:11:17 546

原创 《UEFI内核导读》一阶插值算法在UEFI中的应用

举例说明,在intel平台中我们一般会使用PL1来控制系统的长时间无故障运行的系统功耗,这个值一般来说越大系统性能越强,但是也伴随着系统的热设计必须的越强,这样才能把系统产生的热通过散热模组散到环境当中去,不过在无风扇系统中我们因为没有风扇,所有只能才有被动散热的方式,被动散热就要在系统温度达到一定的上限的时候主动降低系统的热源所产生的热量,在这里就是降低PL1的值,简化模型如下。顾名思义,一阶插值算法是多项式插值算法的一种,其中一阶插值算法在UEFI系统中是用的最多的算法。固件C字营·版权所有。.....

2022-07-24 17:19:47 340 1

原创 《UEFI内核导读》祖传代码引发的血案(I)

《UEFI内核导读》祖传代码引发的血案(I)敬请关注微信公众号:“固件C字营”============================================== 最近遇到一个奇怪的问题,大概就是BIOS在POST过程读写EC,非常小概率会失效。经测试发现失效的概率跟读写频率,读写速度相关。 于是乎,左手改EC代码,在相关的代码插桩加入log信息,右手分析祖传的BIOS代码,同样是打桩和加log,用终端来监视读/写过程中的异常,左右开弓忙的不亦乐乎。需要说明的是Cstyl.

2022-06-25 11:27:39 420

原创 《UEFI内核导读》之ACPI编程入门 第7章:特殊对象与类型

第7章:特殊对象与类型 ACPI/ASL支持一些预定义的对象类型和算子,它们有一些不同于其他对象的特性,极容易造成混淆,本章节对他们进行简单介绍。ArgX(Method Argument Data Objects)参数数据对象,用来向Method传递参数,作用域在Method内且只能用于传递参数使用。分为Arg0-Arg6共7个。从ArgX参数读数据:ObjectReference:类似DeRefOf效果,自动进行“去引用”,返回被引用的对象 Buffer:返回Buffer,...

2021-11-28 10:19:38 2304

原创 《UEFI内核导读》之ACPI编程入门 第8章,类型转换及规则

《UEFI内核导读》之ACPI编程入门 第8章,类型转换及规则第8章:类型转换及规则 对象类型转换包含两种,分别是隐式类型转换和显示类型转换,具体细节根据参数是输入参数或是输出参数有所不同。当输入参数类型与预定义操作数对象类型不匹配时,输入参数使用隐式类型转换,也称为“隐式源操作数转换”当被输出对象的类型与目标存储对象类型不匹配时,输出参数使用隐式类型转换,也称为“隐式结果对象转换”。​

2021-11-24 23:06:48 1154 2

原创 《UEFI内核导读》之ACPI编程入门 第6章:对象类型及命名

固件C字营·版权所有敬请关注微信公众号:“固件C字营” ACPI/ASL字符集 与其他的编程语言类似,每一种语言都有其支持的字符集合,使用这些字符的组合来定义对象、路径、数字、常量、方法。字符集是组成ASL代码的最小基本单位。多个空格相当于一个空格。空行、小括号、逗号、新行,都是分隔符 “//”表示从”//”开始到行末都是注...

2021-11-21 09:34:15 1046

原创 《UEFI内核导读》之ACPI编程入门 第2章:名词术语(Term)

固件C字营·版权所有敬请关注微信公众号:“固件C字营”第2章:名词术语(Term)ACPI:Advanced Configuration and Power InterfaceASL:ACPI Source Language,经过编译之后生成AML字节码AML: ACPI Machine Language方法:Control Method,控制

2021-11-20 22:57:33 1160

原创 《UEFI内核导读》之ACPI编程入门 第3章:Hello World

固件C字营·版权所有敬请关注微信公众号:“固件C字营”第3章:Hello World 第一个ACPI/ASL程序“Hello World”,该程序会在调试终端输出“Hello World!”字符串。第一行,表示该程序需要引用外部的方法(Method)。第二行,空行,编译器会自动忽略。第三行,表示定义一个方法“HOWD()“,该方法...

2021-11-20 22:53:53 1366

原创 《UEFI内核导读》之ACPI编程入门 第5章:对象(Object)

固件C字营·版权所有敬请关注微信公众号:“固件C字营”第5章:对象(Object)ACPI/ASL使用Name ( ObjectName, Object )算子在全局ACPI名字空间(Global ACPI namespace)创建一个对象,对象名为ObjectName,该对象名是对“Object”的引用。对象由三部分组,对象(Objec...

2021-11-20 22:41:20 974

原创 《UEFI内核导读》Modern Standby软件/硬件流程图

《UEFI内核导读》Modern Standby软件/硬件流程图

2021-11-19 21:15:01 1095

原创 《UEFI内核导读》之ACPI编程入门 第4章:方法(Method)

固件C字营·版权所有敬请关注微信公众号:“固件C字营”第4章:方法(Method) Control Method是ACPI/ASL预定义的一种对象类型(ObjectType)为8的对象。它可以调用或者被其他的Method调用,在调用过程中可以被阻塞但不能被抢占,当一个Method被阻塞时OSPM可以转而执行其他的Method。以下称之为...

2021-11-18 22:42:21 2196

原创 《UEFI内核导读》ACPI编程入门

ACPI规范包含了ACPI硬件、ACPI软件、ACPI表、设备管理、电源管理、热管理等内容。其中ASL(ACPI Source Language)语言是默认用来编写ACPI代码的“声明式编程语言”,AML(ACPI Machine Language)是ASL源码被编译器编译后被AML解释器解释执行的字节码。AML是所有ACPI兼容的操作系统必须支持的,但是ASL是非必须的,只要是能最终被转换成AML的其他的任何语言都可以用来编写ACPI代码。 ASL用来定义ACPI对象(object)和

2021-11-17 21:12:56 2628

原创 《UEFI内核导读》Platform Environment Control Interface(PECI)简介

固件C字营·版权所有敬请关注微信公众号:“固件C字营”PECI是Intel提出,主要用于intel处理器温度监控,功耗控制及状态监测,采用主/从架构的1-wire bus双向总线。 系统架构如下图,其中Host一般是EC或BMC或其他的系统控制器,Client一般是intel CPU。在现在的多核及多处理器架构的...

2021-11-07 21:42:52 5241

原创 USB存储设备UEFI协议栈

固件C字营·版权所有敬请关注微信公众号:“固件C字营”敬请关注今日头条号:”固件C字营“

2021-05-23 22:58:26 388

原创 《UEFI内核导读》How to Rotate Screen

之前的文章《UEFI内核导读》Graphics Driver介绍了UEFI环境如何在显示设备上输出字符或图形,GraphicsOutputprotocol为输出提供了最底层的硬件驱动支持。但是有时候我们由于机构或硬件设计的原因需要做一些定制的动作比如:机构设计导致用户手持的方向跟屏幕物理方向有90°、180°或270°偏差怎么办?这个时候就需要对屏幕进行旋转。如何旋转屏幕一般是由驱动来实现,在UEFI系统当中就需要由GOP驱动来实现,但是一般来说GOP是由silicon厂商来提...

2021-05-16 16:33:25 968

原创 《UEFI内核导读》UEFI Battery Charging I

UEFI固件设计的初衷就是用来引导操作系统,下面简单介绍UEFI环境下windows是如何启动,以及在pre-OS环境下如何实现对电池充放电的管理。启动Windows流程基本分为以下几个阶段:1.硬件自举过程。主要完成了硬件的上电过程和BIOS第一条代码的调用(Device Powered on)。2.基本的硬件初始化过程。这里主要由不同的SOC芯片厂商来提供,如Intel会提供FSP(Firmware boot loaders)。3.UEFI运行时环境。包括boot service 、r.

2021-05-16 16:28:46 609

原创 Cstyle的UEFI导读:Open source UEFI BIOS开发实战简介,基于Intel 10代酷睿Cometlake-U硬件平台

本文介绍基于开源UDK+FSK方案在Intel 10代酷睿Cometlake-U硬件平台上实现power on实战,以及介绍如何使用完全开源的UDK来实现对我们OEM的板子进行porting与debug方法。主要从几个方面进行介绍分别是:目标的硬件开发板、需要准备开发环境 、OEM porting及构建、烧录并测试、持续改进等主题。通过使用开源UEFI方案我们现在我们可以在不花钱购买IBV如AMI、Insyde的代码的情况下开发基于X86的主板,使用开源方案可以节省数十万的的向IBV购买代码的开销,今天这一

2020-11-30 21:13:11 1793 2

原创 Cstyle的UEFI导读:PEI Image Service

所谓”固件“原始的定义是被固化的软件。历史上存储固件的介质有很多类似EEROM、Flash等,目前在UEFI固件领域基本都是用的NorFlash,它最大的特点是支持XIP也即片上执行。UEFI BIOS固件基本都是使用SPI接口的NorFlash来存储。目标二进制固件文件通常包括代码段(code)、只读数据段(RO Data)、已初始化读写数据段(RW Data)、BSS段、堆、栈、以及其他的资源段。固件在XIP阶段的代码在链接的时候,链接地址与存储地址是相同的都会是0x00000000,在C代码开始之

2020-11-26 22:23:41 739

原创 Cstyle的UEFI导读:Secure Boot简介

安全启动(SecureBoot)使用非对称加密与数字签名技术提供了一种从硬件到操作系统的安全启动信任链。本文介绍了系统固件、OS Loader、证书、密钥及之间的沟通流程。在windows下下可以使用如下命令获取PK,KEKdb、dbx、SetupMode、SecureBoot、PKDefault、KEKDefault、dbDefault、dbt、dbtDefault等全局变量的值。例如:当前系统的SetupMode的NV值是0,表示工作在user模式。平台密钥Platform Key (P

2020-11-25 20:36:21 4038

原创 Cstyle的UEFI导读:Embedded Controller Share ROM

此处仅以一个具体的例子分析share rom及整个flash的layout,仅BIOS区域(不包括ME)总大小是10MByte。如下图,FV_RECOVERY0(地址0x00A00000)映射到4G顶端(0xffffffff),使用FIT构建flash image的时候还会重定位最终FV_RECOVERY0的地址(用edit直接打开二进制文件的话,会在文件的末端,如图二所示),加入SPI flash descriptor,一般是在fffffff0h处放一条跳转指令,跳转到FV_RECOVERY0处。FV..

2020-11-23 21:45:47 1688

原创 Cstyle的UEFI导读:Embedded Controller链接过程

以MEC1428为例来介绍EC的开发流程和基本原理。按照惯例从链接开始介绍。一.自定义链接脚本。默认Mplab x默认使用xc32提供的脚本,在Mplab x也可以按照下图自定义链接脚本。二.定义地址映射针对MEC1428其地址及内存映射关系如下Data RAM:32K(0xBFD18000),Code RAM:160K(0xBFCF0000),ROM:192K(0xBFC00000),MMCR:2M(0xA0000000)/*************...

2020-11-23 21:34:48 732

原创 《Freertos内核详解》系列专题博客

《Cstyle的札记,Freertos内核详解》Cstyle的札记,Freertos内核详解,第0篇Cstyle的札记,Freertos内核详解,第1篇Cstyle的札记,Freertos内核详解,第2篇Cstyle的札记,Freertos内核详解,第3篇Cstyle的札记,Freertos内核详解,第4篇Cstyle的札记,Freertos内核详解,第4.1篇Cstyle的札记,Freertos内核详解,第4.2篇Cstyle的札记,Freertos内核详解,第4.3篇

2020-06-16 21:42:06 401

原创 Zephyr内核详解,第0.1篇 构建

Zephyr内核详解,第0.1篇 构建梳理下构建过程,整个构建过程只需要执行下面四个命令,分别来说明。1.zephyr根目录执行:source zephyr.sh2.执行:mdkir ./sample/helloword/build && cd ./sample/helloword/build3.执行:cmake -GNinja -DBOARD=nucleo_l476rg .....

2020-06-16 21:22:57 1234

原创 《Zephyr内核详解》系列专题博客

Cstyle的札记,Zephyr内核详解,第0篇 开发环境Cstyle的札记,Zephyr内核详解,第0.1篇 构建Cstyle的札记,Zephyr内核详解,第1.0篇 内核启动过程Cstyle的札记,Zephyr内核详解,第1.1篇 内核启动过程(续)未完待续......转载请注明出处[email protected] // http://blog.csdn.net/CStyle_0x007...

2020-06-16 20:49:50 572

原创 Zephyr内核详解,第0篇 开发环境

Zephyr内核详解,第0篇 开发环境 Zephyr是什么就不赘述,总之是一款遵循GPL的linux基金会的开源RTOS,以下的一系列文章均基于这款系统展开;嵌入式行业只讲理论不是实践就是耍流氓,先介绍下实验环境,先从如何搭建环境开始说起:1.开发板:st nucleo-l476rg2.开发环境:macos mojave (10.14...

2020-06-16 20:32:52 1356

原创 Cstyle的札记,Freertos内核详解,第5.0篇

前面讨论了怎么把freertos移植到s3c2440上的话题,现在我看开始细细读一下freertos的代码。读代码之前先认识下代码规范,我们常见的类似的规范大多是一些命名规则,对齐什么的,比如驼峰命名法等等。但是freertos用了一个完全不同的规则,被称之为MISRA (TheMotorIndustrySoftwareReliabilityAssociation),之所

2015-12-18 22:44:08 1110

原创 Cstyle的札记,Freertos内核详解,第4.3篇

移植OS汇编是绕不过去的,先从MDK默认提供的s3c2440.s开始,这里我们需要完成以下几个事情:1.cpu状态和模式2.设置clock,包括系统时钟,sdram时钟,外设时钟等等3.设置sdram的时序参数,这个是非常重要的,否则我们的内存就不能使用4.堆,栈5.选择初始化外设,IO等 废话不多说先上图,下面是我花了几天时间在TQ2440+Freertos

2015-12-13 12:18:38 1339 2

原创 Cstyle的札记,Freertos内核详解,第4.2篇

移植之前先认识下开发工具很重要,这里使用MDK(V5.16a)工具,默认使用Armcc,它能支持把c以及c++编译成arm或者是thumb机器码,支持以下的标准:ISO C 1990,ISO C 1999,ISO C++ 2003,ISO C++2011,默认输出格式是ELF格式,在编译结束之后可以转换成Hex格式烧进ROM。 编译器支持在标准c,c++上提供一些GNU类似的扩展,支持使

2015-10-26 17:11:09 917

原创 Cstyle的札记,Freertos内核详解,第4.1篇

因为手上有现成的板子,准备先移植Freertos到S3C2440上练一下手,搜索了一下好像目前网络上和官方都没有支持这款soc,官方对三星的cpu好像一款支持的也没有,不知道为什么三星这么个大的半导体公司居然没有人帮忙移植。准备工作如下:1.从keil官网下载最新的MDK,并使用网上的注册机注册破解。2.从Freertos官网下载最新的源代码3.从Jlink官网下载最新的Jlink

2015-10-26 17:08:53 1515

原创 Cstyle的UEFI导读: UEFI的N种实现及差别

休息了快一个月了,找工作也没什么心情,闲来无事回头看看,自毕业以来一直都在BIOS这个行业打转,目前的各种新闻来看全球的IT行业都似乎不太景气,PC出货量一泻千里,想要有所转机看起来不是一天两天的事情,想来无事来看看做过的几个UEFI BIOS方案有什么不同。目前市面上常见的X86平台的UEFI实现方案大致分为几个,AMI,Insyde,phoenix还有一个就是号称是国产的百敖软件,再者就是in

2015-09-25 15:48:56 2983 8

原创 Cstyle的UEFI导读:第20.0篇 IGD OpRegion interface && IGD OpRegion PROTOCOL

ACPI IGD OpRegion interface是用SCI来实现IGD driver,OS,BIOS之间沟通的桥梁,IGD OpRegion PROTOCOL是UEFI BIOS构建桥梁的脊梁。Legacy的实现方式下与OS沟通的方式:OpRegion Memory Layout:Mailbox1当中提供的Public ACPI Methods可以

2014-11-15 17:30:23 4308 1

原创 Cstyle的UEFI导读: SMM在UEFI当中的实现

晚上吃的比较多不敢太早睡,趁空闲来看点东西,概念就不说了来看看SMM的几个阶段。 SMM大概分为两个阶段:SMM初始化阶段和SMM runtime阶段,先来看看初始化阶段,还是先上图,下面的这幅图是讲的SMM的初始化和runtime整个阶段,整个阶段由DXE Dispatcher加载SMM IPL开始,到我们每一个注册的SMM hander被不断的执行为止,当然我们的S

2014-11-10 22:41:38 9005

PEI CORE的二个阶段以及PeiCore函数的3次执行流程简介,固件C字营,cstyle

PEI CORE的二个阶段以及PeiCore函数的3次执行流程简介。 PeiCore()函数作为PEI阶段最重要的组成部分,在整个PEI生命周期中分为二个阶段,分别是主内存初始化之前(PreMemory)和内存初始化完成之后(PostMemory),在这二个阶段中PeiCore()函数会被调用3次,简化的调用流程如下。示例描述了二个阶段内存以及堆栈的分布情况。蓝色的地址空间被映射到BIOS ROM,黄色的被映射栈空间,紫色被映射到堆空间,高地址是PreMemory阶段,低地址是PostMemory阶段。

2023-11-27

《UEFI内核导读》2023年11月更新 做知识的搬运工 固件C字营·出品 Cstyle·编著

《UEFI内核导读》2023年11月更新。做知识的搬运工 固件C字营·出品 Cstyle·编著。 目录 序 4 第0篇SEC Core简介 5 第0.1篇Reset Vector 6 第0.2篇SecCore流程 11 第0.3篇汇编语言过程调用 15 第0.4篇UEFI ABI 18 第1篇PEI Core简介 21 第1.1篇PeiCore启动流程 22 第1.2篇PeiCore自举 26 第1.3篇PEI Image Service 26 第1.4篇PEI调度优先级 30 第1.5篇PEI Notify 31 第2篇Dxe Core简介 44 第2.1篇Event and Timer简介 45 第2.2篇Event and Timer原理 52 第2.3篇Driver实例及私有数据 55 第3篇BDS Core简介 57 第4篇Runtime Core简介 58 第5篇UEFI Drivr binding 58 第6篇PCI Driver Stack 61 第7篇USB Driver Stack 68 第8篇Graphics Driver Stack 75 第9篇Text C

2023-11-19

基于 WMI(Windows Management Instrumentation)的 BIOS 接口设计<固件 C 字营>C

基于 WMI(Windows Management Instrumentation)的 BIOS 接口设计 <固件 C 字营>Cstyle_x007 WMI 是 Windows 操作系统管理数据和操作的基础设施,系统管理员可以使用 VB Script、PowerShell 及 Windows API(C++、C#等)管理本地或远程计算机。使用 WMI 框 架应用程序可以直接访问 EC RAM、 I/O 端口、Memory 地址、芯片寄存器、Setup NV 设 定值,以及其他的系统设备资源。’ 本 Demo 提供了 3 个 Method,在 windows 下应用程序调用 API 即可完成对 EC RAM (offset EcRam 0xE0)的同步和异步读写,不需要 OEM 另外写驱动。 ➢ OEM WMI 接口设计 ➢ Demo Asl code 设计 ➢ Demo Mof code 设计 ➢ Demo APP code 设计 ➢ Demo Mof 编译方法及工具 ➢ WMI 避坑指南

2023-03-02

《UEFI内核导读》-样章20211105.pdf

《UEFI内核导读》-样章2021/11/05更新 第23篇Secure Boot简介 133 第24篇Open source UEFI BIOS开发实战简介 139 第25篇 How to rotate Screen 143 第26篇Platform Environment Control Interface简介 146

2021-11-05

《UEFI内核导读》 Platform Environment Control Interface(PECI)简介.pdf

Platform Environment Control Interface简介 PECI是Intel提出,主要用于intel处理器温度监控,功耗控制及状态监测,采用主/从架构的1-wire BUS双向总线。 系统架构如下图,其中Host一般是EC或BMC或其他的系统控制器,Client一般是intel CPU。在现在的多核及多处理器架构的系统当中,每一个CPU核心或SOC内部的IP核(如DRAM)或多处理器中的每一个处理器都可能是一个Client。PECI支持一主多从架构,也就是说一个PECI控制器可以通过不同的Client地址采用分时共享总线的形式来同时控制多个Client,intel普通消费级处理器默认地址一般是30H~33H

2021-11-05

《UEFI内核导读》USB存储设备UEFI协议栈.png

USB存储设备UEFI协议栈

2021-05-23

《UEFI内核导读》-样章20210318.pdf

随着国家十四五新战略规划的推出,众多国内企业都参与到国产芯片替代浪潮中来,可以预测未来越多的国产芯片会被设计、生产和使用在我们日常所使用的电子产品中,国产芯片拥有巨大的市场前景。 目前国产芯片采用的体系架构主要有X86、ARM、MIPS、RISC V、PowerPC、Alpha等。我们知道电子产品正常工作必须要有操作系统和各种应用软件,没有操作系统和应用软件的芯片就是一堆废铁,而大多数人并不知道的是没有系统固件来加载操作系统的电脑亦是一堆废铁, UEFI就是由UEFI行业协会提出和维护一种行业标准的系统固件,它支持目前市面上的大多数芯片体系结构和操作系统,随着标准的不断演进相信越来越多的体系结构的芯片和操作系统会被支持。 笔者从事BIOS开发已有十余年的时间,见证了Legacy BIOS辉煌与隐退,也有幸了参与了新世纪初系统固件从Legacy BIOS往UEFI BIOS的迁移的全过程。科技行业风起云涌新技术新架构日新月异,每每回望不禁感慨我辈可谓是“眼见着他起高楼,眼见着他宴宾客”的那一波BIOS人。曾经系统固件江湖还是Legacy BIOS的天下,BIOS人使用汇编语言编码、通过中断来与操作系统沟通。自UEFI框架被广泛使以来开我们的发环境从纯汇编变成了99%的C语言加1%的汇编语言的模式,开发效率大大的加强了。 虽然UEFI框架大大加快了开发效率,但是由于系统固件开发属于比较偏门和专业的领域,学习和入门门槛比较高,现有的BIOS工程师又分布在大大小小的各个公司内部缺乏有效沟通和交流,同时BIOS源码又属于敏感和机密数据受到各种NDA限制,市面上对UEFI框架介绍的资料少之又少,因此笔者从2000左右开始就陆续以Cstyle_0x007为ID在https://blog.csdn.net/CStyle_0x007发布一系列博文,现已有数十篇原创文章。刚开始的想法是把博文当作工作笔记方便自己随时查阅,后来慢慢发展成了与业内外感兴趣的朋友的沟通交流的平台。 随手写的博文难免有错误与纰漏为了避免误导大众,准备把博文重新整理在纠正谬误同时也会补充一些新的内容,尽量做到所写的每句话都是无误的,也欢迎有兴趣的朋友踊跃提出意见和建议。组建了微信公众号,目的在于方便有兴趣的朋友一起交流,名字初步定为“固件C字营”,其中“固件”泛指一切固化的软件,这里主要指UEFI BIOS系统固件,“C”泛指“China“,我们可以把这里当作大家沟通交流的营地,我们会不定时发布一些行业资讯、工作、学习心得,感兴趣扫描下面二维码就可以加入,也可以发邮件到[email protected]投稿分享你的想法。 本文取名《UEFI内核的导读》这里的UEFI专指“UEFI BIOS”,全文专注于对UEFI内核的梳理与分享,同时兼顾对X86系统固件生态中常用的工程技术的介绍,主要包含以下内容:UEFI启动流程以及各个阶段主要完成的任务及参考的实现方式导读UEFI及PI规范中的常见Protocol的实现与使用技巧UEFI固件生态中常见外设、总线、行业标准的协议内容及使用方法 雄关漫道真如铁,而今迈步从头越,系统固件雄起之路道阻且长,相信我们的BIOS人一定可以为国产芯片的起飞助力、为系统固件团队的壮大贡献自己的一份微薄之力,为每一个不畏艰难、不惧寂寞坚守在工作岗位的BIOS人加油,好样的。

2021-03-18

空空如也

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

TA关注的人

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