我的BIOS之行(2)-Aptio BIOS Overview

Aptio BIOS Overview

这里说的是一个BIOS的工具,但这个工具我也没有办法说清楚,只是有各种不一样的说明,在此我便不加以赘述。

module

对于一个BIOS的module,它具体有什么构成的?在这里,我将做一个介绍,告诉大家具体的情况。

一个module有

  • VEB: 管理Component
  • CIF : Component Information Format
  • SDL: System Description Language
  • C, H: C source & header
  • ASM: 組合語言文件(EFI BIOS 99% C + 1% ASM)
  • DXS: 依賴性表達式腳本文件(Dependency eXpression Script)
  • SD : Setup 定義文件(Setup Definition), 實現部分以前SSP的功能
  • UNI : 字符串定義文件(Unicode),實現以前ASD的功能
  • MAK: 組件的make檔
  • ASL – ACPI Source Language

加粗的文件類型是一个module 一定要有的file。

介绍Module

veb 文件管理組件, cif 文件管理組件中的其它文件或子模組

SDL 文件定義編譯過程中的一些參數,對應到BIOS Parameters。

DXS檔可以include header檔, 目的是爲了引入一些GUID的定義

DXS核心語法是
開始於DEPENDENCY_START
結束於DEPENDENCY_END
中間的條件表達式用連接詞鏈接
第一次練習可以直接在START和END之間寫一個永真表達式TRUE

SD 文件使用在外部某處定義的常量來分割描述語言,可以讓不同的使用者引入不同的定義部分。

EFI

  1. 基本的Chipset初始化
  2. Memory Sizing
  3. BIOS Recovery
  4. ACPI S3 Resume
  5. 切換Stack to Memory
  6. Disable CAR
  7. Enable Cache
  8. 啟動DxeIpl (DXE Initial Program Loader)

特性:
在ROM上執行
沒有壓縮的Code

PEI – PEIM, PPI

  • PEIM —— PEI的模組(Module)
  • PEI Core —— 提供PEIM基本的服務、負責Execute PEIM
  • PEI Service —— PEI Core所提供的服務函式, 所有的PEIM都可以使用
  • PPI —— 是PEI to PEI的介面(Interface),提供其他的PEIM使用的介面

每個PEIM都可以對外提供一些interface供其它PEIM來使用,這些interface可以指向function 或data, 這些interface 叫做PEIM-to-PEIM Interface (PPI).

當一個PEIM要使用另一個PEIM提供的interface時,首先要能夠成功的Locate所要使用的PPI。否則無法使用

這裡就是一個DLL的概念,一切都是動態的。在程式生成的時候,并不知道要使用的一些function是否ready, 必須在運行時動態查詢

EFI_STATUS EFIAPI HomeWorkPei_Init (
    IN EFI_FFS_FILE_HEADER      *FfsHeader,
    IN EFI_PEI_SERVICES         **PeiServices )
{
	EFI_STATUS   Status;     
        EFI_GUID     gPeiStallPpiGuid    = EFI_PEI_STALL_PPI_GUID;//delay id
        EFI_PEI_STALL_PPI	*StallPpi;//stall id
        EFI_GUID     gSetupGuid = SETUP_GUID; //setup id
        EFI_PEI_READ_ONLY_VARIABLE_PPI  *pReadOnlyVariable; //read id
        EFI_GUID	EfiPeiReadOnlyVariablePpiGuid = EFI_PEI_READ_ONLY_VARIABLE_PPI_GUID;

  
       SETUP_DATA	SetupData;
UINTN		nVariableSize = sizeof(SETUP_DATA);

    Status = (**PeiServices).LocatePpi(
	PeiServices,
	&EfiPeiReadOnlyVariablePpiGuid,
	0, NULL,
	(VOID**)&pReadOnlyVariable);
if (EFI_ERROR(Status)) {
            IoWrite16(0x80,0xA1);
            while(1);
	ASSERT_PEI_ERROR(PeiServices, Status);
	return Status;
}
    Status = pReadOnlyVariable->GetVariable(
	PeiServices,
	L"Setup",
	&gSetupGuid,
	NULL,
	&nVariableSize,
	(VOID*)&SetupData);
    if (EFI_ERROR(Status)) {
            IoWrite16(0x80,0xA2);
            while(1);
	ASSERT_PEI_ERROR(PeiServices, Status);
	return Status;
}
   
    Status = (**PeiServices).LocatePpi (PeiServices, &gPeiStallPpiGuid, 0,
                    NULL, (VOID **)&StallPpi);
   if (EFI_ERROR(Status)) {
            IoWrite16(0x80,0xA3);
            while(1);
	ASSERT_PEI_ERROR(PeiServices, Status);
	return Status;
}
    IoWrite16(0x80,0xAA);
    StallPpi->Stall(PeiServices,StallPpi,3*1000*1000);
    IoWrite16(0x80,SetupData.HomeWorkOption);
    //IoWrite16(0x80,0xA4);
    StallPpi->Stall(PeiServices,StallPpi,3*1000*1000);
    //IoWrite16(0x80,0xA5);
    //while(1);
//        IoWrite16(0x80,0xA6);
    return EFI_SUCCESS;
}   

