1 EDKTool作用
EDKTool是EDK代码的编译所需要的工具。由这指定编译器及编译选项,编译平台,编译active平台及编译DEBUG或Release版本。
EDKTool对X86及ARM的支持比较好,但对其它平台的支持不怎么好。鉴于EDK的包容性,即使没有对其它平台的支持,我们也要方便地构建其平台对应的工具。
2 EDKTool编译
BUILD SPEC上把EDKTool编译代码分成三个步骤:第一个步骤是预编译或者称元数据处理阶段;第二个步骤是编译步骤;第三个步骤是Image生成阶段。如果想在EDK代码还未支持的平台上做这几个步骤,首先要配置好EDKTOOL。
首先看一下Basetool文件夹内容:
这Bin和BinWrappers是编译过后的工具,我们配置环境的时候可以将其路径加入系统环境中,这是代码编译时,就知道build,GenFw,GenFv等工具在哪找寻。Conf是配置文件,其中有编译规则,编译目标的选择及编译工具,供我们使用者来配置。Source文件是第一阶段和第三阶段所用工具的源文件。Tests文件可以帮我们改的代码做一下语法检查。userManuals是对各个工具使用方法的说明。
3 EDKTool修改内容
我们要为一个EDK不支持的CPU架构做EFI成BIOS,主要是修改Conf和Source两个文件夹的内容。
3.1 build.py
这里要加入所要支持的CPU架构,要不然EDKTOOL不认识-a所带的参数。
3.2 FfsInfStatement.py
和3.1一样,加入CPU架构。不过用途不一样,此处主要是为Inf的解析及生成Ffs时使用。
3.3 PeImage.h
加入CPU的机器码,BIOS是PE32架构,都有PE头,这个机器码就是BIOS代码解析FFS的PE头使用的。
3.4 GenFw工具
如果在Linux下面编译,需要将ELF转成PE结构的。
3.5 tools_def.template
-t所需要的toolchain需要在此文件中设定。