自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 PCIE error 分析流程

以Endpoint为例,通过不同的配置,在recovery.Equalization的phase2阶段,EP可以选择在Preset P0、P1、P2、P3、P4、P5、P6、P7、P8、P9、P10 中选择任意个preset进行链路质量评估扫描,最终选择链路质量最优的一个Preset。对PHY的RX进行配置,使其再次进行adapter,PHY会根据链路状态进行自适应参数调整以满足链路质量的要求,不同的PHY vendor拥有不同的配置方法和限制条件,需要根据IP SPEC进行配置。

2024-04-22 09:35:38 1135

原创 OS下关闭Numa Node

编辑 /etc/default/grub 文件,如下图所示加上:numa=off。3.重启操作系统,os下关闭numanode以关闭。BIOS支持Numa,OS 默认打开。

2024-04-19 17:29:25 201

原创 UEFI BIOS之NVRAM

提出这个原因的目的是因为有一个需求是要求BMC在更新BIOS时要做到保存用户设置数据,那么方案就是BMC在更新BIOS的数据时,先从BIOS中把NvRam那段空间的数据读出来做备份,然后刷掉整个ROM空间中的数据,再把新版本得BIOS数据写入ROM存储介质中,最后再把预先备份的数据按照BIOS Layout布局写入指定的位置即可。基于这样的一个目的,因此BIOS需要提供NvRam空间的布局。标红框的时NVRam区域的SIZE,下面也有每个具体的NvRam区域的Offset计算,没截出来。

2024-04-19 17:19:51 234

原创 UEFI Setup界面Hii动态创建选项

每个界面的选项一些操作 恢复默认值 动态创建的选项需要配置对应的当前值或者BufferStorage的值进行显示和存取操作,CallBack针对选项的操作进行执行CallBacFunc函数,其中实例需要自己实现每个vfr都可以按照需求实现自己的ConfigAccess Protocol。使用form formid 点击goto选项会跳到相同的formid页面。1.Vfr文件中建立Label ,在C文件中动态插入选项到Label位置。实例:这样就实现在vfr中跳转到不同的Form页面。

2024-02-26 14:02:27 907

原创 Hash加密方法

源码实现SHA256。

2024-02-20 15:57:10 279

原创 CPU模式与寄存器介绍

保护模式:保护模式提供了内存保护机制,通过分段和分页机制,可以将内存划分为不同的段和页面,并为每个段和页面设置访问权限。当CPU支持20根以上地址线时,可以访问到0x100000到0x10FFEF的地址,但是需要打开A20地址线支持,否则访问到的是0x0000-0xFFEF的内存地址。保护模式:在保护模式下,内存访问是基于虚拟地址的,程序使用段选择子和偏移地址的组合来访问内存。保护模式:保护模式支持32位和64位的寻址空间,可以访问更大的内存容量,充分利用现代计算机的性能和资源。

2024-02-06 17:01:22 635

原创 CXL技术

CXL.memory:这种模式可以将外部设备作为主内存使用,从而实现更大的内存容量。CXL.cache模式允许CPU在本地缓存中保留最常用的数据,而将不常用的数据保存在外部设备中。用于网卡这类高速缓存设备。Type 3:一种专用的存储设备,与主机处理器直接通信,并且可以使用 CXL 协议来实现低延迟、高吞吐量的数据传输。通过PCIe总线连接CPU和外部设备,这样CPU就可以与外部设备共享内存,并且可以直接访问外部设备的I/O资源。CXL.io:这种模式可以将内存扩展到外部设备,使得数据的传输速度更快。

2024-02-06 15:42:14 209

原创 BIOS RTC唤醒原理之COMS寄存器

如果RTC唤醒事件的状态和使能位是在Fixed Hardware中实现的,则OSPM可以在不加载整个操作系统的情况下判断该RTC是否是唤醒事件的源。S4唤醒是可选的,通过FADT中的RTC_S4标志(如果设置,则平台在S4状态下支持RTC唤醒)*来支持。FADT中的CENTURY字段 将包含一个非零值,该值表示RTC的CMOS RAM区域的偏移量,该区域包含该日期的Centenary值。FADT中的DAY_ALRM字段将包含一个非零值,该值表示RTC的CMOS RAM区域的偏移量,该区域包含日告警值。