DXE phase特性

既然有了PPI那么为什么还要DXE,通过它的特性,我可以发现,有许多事情PPI不能完成而DXE能够完成

  • 所有的Driver 都是壓縮過的
  • Code 都是在RAM 上執行
  • CPU Cache Enabled
  • 可以使用所有的Memory Resource
  • DXE core 和硬體沒有關聯
  • 避免使用中斷
  • Single Thread

什麽是Protocol

  • 和PPI的概念幾乎相同,本質是一個指針,指向一個data structure, data structure的域是一組指向function或data的指針。

  • 這些function或data就是Driver提供的Service.

  • 其它Driver可以通過調用Protocol的interface來訪問Service.

  • 和PPI一樣,Protocol必須能夠成功locate后才能使用

      EFI_STATUS HomeWorkDxe_Init (
      IN EFI_HANDLE       ImageHandle,
      IN EFI_SYSTEM_TABLE *SystemTable )
      {
      EFI_STATUS Status;
      SETUP_DATA	SetupData;
      UINTN		nVariableSize = sizeof(SETUP_DATA);
      EFI_GUID     gSetupGuid = SETUP_GUID; //setup id
      InitAmiLib(ImageHandle,SystemTable);
      Status = pRS->GetVariable (
                  L"Setup",
                  &gSetupGuid,
                  NULL,
                  &nVariableSize,
                  &SetupData
                  );
        if(EFI_ERROR(Status)){
           IoWrite16(0x80,0xB2);
              while(1);
         return Status;
         }
    	 IoWrite16(0x80,0xBB);
      pBS->Stall(3*1000*1000);
      IoWrite16(0x80,SetupData.HomeWorkOption);
      pBS->Stall(6*1000*1000);
     	return EFI_SUCCESS;
      }
    
  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Aptio V BIOS是一种基于UEFI架构的BIOS系统,由美商AMI公司开发。它的特点是使用了现代化的图形用户界面,同时支持更多的操作系统和硬件设备。这种BIOS系统还提供了更加智能化的管理和维护功能,可以更加方便地诊断和修复系统问题,从而提高了计算机的可靠性和稳定性。 Aptio V BIOS是一种高度可定制的BIOS系统,支持OEM厂商自定义启动界面、动画效果、快捷键等,方便生产批量定制的电脑系统。此外,该BIOS还支持安全启动功能,能够在启动时验证系统的完整性和可信度,防止恶意软件的入侵。 总之,Aptio V BIOS是一种基于UEFI架构的高度可靠和可定制的BIOS系统,它的引入使得计算机硬件设备的管理和应用更加方便和高效,大大提高了Windows和其他操作系统的系统性能和稳定性,是一个十分优秀的BIOS系统。 ### 回答2: APTIO V BIOS是一种BIOS系统,是由美国的AMI公司(American Megatrends Inc.)研发的,主要用于PC电脑、笔记本电脑等设备中,其最新版本为APTIO V UEFI BIOS。相比于传统的BIOS系统,APTIO V BIOS具有诸多优点,例如启动速度更快,支持更高容量的硬盘和内存,支持更多的硬件设备等。 APTIO V BIOS有着丰富的设置选项,可以对硬件进行相关的设置和优化。例如CPU的频率、电压等设置,显卡和内存的相关设置等。同时,APTIO V BIOS还提供安全启动、快速启动等功能,可以提高系统的安全性和启动速度。 APTIO V BIOS还有着丰富的功能,例如系统诊断、系统备份恢复等,方便用户进行维护和修复。在硬件出现故障时,可以通过APTIO V BIOS的硬件诊断功能,快速定位和解决问题,大大提高了维护效率和维修成功率。 总之,APTIO V BIOS是一种先进的BIOS系统,具有多种优势和功能,可以提高系统性能和稳定性,提高安全性和便捷性,为用户提供了更好的使用体验和服务。 ### 回答3: Aptio V BIOS是一款由American Megatrends(AMI)开发的BIOS(Basic Input/Output System)产品。BIOS是一种计算机固件,它主要负责启动计算机硬件设备,并连接操作系统和软件与计算机硬件之间的交互。 Aptio V BIOS是AMI在新一代BIOS领域的最新创新。它提供了高效的启动程序和可靠的系统管理功能。它的界面设计非常用户友好,可以让用户轻松地完成各种BIOS配置和设置工作。而且它还支持UEFI(统一的可扩展固件接口)标准,这使得计算机能够支持更高容量的硬盘驱动器和更快的启动速度。 Aptio V BIOS还提供了一些强大的安全性功能,包括支持TPM(可信平台模块)和Secure Boot(安全启动)。这些功能可以帮助保护用户数据和系统免受恶意软件攻击和其他安全风险的影响。 总的来说,Aptio V BIOS是一款功能强大的BIOS产品,它不仅可以提高计算机的性能和功能,还能提高计算机的安全性。如今,越来越多的计算机制造商正在采用这款BIOS产品,使其成为计算机硬件行业的主流产品之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值