
BIOS学习实战
文章平均质量分 52
个人笔记
潇洒Anthony
日积硅步,以致千里。
展开
-
UEFI移植LVGL
UEFI LVGL移植原创 2023-03-06 17:28:10 · 1610 阅读 · 4 评论 -
RedFish模拟仿真调试
redfish原创 2023-03-06 16:32:26 · 1159 阅读 · 0 评论 -
BIOS学习实战之SMBIOS
这个protocol就是操作smbios内容的,smbios怎么加载的,这个就有待去了解了,而且代码本身大部分是做好的,来看下这个protocol的里面包含了什么原创 2022-03-22 15:36:23 · 6111 阅读 · 7 评论 -
BIOS实战之写一个自己的SetUpApp(1)
一直想魔改UEFI的设置界面,奈何很多逻辑还没理清,既然实践是检验真理的唯一标准,那么这些天准备一边钻研,一边总结,一边实践,看能不能写出一个自己的app来。待写。。。原创 2022-03-22 15:35:03 · 1046 阅读 · 2 评论 -
BIOS实战之蜂鸣器和LED灯的功能实现
这两个功能,我也是看文档来的,前面该写的函数几乎都写了,这一节主要说一下我理解的,怎么实现蜂鸣器的功能以及LED的功能,这时候就体现这个看文档的重要性了。Beep的实现前面我们说了这个硬件监控的一些功能实现以及逻辑设备的读写,有了这个基础,那么我们同样可以进行蜂鸣器的功能实现,那么蜂鸣器在哪个逻辑设备呢,这里必须说明,这些SIO的功能必须根据文档来,如果手上没有文档是比较难理解的,通过IT8738芯片文档,我们发现一张图,如下图,有没有发现蜂鸣器和LED都在这,这个功能是什么功能呢,GPIO Fun原创 2022-02-27 23:06:29 · 2269 阅读 · 1 评论 -
BIOS实战之secure boot功能的实现方法
Secure boot,顾名思义,就是安全启动,主板厂商将一些根证书放在BIOS中,当打开安全启动模式的时候,不管是bootloader还是硬件驱动还是shell下运行的程序应用(包括shell),都需要进行验签才能运行,首先我们看下证书有哪些:原创 2022-02-25 11:06:40 · 12195 阅读 · 0 评论 -
BIOS实战之HW monitor
首先看下HW monitor,也就是硬件监控,什么温度,电压,系统风扇,CPU风扇啥的。在IT8738芯片文档9.5节中,我们可以看到,这些是在芯片内置的EC逻辑设备中进行的,也就是环境控制(不是嵌入式控制)原创 2022-02-25 11:03:14 · 6006 阅读 · 0 评论 -
BIOS实战之读写逻辑设备(SIO)
提到了SIO有关的,之前略有研究,不过确实实际只研究过小部分功能,也就做龙芯BIOS的时候参与过SIO的有关编程,因为这个东西笔记本是肯定不会用的,笔记本用EC,这个SIO也就相当于PC板上的EC了,某位大佬既然问了我这些,回去立马找了份SIO芯片的文档,仔细看了下,也算查漏补缺了,这篇主要记录读写逻辑设备的原理以及有关编程原创 2022-02-25 11:01:10 · 2760 阅读 · 0 评论 -
BIOS实战之MIPI屏的配置
BMP工具用来配置GOP driver的,需要BIN文件和BSF文件,下图随意打开了一个GOP driver文件,可以看到VBT的信息,支持LFP type为edp。GOP的bin文件有的有多个,看代码加载的是哪个就改哪个原创 2022-02-25 10:59:47 · 3566 阅读 · 3 评论 -
BIOS实战之事件的使用
这里主要介绍两个示例,第一个是在之前Phoenix代码中看到的,第二个是国产平台中遇到的,首先看第一个。问题:开机显示logo后进入shell或者pxe,logo依然存在,进入pxe好解决,咱们在进入之前进行清屏就行,那么进入shell后的问题该怎么去解决呢这里我们就可以用到一个事件(为什么不在进入shell前进行清屏?这个我也没实践过,不晓得当初写这个解决方案的是否验证过了,因为相比较事件,直接清屏更加简单有效),看过UEFI原理与编程实践中事件的简单使用,这里新增一个知识点RegisterPro原创 2022-02-11 15:29:57 · 1489 阅读 · 0 评论 -
BIOS实战之source insight 工具篇
SI是一款面向项目开发的程序编辑器和代码浏览器,它提供了一个视图将分散在各个地方的代码汇合在一起形成一个虚拟的整体,供开发者方便地阅读和编辑。操作BIOS代码使用SI是非常便捷,当然了,也看个人喜好。作BIOS常见的SI问题:新建项目后,怎么把字体调整成合适的大小,如图所示,这里有另外一个问题,导入项目的时候有发现有些文件类型没有导入,搜索的时候搜不到,因此,在新建项目的时候,先自定义一个新的File type,我们可以将其命名为BIOS,file filter应包含:*.c;*.h;*.dec;*原创 2020-12-13 15:27:37 · 973 阅读 · 0 评论 -
BIOS实战之调整启动顺序
在BIOS的功能完善过程中,我们经常需要调整启动顺序,比如在有UEFI shell启动项的情况下,我们需要将其放在最后,或者要将某个硬盘放在首位。EfiBootManagerSortLoadOptionVariable (LoadOptionTypeBoot, (SORT_COMPARE)CompareBootOption);INTNEFIAPICompareBootOption ( CONST EFI_BOOT_MANAGER_LOAD_OPTION *Left, CONST原创 2022-01-25 15:16:59 · 3625 阅读 · 0 评论 -
BIOS实战之显示logo
先写一个简单的,这个是EDK自带的一个函数,就是如下这个GetSectionFromAnyFv函数原创 2022-01-25 15:16:15 · 1648 阅读 · 0 评论 -
BIOS实战之PCI设备枚举二
上次说到了除了IO枚举PCI设备,还有另一种方式枚举PCI设备,那就是通过pciio,这也是UEFI代码中的常规操作(当然还有MMIO,不过不写了)UEFI BIOS 提供了两个主要的模块来支持PCI 总线,一个是PCI Host Bridge 控制器驱动,另一个是PCI 总线驱动。PCI Host Bridge 控制器驱动是跟特定的平台硬件绑定的,根据系统实际IO 空间和memory map, 为PCI设备指定I/O 空间和Memory 空间的范围,并且产生PCI Host Bridge Reso原创 2022-01-12 17:00:19 · 2760 阅读 · 1 评论 -
BIOS实战之PCI设备枚举一
PCI设备枚举主要通过两种不同方式进行表现,一种就是IO了,那么另一种就是UEFI中的pciio协议,首先看下第一种IO方式进行PCI设备枚举先写一个读PCI配置空间的函数,这是通过汇编写,很好理解:unsigned long PciRead(unsigned long index){ unsigned long pcidata; asm .386 //use 32bit registers asm xor eax, eax //c原创 2022-01-12 16:41:48 · 2800 阅读 · 1 评论 -
BIOS实战之读取文件--BMP图片显示
本节直接贴主要的代码:#include "DisplayBmpTest.h"EFI_STATUSEFIAPIShellAppMain ( IN UINTN Argc, IN CHAR16 **Argv ){ EFI_STATUS Status; EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput = NULL; UINT8 *原创 2022-01-11 15:42:00 · 790 阅读 · 2 评论 -
BIOS实战之读取文件---获取文件路径+最终读取
接上一节,获取文件路径实际上也是获取当前这个APP的路径,怎么获取这个APP的路径,这里需要用到一个EFI_LOADED_IMAGE_PROTOCOL,原理如下:根据当前 Application 的 ImageHandle 取得对应的 Handle。使用 HandleProtcol 直接打开加载在Application 上面的 EFI_LOADED_IMAGE_PROTOCOL。在这个 Protocol上有 FilePath,就是当前 Image 的 Device Path Protocol通过原创 2022-01-11 14:42:30 · 2947 阅读 · 0 评论 -
BIOS实战之读取文件
在UEFI shell下,BIOS的更新、EC的更新等都需要用到读取文件,从UEFI原理与编程中初步了解怎么读写,那么接下来就进入实践环节...原创 2022-01-11 14:07:38 · 2542 阅读 · 2 评论 -
BIOS实战之研发细节
要说BIOS研发,就从一个新产品研发开始吧,一个项目确定立项后,还没进入初板打板前,硬件工程师已经在画PCB原理图,BIOS工程师也已经提前拿到了芯片相关文档,并从供应商那拿到了sourcecode,作为BIOS工程师,需要先看看这个新的芯片的datasheet文档,同时也会有一份BIOS porting guide,这个比较重要,多看看。另外就是要先熟悉原理图第一张,PC的配置,soc外围都有什么设备。了解了这些,就开始修改sourcecode了。第一步:打通第一条指令初版主板在工厂调试的时候是需原创 2020-12-10 13:56:17 · 3188 阅读 · 0 评论 -
BIOS实战之CMOS
CMOS,作为BIOS工程师而言,说的当然是计算机领域的CMOS。1.CMOS在计算机领域是用来干嘛的?在计算机领域,CMOS常指保存计算机基本启动信息(如日期、时间、启动设置等)的芯片。。2.CMOS和BIOS区别?有时人们会把CMOS和BIOS混称,其实CMOS是主板上的一块可读写的并行或串行FLASH芯片(RAM芯片),这块芯片用来保存BIOS的硬件配置和用户对某些参数的设定。CMOS作为可擦写芯片使用,用户通常不会关心CMOS的硬件问题,而只关心写在CMOS上的信息,也就是BIOS的原创 2020-12-14 15:41:04 · 1703 阅读 · 2 评论 -
BIOS实战之Super IO-Smart Fan
超级输入输出芯片(SIO)一般位于主板左下方或者左上方。主要使用的芯片有Winbond、ITE,它为主板上的标准I/O接口提供控制处理功能。Super这里所说的“超级”是指它集成了PS/2键盘、PS/2鼠标、串口COM、并口LPT接口等处理功能,而这些接口都是计算机中的慢速I/O设备。它们全部位于主板后部右边。它的主要功能包括负责处理从键盘、鼠标、串行接口等设备传输来的串行数据,将它们转换成为并行数据,同时也负责并行接口、软驱接口数据的传输与处理。SIO芯片通过LPC连接在南桥,台式机主板EC RO原创 2020-12-14 11:52:03 · 8601 阅读 · 2 评论