一只小菜鸟-BIOS
码龄6年
关注
提问 私信
  • 博客:59,983
    问答:6
    59,989
    总访问量
  • 53
    原创
  • 24,359
    排名
  • 1,581
    粉丝
  • 161
    铁粉
  • 学习成就

个人简介:BIOS 工程师

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 目前就职: 浪潮计算机
  • 加入CSDN时间: 2018-10-30
博客简介:

qq_43561214的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    566
    当月
    29
个人成就
  • 获得675次点赞
  • 内容获得22次评论
  • 获得675次收藏
创作历程
  • 53篇
    2024年
成就勋章
TA的专栏
  • BIOS
    19篇
  • UEFI
    18篇
  • CMOS
    1篇
  • CXL
    1篇
兴趣领域 设置
  • Python
    python
  • 编程语言
    c语言
  • 开发工具
    githubgitsvnpycharm
  • 前端
    html5
  • 嵌入式
    嵌入式硬件
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

UEFI BIOS 之 Event 详细介绍

中断:CPU执行程序时,由于发生了某种随机的事件,引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断传统的中断模式硬件中断- 敲键盘→键盘信号传输给EC→EC产生硬件中断 (IRQ)到CPU→中断信号输入到CPU的中断控制器→OS执行对应的软件代码来获取键盘按键。
原创
发布博客 2024.11.14 ·
982 阅读 ·
13 点赞 ·
0 评论 ·
25 收藏

Uefi Application小游戏开发之贪吃蛇

那么程序会检查用户输入的键值。如果键值是 'w'、'a'、's' 或 'd',那么程序会将这些值赋给。这行代码是在等待两个事件中的任何一个发生。这两个事件分别是定时器事件和键盘输入事件。总的来说,这段代码的作用是等待用户输入方向键,并根据用户的输入来改变蛇的移动方向。这段代码是一个 UEFI 应用程序,它实现了一个简单的贪吃蛇游戏。,那么发生的事件是键盘输入事件。在这种情况下,程序会调用。如果等待的事件不是键盘输入事件,那么程序会设置。来读取用户输入的键值。
原创
发布博客 2024.11.07 ·
359 阅读 ·
5 点赞 ·
0 评论 ·
6 收藏

Uefi Application小游戏开发之猜箱子

小游戏之选择箱子个数 ,交换次数 ,交换速度等,将球丢入到一个箱子中,然后开始随机交换箱子,猜出球的位置1.选择难度 交换次数2.选择难度 箱子个数3.开始交换4,交换完成后猜球的位置基本函数介绍。
原创
发布博客 2024.10.29 ·
336 阅读 ·
4 点赞 ·
0 评论 ·
10 收藏

Uefi Application小游戏开发之推箱子

推箱子(Pushbox)是一个经典的益智游戏,其C语言实现需要设计一个游戏循环,处理用户输入,并更新游戏状态。如果无法走就不执行,其他的方向操作原理相同,然后更新打印。处理上下左右按键,处理按键上下左右,更新地图信息,上。UEFI模拟器可直接运行。
原创
发布博客 2024.10.23 ·
311 阅读 ·
5 点赞 ·
0 评论 ·
6 收藏

编译内核lspcu 工具源码 util-linux

5. **more** 和 **less**:用于分页查看文本文件内容的命令。2. **mount** 和 **umount**:用于挂载和卸载文件系统的命令。6. **su** 和 **sudo**:用于切换用户身份或以超级用户权限执行命令的命令。4. **kill**:用于终止进程的命令,可以通过进程 ID 或名称终止指定的进程。3. **blkid**:用于查看块设备的文件系统类型和属性的命令。7. **dmesg**:用于查看系统日志的命令,显示内核环缓冲区的内容,用于诊断系统问题。
原创
发布博客 2024.09.23 ·
1184 阅读 ·
10 点赞 ·
0 评论 ·
11 收藏

开启计算机的ssh 22端口

启动sshd失败,报错:Failed to start OpenBSD Secure Shell server。ss -ntl 22端口打开。以下过程适合于当我们购买一台云主机时候配置远程登录。第六步以及第七步,查看端口号。开启本地计算机的22端口。第五步,执行重启命令。
原创
发布博客 2024.09.09 ·
1824 阅读 ·
18 点赞 ·
0 评论 ·
9 收藏

Secure Boot 详细介绍

Platform Key (PK) - PK 是用于在硬件平台层和硬件平台拥有者建立起的信任关系 ,规定一个硬件平台只能被一个拥有者所拥有,即 PK 只能存在一个 ,与拥有者相关的公钥被存储在 FLASH 里面的 PK 变量里面,同时,拥有者的私钥可以来对 PK, KEK, db, dbx 进行签名和管理。保存后进Shell, 运行加签名的文件, 能运行。1. **启动固件验证**:在计算机启动时,启动固件(如UEFI固件)会验证操作系统引导加载程序的数字签名,确保其来自受信任的发布者。
原创
发布博客 2024.09.09 ·
3803 阅读 ·
20 点赞 ·
0 评论 ·
28 收藏

