固件分析
文章平均质量分 83
程序猿不会起名字
这个作者很懒,什么都没留下…
展开
-
ACPI相关(12)- ACPI对IPMI的支持
一、IPMI介绍1、平台管理平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件。比如通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。当系统不正常时,可以选择复位来重启系统。同时平台管理还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。以上的这些功能可以集成到一个控制器上来实现,这个控制器被称为基板管理控制器(Baseboard Manager Controller,简称BMC)。一般服务器中会用到BMC。注:.原创 2021-05-19 09:46:34 · 3095 阅读 · 0 评论 -
ACPI相关(11)- PCC实例
二、PCC实例应用2.1 概述平台通信通道(PCC)是用于PC和服务器平台的ACPI规范定义的机制,作为平台固件(如系统固件或管理控制器)和操作系统(OSPM)之间双向通信的标准机制。PCC是一种通用机制,是一种管道,可用于其他基于ACPI的特性。一些基于ACPI的特性使用PCC在平台固件和OSPM之间建立通信的例子是RASF, MPST等。PCC共享内存区为了在平台固件和OPSM之间建立通信,PCC定义了一个邮箱和一个事件接口。邮箱称为“通用通信通道共享内存区域”。平台固件(如系统固件原创 2021-05-19 09:24:50 · 2785 阅读 · 0 评论 -
UEFI secure boot(3)- 安全引导的实现
1、先决条件1)固件必须支持UEFI和SecureBoot。2)固件必须支持Setup Mode,或至少清除密钥。3)一个PKI,以及一种管理(生成和签名)您的X.509证书的方法。2、生成及添加密钥参考上述签名过程,简言之,配置包括:1). 生成初始的已允许数据库(Allowed Database)2). 生成初始的被禁止数据库(Forbidden Database)3). 生成初始的秘钥交换秘钥数据库(KEK Database)4). 设置平台秘钥(PK).原创 2021-05-18 09:06:19 · 3600 阅读 · 0 评论 -
UEFI secure boot(2)- UEFI variable及签名认证过程
UEFI中Variable的实现安全启动涉及到的关于启动模式变量以及上述密钥变量的保存,在uefi中,设置开机的启动项,设置开机密码等功能.这部分功能在标准的uefi中都是使用Variable这套机制实现的。而安全启动中的变量的保存也是通过这套机制来实现的。这些变量将分别保存到内存以及flash中。(1)Variable变量在flash中数据结构当安全启动禁用时即在系统中只保存关于一些启动过程中的相关变量时,格式如下:在flash中的基地址是0x900000001fc01048typed原创 2021-05-17 19:57:32 · 5519 阅读 · 0 评论 -
UEFI secure boot(1)- 简介
1、公钥加密和数字签名加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息y,但因不知道解密的方法,仍然无法了解信息的内容x。 对称密钥和非对称密钥对称密钥:在双方之间通信,有一个共同密钥来加减密非对称密钥:不需要事先约定且不需要知道通信对方是谁,公钥部分和私钥部分共同组成新形式的密钥——非对称密钥。好比是通信双方,有一个人建立了一个保险柜(将保险柜的制造方法理解为私钥),将信息存入其中,并把保险柜的钥匙(公钥)交给另一方,而另一方当然可以拿着这个钥匙获取保险柜原创 2021-05-17 19:54:54 · 2036 阅读 · 0 评论 -
PMON分析(5)- PMON的使用
1、启动流程pmon 是cpu 上电后执行的代码,相当于x86PC 机中的BIOS,兼有 bootloader的功能,pmon 的二进制代码存放于主板上的一块 512KB 的 flash 芯片上。这块flash 芯片的地址是确定的,虚拟地址 0xbfc00000,物理地址 0x1fc00000。cpu 上电后,会在第一时刻从虚拟地址为 0xbfc00000 的读取指令执行。下面介绍一下 pmon 文件相关的地址问题。cpu 眼中的地址是虚拟地址,cpu 取指和取数据的地址是物理地址,经过北桥解释原创 2021-05-17 17:15:41 · 1111 阅读 · 0 评论 -
PMON分析(4)- 引导内核
固件在完成上述相关CPU、设备环境初始化后,将完成它最后的使命就是引导内核,在initmips最后条用main,对你没有看错,就是那个main。1、main函数1> 获取环境变量ShowBootMenu,如设置了bootlist,则进入函数load_menu_list函数,在usb设备(U盘)、CD-ROM、sata盘中查找boot.cfg文件(把欲引导的内核的目录和传给内核的参数以一定的格式放在 boot.cfg 的文件),如找到,则执行do_cmd(load),引导内核完成启动。2&g原创 2021-05-17 16:10:14 · 1047 阅读 · 0 评论 -
PMON分析(3)- 内存初始化
内存初始化:loongson3_ddr2_config.S文件大致过程分为个阶段:检测四个DIMM插槽的mc0/1,将信息存在s1中(PROBE_NODE_DIMM)。 使用PROBE_NODE_DIMM,根据上一步获取的信息检测对应内存大小 配置内存控制器(mc_init) 配置L2 X-bar,s1中的MC*_ONLY位决定是否使用这个MC,然后根据s1中的MC*_MEMSIZE位决定内存大小以及如何配置L2 X-bar窗口。注:目前仅使用一个内存控制器时,支持内存大小:512M、1原创 2021-05-17 16:01:18 · 1958 阅读 · 0 评论 -
PMON分析(2)- RAM阶段
1、initmipsvoid initmips(unsigned long long raw_memsz) //raw_memz = msize{unsigned int hi;unsigned long long memsz;unsigned short i;//core1 run wait_for_smp_call function in ramasmvolatile(".setmip...原创 2021-05-17 15:51:07 · 879 阅读 · 0 评论 -
PMON分析(1)- ROM阶段
PMON的运行过程分为两个阶段:第一阶段是在ROM FLASH中运行,主要进行基本硬件初始化,如:初始化核的一些配置寄存器,其中包括cpu状态和原因寄存器、pcie的配置寄存器、GPIO、sata、cache、tlb、内存控制器和串口初始化等;第二阶段在内存中执行,主要完成环境变量和基本数据结构的初始化、PCI总线扫描和设备初始化,网络协议和设备初始化,并对搜索到的PCI总线上的设备进行驱动程序的加载与配置等,最后引导内核启动。一、第一阶段1、配置cpu状态_start开始执行pmon的入口原创 2021-05-17 15:34:25 · 1861 阅读 · 1 评论