2. INTEGRITY开发环境搭建与项目初始化
INTEGRITY 是 Green Hills Software 面向高安全嵌入式系统推出的实时操作系统,其开发过程高度依赖配套工具链。要开始第一个 INTEGRITY 项目,需要先完成三件事:安装并配置 MULTI IDE、获取与目标硬件匹配的 INTEGRITY 系统镜像、创建工程并初始化版本控制。本节按实际工程顺序展开,重点说明每一步的输入、关键操作与结果判断依据。
一、MULTI IDE 安装与配置
MULTI IDE 是 Green Hills 的集成开发环境,包含编译器、调试器、性能分析器和工程管理器。安装前先确认主机环境:Windows 主机建议使用 Windows 10/11 64 位,Linux 主机常用 RHEL/CentOS 或 Ubuntu LTS;磁盘至少预留 20 GB,安装路径避免中文和空格。安装包通常由 Green Hills 提供,文件名形如 multi_ 或 multi-。
Windows 下双击安装程序,选择安装目录(例如 C:\ghs\multi_),勾选目标架构组件。INTEGRITY 常见目标架构包括 ARM、PowerPC、x86 和 RH850,安装时按目标板选择对应编译器,例如 ARM 目标需要 comp_arm,PowerPC 目标需要 comp_ppc。Linux 下执行安装脚本:
chmod +x multi-<version>-x86_64.run
./multi-<version>-x86_64.run --prefix /opt/ghs/multi_<version>
安装完成后配置许可证。Green Hills 使用 FlexLM 授权,需要设置环境变量指向 license 文件或 license 服务器:
export GHS_LMD_LICENSE_FILE=27000@license-server
export PATH=/opt/ghs/multi_<version>/bin:$PATH
验证安装是否成功,可执行 ccarm --version 或 cxppc --version,若输出编译器版本号且无 license 报错,说明工具链可用。此时 MULTI IDE 已具备编译和调试能力,但还没有 INTEGRITY 内核,下一步需要获取系统镜像。
二、INTEGRITY 系统镜像获取
INTEGRITY 系统镜像不是普通应用程序,而是包含内核、BSP(板级支持包)、驱动和启动代码的完整运行时。镜像来源通常有两种:一是 Green Hills 随 MULTI 安装包提供的预编译镜像,位于 目录下;二是针对具体目标板从源码构建的镜像。
预编译镜像按目标架构和板卡组织,例如 integrity/arm/ 下可能有 integrity.arm.bin、integrity.arm.elf 等文件。选择镜像时需核对三项:目标 CPU 架构、板卡型号、启动方式(NOR Flash、NAND、SD 卡或网络加载)。若目标板是自定义硬件,必须使用对应 BSP 重新构建镜像,构建入口通常是 BSP 目录下的 Makefile 或 gbuild 脚本。
获取镜像后,建议记录镜像版本、构建日期和校验值,便于后续与工程配置对应。例如:
sha256sum integrity.arm.bin
# 输出示例:3f2a... integrity.arm.bin
将镜像放入工程可访问的目录,例如 ~/projects/integrity_demo/images/,后续在 MULTI 中通过调试配置指定该路径。
三、创建第一个 INTEGRITY 项目
在 MULTI IDE 中创建 INTEGRITY 工程,推荐使用 File → New → Project,选择 INTEGRITY Application 模板。工程向导会要求填写工程名、目标架构、镜像路径和启动配置。以一个 ARM 目标为例,工程名设为 hello_integrity,目标架构选 ARM,镜像指向刚才的 integrity.arm.bin。
工程创建后,MULTI 会生成默认的 .gpj 工程文件和一组源文件。第一个可运行程序通常包含一个 main 函数和一个 INTEGRITY 任务。下面是一个最小示例:
#include <INTEGRITY.h>
#include <stdio.h>
int main(void)
{
printf("Hello INTEGRITY\n");
return 0;
}
编译前检查工程属性中的编译器选项:优化等级、目标 CPU 型号、浮点支持等。编译输出应生成 .elf 文件,例如 hello_integrity.elf。若编译报错,优先检查头文件路径是否包含 INTEGRITY 的 include 目录,以及 license 是否有效。
调试运行需要配置目标连接。MULTI 支持 JTAG、以太网和串口等多种连接方式。以 JTAG 为例,在 Debug → Debug Configuration 中选择目标探针(如 Green Hills Probe 或第三方探针),指定镜像和 ELF 文件,然后启动调试。若目标板正常启动,控制台会输出 Hello INTEGRITY,说明工具链、镜像和工程配置三者已经打通。
四、工程目录结构解析与版本控制初始化
一个典型的 INTEGRITY 工程目录结构如下:
| 目录/文件 | 作用 |
|---|---|
hello_integrity.gpj | MULTI 工程文件,记录源文件、编译选项和目标配置 |
src/ | 应用源代码,包含 main.c 和任务实现 |
include/ | 工程私有头文件 |
images/ | INTEGRITY 系统镜像和 BSP 相关文件 |
build/ | 编译输出目录,存放 .o、.elf 等中间文件 |
config/ | 启动配置、内存布局和调试配置 |
其中 build/ 属于生成物,不应纳入版本控制;images/ 中的镜像文件通常较大,若团队使用统一镜像,可通过文档记录版本而不直接提交。建议在工程根目录初始化 Git:
cd hello_integrity
git init
git add .gitignore src include config hello_integrity.gpj
git commit -m "初始化 INTEGRITY 工程"
.gitignore 至少包含:
build/
*.o
*.elf
*.map
*.dep
版本控制初始化后,每次修改工程配置或源码都应提交,并在提交信息中注明对应的 INTEGRITY 镜像版本和 MULTI 版本。这样在出现编译或运行差异时,可以快速定位是工具链、镜像还是代码变更导致。