2. INTEGRITY开发环境搭建

INTEGRITY 是 Green Hills Software 面向高可靠、高安全场景的实时操作系统,其开发过程高度依赖配套的 MULTI IDE 与交叉编译工具链。与通用 Linux 开发不同,INTEGRITY 工程通常采用“宿主机编译、目标板运行”的模式:宿主机上完成源码编辑、编译、链接与镜像生成,目标板上运行 INTEGRITY 内核与应用程序,二者通过调试通道建立连接。因此,环境搭建的核心不是安装一个软件,而是把 IDE、工具链、目标板、调试通道、工程配置 五者打通,使“编译—下载—运行—调试”形成闭环。

一、MULTI IDE 与工具链的组成关系

MULTI IDE 是 Green Hills 的集成开发环境,它本身并不直接完成编译,而是调用底层工具链。INTEGRITY 开发中常见的工具链组件包括:

  • 编译器:如 ccint 系列,针对目标处理器架构生成代码;
  • 汇编器与链接器:完成目标文件生成与地址空间布局;
  • INTEGRITY 内核构建工具:根据 .int 配置文件生成内核镜像;
  • 调试器与目标连接组件:如 multi 调试器、gdbserver 或硬件调试探针驱动;
  • MULTI 工程管理器:管理源文件、编译选项、链接脚本与目标配置。

这些组件在 MULTI 中通过“工程 + 目标配置”组织起来。工程决定“编译什么”,目标配置决定“编译给谁、怎么连、怎么跑”。二者缺一不可。

INTEGRITY 开发环境:宿主机—目标板连接与构建链路 宿主机(Host) MULTI IDE 工程管理 · 源码编辑 · 断点/变量查看 · 构建控制 调用编译器、链接器、调试器与目标连接组件 交叉编译工具链 ccint 编译器 汇编器 / 链接器 库与启动代码 生成目标架构可执行文件 INTEGRITY 内核构建 .int 配置文件 内核组件选择 地址空间与内存布局 生成内核镜像 调试与连接配置 调试探针驱动(JTAG / Ethernet / Serial) 目标板 IP、端口、复位方式、下载地址 MULTI 目标配置(Target Configuration) 目标板(Target) INTEGRITY 内核 已加载并运行 提供任务调度、内存保护、中断管理 应用程序 由宿主机编译生成 下载到目标板运行 目标板硬件资源 CPU / 内存 / 定时器 串口 / 网口 / JTAG 接口 调试探针连接点 复位与启动模式 下载/调试 状态/日志

二、交叉编译工具链的关键配置

交叉编译的核心是“在 x86 宿主机上生成目标架构代码”。以常见的 ARM 目标板为例,MULTI 工程中需要明确以下参数:

  • 目标架构:如 arm、armv7、aarch64,决定指令集与 ABI;
  • 浮点模式:硬浮点、软浮点或混合模式,必须与目标板一致;
  • 字节序:小端或大端,需与硬件匹配;
  • 链接脚本:指定代码段、数据段、堆栈的起始地址与大小;
  • 库路径:INTEGRITY 提供的系统库、C 库与目标板专用库。

这些参数通常写在 MULTI 工程的 .gpj 文件或目标配置中。若架构或浮点模式选错,常见现象是编译通过但目标板启动即异常,或浮点运算结果错误。因此,工具链配置必须与目标板手册中的 CPU 型号、FPU 支持、内存映射严格对应。

三、目标板连接与调试配置

目标板连接方式主要有三类:JTAG 调试探针、以太网调试、串口控制台。实际项目中常组合使用:JTAG 用于内核加载与底层调试,以太网用于应用程序下载与高速日志传输,串口用于查看启动信息和内核打印。

在 MULTI 中配置目标连接时,需要填写:

配置项示例值说明
连接类型Ethernet / JTAG选择调试通道
目标 IP192.168.1.100目标板调试网口地址
端口2000调试服务端口,以实际配置为准
下载地址0x80000000应用程序加载到目标内存的起始地址
复位方式硬件复位 / 软复位下载前是否复位目标板
串口参数115200-8-N-1控制台串口配置

配置完成后,建议先做一次“连接测试”:在 MULTI 中执行目标连接,观察是否能够读取目标板状态、是否出现超时或握手失败。若连接失败,优先检查网线、IP 是否同网段、目标板是否已启动调试服务、防火墙是否拦截端口。

四、工程创建与构建流程

在 MULTI 中创建 INTEGRITY 工程,通常按以下顺序进行:

  1. 新建工程:选择 INTEGRITY 工程模板,指定工程名与存放路径;
  2. 选择目标配置:关联已配置好的目标板连接;
  3. 添加源文件:将 .c、.h、.int 等文件加入工程;
  4. 设置编译选项:架构、优化等级、宏定义、头文件路径;
  5. 配置链接脚本:指定内存布局与入口地址;
  6. 构建工程:执行 Build,生成可下载的目标文件;
  7. 下载与运行:通过调试通道将镜像下载到目标板并启动;
  8. 调试观察:设置断点、查看变量、读取串口日志,判断运行是否符合预期。

构建过程中,MULTI 会在输出窗口显示编译命令、警告与错误。若出现“undefined reference”通常是库路径或链接顺序问题;若出现“section overflow”则说明链接脚本中的内存区域不足,需要调整地址范围或裁剪代码。构建成功后,建议先确认生成文件的格式与大小,再执行下载,避免因镜像过大导致下载失败。

实践建议:首次搭建环境时,先用一个最小工程(例如仅包含一个打印任务和一个定时器任务)验证“编译—下载—运行—串口输出”全链路。最小工程跑通后,再逐步加入实际业务模块,可以显著降低排障难度。
注意:目标板 IP、端口、下载地址等参数必须与目标板实际配置一致。示例中的 192.168.1.100、0x80000000 仅为教学示例,实际使用时请以目标板手册和项目配置为准。

环境搭建完成后,判断是否成功的标准不是“MULTI 能打开”,而是:工程能完整构建、目标板能稳定连接、镜像能成功下载、应用程序能在 INTEGRITY 上运行并输出预期日志。只有这四步都通过,后续的测试与故障诊断才有可靠的基础。