2024-02-06 10:13:21 1232

原创 UEFI BIOS之文件类型

DXE在拿到这个hob之后,会先生成FVB protocol 然后再生成FV protocol 这个FV protocol就很像PEI阶段的FV ppi,这个FV Protocol就对这个FV进行管理,对FV数据进行操作,中间的FVB可读可写,如果说这一块block空间存储的是FV格式的数据,是PEI flow,spec 规定的格式的,则会继续创建FV protocol 如果不是的话则不会创建。FV:固件卷,指在FD上一个连续的部分,我们可以把它看成一个逻辑设备,因为我们代码真正操作的是FV,而非FD。

2024-02-05 16:35:35 1100

原创 UEFI BIOS之PCD

这里说是大部分时间内,那是因为在诸如SEC阶段,以及PEI、DXE阶段的早期,某些PCD相关的模块还没有加载起来之前,这些类型的PCD还是不能访问的。需要注意的是上面的类型并不是在一个SPEC中定义的,前面的4中是满足EDKII规范,而最后一个满足的是PI规范,这个对使用的影响还不是很确定。因为该PCD是可以通过外部工具来修改的,那么有一点是可以肯定的,即它是可见的,通过查看BIOS二进制就可以找到。这里定义了PCD相关的两个变量,一个是值,注意它的类型修饰符是volatile,另一个是PCD的大小。

2024-02-05 15:29:36 744

原创 EDK内存初始化流程

由于在第1步中gMemoryMap已经链接到来一项Entry,而这项Entry是位于静态内存空间,该Entry的FromPages标记为FALSE,于是在根据gMemoryMap中的这一项Entry来分配动态内存的时候,最终会使得这项Entry分裂成两项,一项Entry0描述剩余的动态内存空间,一项Entry1描述分配出的一页大小的动态内存空间。此时这些Entry本身的数据实际是位于动态内存空间,其属性FromPages被标记为TRUE,不过这些Entry并没有描述某一段内存空间,其本身的数据都是空值。

2024-02-05 15:27:39 699 1

原创 UEFI BIOS 之HOB

手册为了将x86的Platform Initialization扩展到更多的平台,已经不再直接使用PEI、DXE等阶段说明HOB的使用情况,不过对于x86架构的BIOS来说,HOB生成阶段其实就是SEC和PEI阶段,而HOB消费阶段就是DXE和BDS阶段。HOB在HOB List里是连续创建的,在HOB header(EFI_HOB_GENERIC_HEADER)中描述了HOB的长度和Type,创建后的HOB是不能删除的,否则无法查找下一个HOB。后面的HOB操作接口都是以这里为基础的,比如。

2024-02-05 15:24:57 645 1

原创 ACPI Event流程介绍

● 状态/使能寄存器(针对事件) ● 控制寄存器 如果一个寄存器块的类型是状态/使能类型,那么它将包含一个具有状态位的寄存器和 一个对应的具有使能位的寄存器。相比之下,在ACPI系统中,中断事 件会产生一个共享的、OS可见的中断(边沿类型的中断将不会工作)。在此状态下的硬件延时必 须足够短,使得操作软件在决定是否使用它时,不会考虑此状态的延时因素。设备和处理器性能状态(Px状态)是设备或者处理器在执行状态下(处理器在C0状 态,设备在S0状态)的电量消耗和能力状态。SCI是一个低有效、电平类型的共享中断。

2024-02-05 15:14:17 368 1

原创 ACPI 系统表详细介绍

ASL(ACPI Source Language)编译之后得到AML(ACPI manchine Language),置于ACPI table中,ASL用来定义ACPI objects,包括ACPI control methods等,可以控制hardware,读写register等。在 ACPI 中,_STA 方法通常用于返回设备的状态信息。若发生特权级变化,需要保存用户态地 SS,ESP 到内核栈,否则不需要保存,然后再保存 eflags,cs,ip 到内核栈中,如果有错误码,还要将错误码压进栈中。

