1. 多镜像构建 (Multi-image builds)
在许多情况下,被编程到设备上的固件不仅只由一个应用程序组成,而是由几个单独的镜像组成,其中一个镜像 (父镜像) 要求存在一个或多个其他镜像 (子镜像)。子镜像 加载 (引导) 父镜像,父镜像 也可能是另一个 父镜像 的 子镜像,并引导他。由多个镜像组成的构建最常见的用例是一个应用程序,它需要一个引导加载程序存在。
2. 何时使用多镜像 (When to use multiple images)
镜像 (也称为可执行文件,程序文件或 ELF 文件) 是由代码和数据组成,这些代码和数据由记录在单个符号表中的唯一镜像名称来标识。符号表作为元数据 (metdata) 存在于 .elf
或 .exe
文件中,将镜像转换为 HEX 文件进行编程时则不会被包含在内。相反,链接器会为代码和数据分配地址。这个链接过程是区分镜像和目标文件 (不需要链接) 的过程。因此,要确定是否有零、一个或多个镜像,只需要计算链接器运行的次数即可。
使用多镜像有以下优势:
- 你可以多次运行链接器,将最终的固件划分为几个区域。这种分区通常对引导加载程序很有用。
- 因为每个镜像有一个符号表,所以在最终的固件中相同的符号名称可以存在多次。这对于引导加载程序镜像是有用的,它可能需要应用程序在不同的版本或配置中,使用的库是应用程序他们