下载
中文
注册

Demo参考

Demo功能

串口处系统启动日志中增加一行打印,打印内容如下。

[TestDxeEntry][13L] Test!!

前提条件

  • 一台带网络端口且操作系统为Ubuntu 22.04的x86 Linux服务器。
  • Linux服务器已安装python、make、gcc、unzip、pigz、bison、flex、libncurses-dev、squashfs-tools、bc、device-tree-compiler、libssl-dev、cmake与交叉编译工具链。
  • 所有的依赖必须用root用户进行安装。
  • 用户可以通过如下命令进行安装上述依赖。

    apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake

  • 交叉编译工具链安装请参见安装工具链

操作步骤

  1. 登录Linux服务器。
  2. 执行如下命令,切换至root用户。

    su - root

  3. 执行如下命令,安装编译所需依赖库。

    apt-get install uuid-dev

  4. 使用WinSCP工具或其他工具,将下载软件包获取的源码包“Ascend310B-hboot2-source.tar.gz”上传至Linux系统root用户属组目录下,例如“/opt”。详细操作请参见10.2-使用WinSCP传输文件
  5. 执行如下命令,进入源码包所在目录,例如“/opt”

    cd /opt

  6. 执行如下命令,解压源码包“Ascend310B-hboot2-source.tar.gz”。

    tar -xzvf Ascend310B-hboot2-source.tar.gz

  7. 执行如下命令,进入“Ascend310B-hboot2-source/drivers/firmware/bios/HwPkg/UEFI/Common/Drivers”目录。

    cd /opt/Ascend310B-hboot2-source/drivers/firmware/bios/HwPkg/UEFI/Common/Drivers

  8. 执行如下命令,创建“TestDxe”文件夹。

    mkdir TestDxe

  9. 执行如下命令,进入“TestDxe”目录。

    cd TestDxe

  10. 执行如下命令,新增“TestDxe.c”文件。

    vim TestDxe.c

    添加如下代码,配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。

    #include <Uefi.h>
    #include <types.h>
    #include <Library/DebugLib.h>
    #include <Library/IoLib.h>
    #include <Library/UefiBootServicesTableLib.h>
    #include <Resource.h>
    
    
    EFI_STATUS EFIAPI TestDxeEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
    {
    EFI_STATUS Status = EFI_SUCCESS;
    
    PRINT_WARNING("[%a][%dL] Test!!\n", __FUNCTION__, __LINE__);
    
    return Status;
    }
  11. 执行如下命令,新增“TestDxe.inf”文件。

    vim TestDxe.inf

    添加如下代码,配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。

    [Defines]
    INF_VERSION                    = 0x00010005
    BASE_NAME                      = TestDxe
    FILE_GUID                      = 4D035FE8-A0BB-42D4-B661-21771E6906A5
    MODULE_TYPE                    = DXE_DRIVER
    VERSION_STRING                 = 1.0
    ENTRY_POINT                    = TestDxeEntry
    
    [Sources.common]
    TestDxe.c
    
    [Packages]
    ArmPlatformPkg/ArmPlatformPkg.dec
    MdePkg/MdePkg.dec
    ArmPkg/ArmPkg.dec
    HwPkg/HwPkg.dec
    
    [LibraryClasses]
    UefiDriverEntryPoint
    UefiBootServicesTableLib
    DebugLib
    IoLib
    BlackBoxLib
    
    [Guids]
    
    [Depex]
    TRUE
  12. 执行如下命令,进入“/opt/Ascend310B-hboot2-source/drivers/firmware/bios/HwPkg/UEFI/Products/as310b/as310b”目录。

    cd /opt/Ascend310B-hboot2-source/drivers/firmware/bios/HwPkg/UEFI/Products/as310b/as310b

  13. 执行如下命令,修改“as310b.dsc”文件。

    vim as310b.dsc

    文件新增内容如下图红框,配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。

  14. 执行如下命令,修改“as310b.fdf”文件。

    vim as310b.fdf

    文件新增内容如下图红框,配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。

  15. 执行如下命令,进入“opt/Ascend310B-hboot2-source”目录

    cd /opt/Ascend310B-hboot2-source

  16. 执行如下命令,编译“AS310B_HBOOT2_UEFI.fd”文件。

    bash build.sh hboot2

    出现如下回显,且生成“AS310B_HBOOT2_UEFI.fd”文件表示编译“AS310B_HBOOT2_UEFI.fd”文件成功。

    generate /opt/Ascend310B-hboot2-source/output/AS310B_HBOOT2_UEFI.fd success! 
    sign /opt/Ascend310B-hboot2-source/output/AS310B_HBOOT2_UEFI.fd success!

    编译后的“AS310B_HBOOT2_UEFI.fd”文件会自动存放于“Ascend310B-hboot2-source/output”目录下。

  17. 准备串口线,连接PC和Atlas 200I A2 加速模块底板串口,具体请参见使用PuTTY登录设备(串口方式),观测串口处系统启动日志。
  18. 生效“AS310B_HBOOT2_UEFI.fd”文件,具体操作请参考生效Hboot2
  19. 查看串口的系统启动日志,出现以下回显表示功能修改已生效。