GenFw实际上是一个bash脚本: #!/usr/bin/env bash full_cmd=${BASH_SOURCE:-$0} # see http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is not a g
DPDK是一个运行在用户态的程序。它通过卸载原来的linux对应网卡驱动,加载它本身由各个驱动组成的链接库,通过控制固定的核数,来专门进行轮询式网卡收发包的一款软件。 通过开源github库编译出来的dpdk工具箱会放在/build目录下,大概这样: 这里,需要根据不同的工具,进行一个罗列。 核心工
函数调用标准(Procedure Call Standard)可以参见:Releases · ARM-software/abi-aa(梯) 这一标准主要用于描述函数编译、链接、调用关系约定、栈布局、参数传递等。具体来说,它通过如下一个逻辑顺序来完成CPU下的函数执行: 1、调用标准给CPU的通用寄存
正式进入EFI开发的阶段了,把UefiMain相关的struct与SimpleText相关的struct正规化在这里,方便后续的调用。 UefiMain.h 这个头文件主要解决系统表、BS表的struct: // 这个文件用来定义系统表、系统服务表等基础的内容,可以说所有的efi文件都要用到这个文件
在获取到UEFI的系统表后,首先提供在整个系统表之上,甚至在BS服务之前的,就是两个最重要的有关输入输出的接口: EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 可以说,有关这两个协议的学习,是打开UEFI世界的钥匙。 目
对UEFI的INPUT函数来说,主要目标是在事件发生时,捕捉并以下面这个方式解析对应unicode出来: typedef struct { UINT16 ScanCode; CHAR16
efi文件的编译过程将会分为编译、链接、格式转换三个部分。 编译 此时进行编译,需要指定gcc命令,指定gcc编译过程中的参数,指定编译文件(将GOP文件替换为你希望的文件)。 编译命令如下: aarch64-linux-gnu-gcc -c -Os -g -fshort-wchar -fno-bu
GOP.efi
总结的工具链 gcc命令参数参考: /usr/bin/aarch64-linux-gnu-gcc -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoG
GOP.C 代码如下: typedef unsigned long long UINT64; typedef long long INT64; typedef unsigned int UINT32; typedef unsigned short UINT16; typedef unsigned s