2024-02-05 15:13:03 1071 1

原创 内存Bank Interleaving

例如,在第一个时钟周期中,CPU向存储体0发送一个地址,然后在第二个时钟周期中将下一个地址发送到存储体1,然后分别在第三个和第四个时钟周期将第三个地址发送给存储体2和3。在没有交织的情况下,控制器将地址发送到SDRAM设备,接收所请求的数据,然后等待SDRAM设备预充电并在启动下一个数据事务之前重新激活,从而浪费了几个时钟周期。控制器无法在其最佳位置向气缸组z发出激活命令,因为它必须等待气缸组x接收带有自动预充电命令的读取,从而将激活命令延迟一个时钟周期。对于DDR4,存储体是指存储体地址和存储体组。

2024-02-05 15:08:33 233 1

原创 OS 内核 Grub参数设置

临时修改可以方便地测试和验证内核参数是否有效地解决问题,而这只需要在系统启动时,选中条目,详细的OS kernel grub参数设置入附件 Kernel Parameters。经过临时修改验证后,是时候将其修改永久保存,将内核参数追加到。键即可进入编辑模式,将参数追加到。,每个参数以空格隔开。例如IOMMU 功能开关。

2024-02-05 15:03:32 316 1

原创 Linux 开机自启脚本

reboot //进入系统后sleep 10s中 会执行reboot重启可以继续添加其他操作指令开机自动运行。/etc/rc.d/rc.local 这个文件最后一行加一个/root/reboot.sh。打开启动应用程序首选项:以下仅仅是打开的一种方法,当然也可以通过终端直接运行。Sleep 10 && reboot Esc :wq保存退出。i键 输入模式 在最后一行加 /root/reboot.sh。/root 目录创一个 reboot.sh。Linux系统reboot 脚本。

2024-02-05 14:40:59 319 1

原创 [gitlab-搭建使用]

进入到项目中,打开setting 选择USER中的人员 ,可以看到这个group中的project。创建好用户后需要输入默认密码,使用邮箱和用户名都可以登陆,用户首次登陆可以设置新密码。3.普通用户登陆可以看到group 下的project ,普通用户五admin 权限。2.创建group,add user。2.创建user,添加user。首次登陆设置root的密码。1.创建一个Project。

2024-02-05 14:34:22 118 1

原创 CPU的电源管理之P-State C-State

C state节能有两个,一个是package Cstate,一个是Core Cstate. Package对应的是一个物理cpu,Core对应的就是物理cpu内部的物理core。查看CPU idle state 信息:cpupower idle-info 或 cat /sys/devices/system/cpu/cpuidle/current_driver ,cat /sys/devices/system/cpu/cpuidle/current_governor_ro。就是有任务正在运行时的状态。

2024-02-05 14:33:35 1337 1

原创 FTP服务器搭建

不过这还没完,还要允许FTP服务器通过防火墙,找到防火墙,点击进入允许应用通过Windows防火墙;ndows键+r打开运行框输入compmgmt.msc,打开计算机管理。右键网站选择添加Ftb站点如下图所示。更改设置后需要重新启动。安装完后点击关闭即可。

2024-02-05 14:20:49 145 1

原创 SVN服务器搭建流程

1,下载安装,该版本为正式版本 可以下载破解版。

2024-02-05 14:17:57 207 1

原创 EDK代码及编译详细介绍

EDK环境(安装/代码下载/编译工具),代码编译(项目/模块),DSC/FDF文件,INF/DEC文件,UNI/VFR文件,编译流程

2024-02-04 09:27:19 1263 1

原创 程序员裁员潮

3. 专注于解决问题和创造价值:技术变革带来的机会不仅仅是在技术层面,还包括解决问题和创造价值的能力。5. 寻找新的机会和领域:技术变革也带来了新的机会和领域。1. 持续学习和更新技能:随着技术的不断发展,持续学习和更新自己的技能是至关重要的。关注行业趋势,学习新的编程语言、框架和工具,提升自己的技术能力,以适应新的需求。关键是保持积极的态度,持续学习和适应变化,不断提升自己的技能和能力,以应对职业发展中的挑战。如果你有创业的激情和能力,可以考虑自己创业或成为自由职业者,发展自己的项目和业务。

