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__win64.exe 或 multi--x86_64.run。

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// 目录下;二是针对具体目标板从源码构建的镜像。

预编译镜像按目标架构和板卡组织,例如 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.gpjMULTI 工程文件,记录源文件、编译选项和目标配置
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 版本。这样在出现编译或运行差异时,可以快速定位是工具链、镜像还是代码变更导致。

INTEGRITY 开发环境搭建与项目初始化关系图 主机环境 Windows / Linux 磁盘 ≥ 20 GB MULTI IDE 编译器 / 调试器 License 配置 INTEGRITY 镜像 内核 + BSP + 驱动 按目标架构选择 创建 INTEGRITY 工程 工程名 / 目标架构 / 镜像路径 / 启动配置 工程目录结构与版本控制 src/ 应用源码 include/ 私有头文件 images/ 系统镜像 config/ 启动/调试配置 build/ 生成物(忽略) Git 初始化:提交 src / include / config / .gpj,忽略 build/