系统表 ConfigurationTable 之ACPI Table SmbiosTable

在UEFI中,系统表(Configuration Table)是一个包含系统配置信息的数据结构,其中包含了各种系统信息和表格(Tables)。其中,ACPI(高级配置与电源接口)表和SMBIOS(系统管理BIOS)表是两个重要的系统表,用于描述系统的硬件配置和特性。XSDT表全称Extended Root System Description Table,它的作用于RSDT一样,区别在于两者包含的指针地址一个是32位的,一个是64位的。
原创
发布博客 2024.09.06 ·
379 阅读 ·
8 点赞 ·
0 评论 ·
5 收藏

UEFI BIOS之SMBIOS

需要注意的是STRING 类型的信息 ,这个offset位置代表的是第几个String,而不是描述信息,所有String类型的描述信息都在smbiostype* 的后面开始通过0 隔开。每个Type 和每个Type 的中间是通过两个Ascall 0 0 隔开的,每个Type中若有String 字段,String字段通过一个0 隔开。不同的Type存储不同的信息,这些信息是BIOS提供OS的一个表,OS的部分配置会参考Smbios。第一个string , 0为两个String的分隔符。
原创
发布博客 2024.09.04 ·
1105 阅读 ·
16 点赞 ·
0 评论 ·
27 收藏

Windbg 调试EDK

此方法不仅可以调试还可以用于学习代码运行流程,在逻辑关系复杂的代码段加入CpubreakPoint(),单步调试可以详细理解代码执行的流程,和函数调用关系逻辑。6.运行efi文件,当运行无断点的程序会正常运行到shell下,当运行有断点的程序会运行到断点处进行单步调试,同时当出现Hang机也会终止运行。本示例在EFI shell 下去运行efi efi会导致Hang机 则会停在hang机点 可查看到对应的代码段。ed address value 在address 这个地址写入四字节字节value。
原创
发布博客 2024.09.02 ·
1095 阅读 ·
11 点赞 ·
0 评论 ·
15 收藏

EDKII之安全启动详细介绍

安全启动(Secure Boot)是一种计算机系统的安全功能,旨在确保系统启动过程中只能加载经过数字签名的受信任的操作系统和启动加载程序。通过使用安全启动,系统可以防止恶意软件在启动过程中植入并运行,提高系统的安全性。启动固件验证:在计算机启动时,启动固件(如UEFI固件)会验证操作系统引导加载程序的数字签名,确保其来自受信任的发布者。操作系统验证:启动加载程序会验证操作系统内核和驱动程序的数字签名,以确保它们没有被篡改。启动链验证。
原创
发布博客 2024.08.22 ·
1569 阅读 ·
28 点赞 ·
0 评论 ·
13 收藏

EDK读取Raw文件

Helloword.c中解析Helloword.txt。通过匹配File Guid就可以获取Raw Data。Raw文件需要添加fdf中参与打包到BIOS Rom中。UEFI Application中 可调用。
原创
发布博客 2024.08.21 ·
247 阅读 ·
7 点赞 ·
0 评论 ·
5 收藏

stm32的小灯不亮

答:

在这种情况下,如果操作与烧录都正确,但小灯仍然不亮,可能有几种可能的原因需要进一步排查:

  1. 电路连接问题:确保小灯的电路连接正确,包括正负极连接、电阻、电容等元件的连接。检查电路板上的焊接是否良好,确保没有短路或断路。

  2. 供电问题:检查供电是否正常,确保电源稳定并能够提供足够的电流给小灯。有时候电源不稳定或电流不足会导致小灯不亮。

  3. IO口配置问题:检查IO口的配置是否正确,确保正确设置了IO口的输入输出模式、上下拉电阻等参数。可能需要查看相关的引脚定义和配置代码。 //代码中要配置GPIO Output 可以使用万用表查看电压是否正常 两种情况一种是电压过低 一种是电压接近0 都需要查看GPIO的配置

  4. 程序逻辑问题:检查程序逻辑是否正确,确保在程序中正确控制了小灯的亮灭状态。可能需要检查代码中与小灯控制相关的部分。

  5. 硬件故障:如果以上排查都没有解决问题,可能存在硬件故障,比如IO口损坏等问题。这种情况可能需要进一步的硬件检测和维修。

在排查问题时,您可以逐步检查以上可能的原因,逐步缩小问题范围,以找到引起小灯不亮的根本原因。希望这些建议对您有帮助。如果您需要进一步的帮助或有其他问题,请随时告诉我。