2024-02-02 10:34:25 241

原创 MTRR MSR寄存器

虽然我们说现在x86是64位的系统,但是CPU真正只是的系统内存却不是2^64,而是2^MAXPHYADDR,而这个MAXPHYADDR的大小不同系统有不同的值。这里说的类型,是指内存的CACHE类型。换句话说,MTRR的作用就是:告诉CPU在操作不同的指定的内存的时候应该用什么手段。硬件复位之后,CPU会Disable掉所有的MTRR,此时所有的系统内存都是UNCACHEABLE的。Type:系统内存的默认CACHE类型,对于没有被MTRR覆盖到的内存段,就使用默认的CACHE类型;E:MTRR的开关;

2024-02-02 10:31:38 294

原创 谈一谈PCI Option rom

(3)从步骤(2)得知含有合法的Option Rom,再进一步分析该Option Rom:从中找到关键字“PCIR”处的地址,然后读取该地址处有关Option Rom类型的字段type,如果类型type字段为0x03,则表明为UEFI Option Rom,则执行步骤(4);如前所述,具体的驱动细节可以参考其他的文档,架构搭建完后,就可以专注在Option ROM的功能实现上了。之前35篇博客中所讨论的议题,所编写的代码,完全可以移植到Option ROM中,只要硬件设备的扩展ROM大小足够。

2024-02-02 10:25:06 961

原创 IPMI原理和常用命令

tyle,关于这个名称不用过多的追究,只需要知道它是系统(BIOS和OS)和BMC通信的一种基本方式即可。本文将介绍BIOS下的KCS接口,包括接口使用方式和数据。内容参考自《ipmi-second-gen-interface-spec-v2-rev1-1.pdf》ipmitool -H ip -I lanplus -U admin -P admin chassis power on //开关机。函数的实现,可以暂时不过,因为依赖于不同的硬件平台,对于x86平台,通常是LPC设备一些操作。

2024-02-02 10:19:20 989

原创 DosBox学习记录

L=返回的代码,0表示成功返回。实际上在执行此指令的时候, 对al并无要求。也即,mov ah,4ch就可以啦, 甭管al是什么。exit:;DosBox调试程序 DEBUG.EXE和DEBUG32.EXE,调试 r打印通用寄存器信息。q退出 debug模式。Debug32.exe r32读取32为寄存器信息。DOS mount到本地的文件夹。

2024-02-02 10:03:54 103

原创 python编译生成exe在windos下运行

这个命令中,`--add-data`选项接受两个参数,用分号分隔:第一个参数是要添加的文件的路径,第二个参数是这个文件在EXE文件中的路径。要将其他文件一起打包到EXE文件中,你可以使用PyInstaller的`--add-data`选项。4. 执行完命令后,PyInstaller将在当前目录下的`dist`文件夹中生成EXE文件,同时将指定的附加文件一起打包进去。请确保附加文件的路径和相对路径在代码中是正确的,这样你的脚本才能正确地访问这些文件。你可以多次使用`--add-data`选项来打包多个文件。

2024-02-02 09:42:16 162

原创 Windos网站搭建

Windos下搭建网站的服务器

2024-02-02 09:14:42 189

原创 国内镜像下载加速

清华:https://pypi.tuna.tsinghua.edu.cn/simple。阿里云:http://mirrors.aliyun.com/pypi/simple/华中理工大学:http://pypi.hustunique.com/山东理工大学:http://pypi.sdutlinux.org/豆瓣:http://pypi.douban.com/simple/

2024-02-02 09:08:46 215

OS 内核 Grub参数设置

所有Grub Kernel的参数设置

2024-02-05

DosBox学习记录,包含多个小功能的汇编代码

汇编代码,包含多种基本的汇编小程序

2024-02-02

关于网页制作的基本方法.txt

关于网页制作的基本方法.txt

2021-07-14

空空如也

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

TA关注的人

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