回答问题 2024.08.13

内存标签解析DDR5 SPD读取

DDR(Double Data Rate)SPD(Serial Presence Detect)是一种存储在计算机内存模块上的小型EEPROM芯片,用于存储有关内存模块制造商、型号、速度等信息。mov al,48h;- 时序参数:内存模块的时序设置,如CAS延迟、RAS预充电时间等。----------smbus 访问规范--------- 校准信息:内存模块的校准数据,用于确保内存稳定运行。- 内存规格:容量、速度等。
原创
发布博客 2024.08.09 ·
1073 阅读 ·
15 点赞 ·
0 评论 ·
17 收藏

EDKII Boot Order Boot Option 介绍

Boot 启动项中有个Boot Order的 Variable 打印一看 发现只存在几组 数据 0000 0001。Boot Menu是一个动态更新的,在Vfr中预留了Label Question id 0x1212。Boot界面显示有多个启动项,这些启动项都是存在Nvram中 我们在Vaiabled中查找启动项。启动信息存在Boot####中 通过Boot Order 确定启动的顺序。LOG 中Dump 了 Boot#### 以及Boot Order。改变Boot option的Order。
原创
发布博客 2024.07.26 ·
958 阅读 ·
9 点赞 ·
0 评论 ·
15 收藏

UEFI DebugLib 介绍

有多个Lib 对DebugPrintEnabled 做了定义,因此可以使用不同的Lib 让Debug()产生不同的效果,这点也适用于其他函数。UefiDebugLibConOut.inf 这个Lib就是开始我们提到的将debug信息打印到Shell 使用的Lib。当我们调试程序时,可以在可能有问题的地方插入一条 INT 3 指令,使 CPU 执行到这一点时停下来。当条件为假时,断言会触发错误处理机制,通常会导致程序中。对于不同的架构实现方式可能不同,但是可以用同样的模块代码,通过替换Lib去替换实现函数。
原创
发布博客 2024.07.25 ·
916 阅读 ·
10 点赞 ·
5 评论 ·
14 收藏

RAS--APEI 报错解析流程(2)

这就对应到Dmesg 中的HardWare error 错误,就可以识别到错误的source id ,既可以大致定位错误信息来源 Source id = 512 对应到PCIE 错误。使用BERT 的header 通过section type 区分错误类型 对应到不同的错误结构 都是通过block error status addrss 链接。对于OS去打印HardWare error 只需要参考GHES 中的Error Block status 就会去打印 错误的GHES Table中的错误信息。
原创
发布博客 2024.07.24 ·
1160 阅读 ·
16 点赞 ·
0 评论 ·
11 收藏

RAS--APEI 报错解析流程(1)

1.注册SMI ApuRasDispatch gFchSmmApuRasDispatchProtocolGuid,当PCIE产生错误,CPU的寄存器会存在错误状态,IOHCRAS会有错误的信息,同时会产生SMI的中断,BIOS会读取错误信息同时去扫描PCIE 的配置空间AER Capbility的错误状态填写到APEI HEST GHES type9中对应的PCIE错误结构体,同时汇报ipmi 错误到BMC和清除错NBIO Global Status误状态,AER 错误可以OS 清除。
原创
发布博客 2024.07.24 ·
1457 阅读 ·
27 点赞 ·
0 评论 ·
8 收藏

BIOS 初始化之SEC

一般会在,reset vector(地址 0xFFFFFFF0)放置一条跳转指令(ResetVec.nasmb),跳转 到 SecCore 入口,其地址为 PlatformSecLib 的 SecEntry.nasm 汇编_ModuleEntryPoint 宏定义处, SecCore 完成基本的初始化之后会调用 PeiCoreEntry.nasm 内的 CallPeiCoreEntryPoint()函数,跳转到 PeiCore。第二个NOP是占位符,为了让随后的JMP可以16位地址对齐,这样性能高一些。
原创
发布博客 2024.06.12 ·
977 阅读 ·
10 点赞 ·
0 评论 ·
12 收藏

PCIe Capability and Extended Capability

1. **PCIe Capability:** PCIe Capability 是指 PCIe 设备的基本能力,包括设备的类型、速度、链接状态、电源管理、错误处理等。在 PCIe 设备的配置空间中,PCIe Capability 和 Extended Capability 结构是以特定的格式和偏移地址存储的,操作系统和驱动程序可以通过读取这些结构来获取设备的基本能力和扩展功能,从而进行适当的配置和管理。PCI配置Header(64B,00h~3Ch)具有固定的格式,主要有两种:Type0和Type1。
原创
发布博客 2024.06.03 ·
974 阅读 ·
19 点赞 ·
0 评论 ·
10 收藏
加载更多