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 中通过“工程 + 目标配置”组织起来。工程决定“编译什么”,目标配置决定“编译给谁、怎么连、怎么跑”。二者缺一不可。
二、交叉编译工具链的关键配置
交叉编译的核心是“在 x86 宿主机上生成目标架构代码”。以常见的 ARM 目标板为例,MULTI 工程中需要明确以下参数:
- 目标架构:如
arm、armv7、aarch64,决定指令集与 ABI; - 浮点模式:硬浮点、软浮点或混合模式,必须与目标板一致;
- 字节序:小端或大端,需与硬件匹配;
- 链接脚本:指定代码段、数据段、堆栈的起始地址与大小;
- 库路径:INTEGRITY 提供的系统库、C 库与目标板专用库。
这些参数通常写在 MULTI 工程的 .gpj 文件或目标配置中。若架构或浮点模式选错,常见现象是编译通过但目标板启动即异常,或浮点运算结果错误。因此,工具链配置必须与目标板手册中的 CPU 型号、FPU 支持、内存映射严格对应。
三、目标板连接与调试配置
目标板连接方式主要有三类:JTAG 调试探针、以太网调试、串口控制台。实际项目中常组合使用:JTAG 用于内核加载与底层调试,以太网用于应用程序下载与高速日志传输,串口用于查看启动信息和内核打印。
在 MULTI 中配置目标连接时,需要填写:
| 配置项 | 示例值 | 说明 |
|---|---|---|
| 连接类型 | Ethernet / JTAG | 选择调试通道 |
| 目标 IP | 192.168.1.100 | 目标板调试网口地址 |
| 端口 | 2000 | 调试服务端口,以实际配置为准 |
| 下载地址 | 0x80000000 | 应用程序加载到目标内存的起始地址 |
| 复位方式 | 硬件复位 / 软复位 | 下载前是否复位目标板 |
| 串口参数 | 115200-8-N-1 | 控制台串口配置 |
配置完成后,建议先做一次“连接测试”:在 MULTI 中执行目标连接,观察是否能够读取目标板状态、是否出现超时或握手失败。若连接失败,优先检查网线、IP 是否同网段、目标板是否已启动调试服务、防火墙是否拦截端口。
四、工程创建与构建流程
在 MULTI 中创建 INTEGRITY 工程,通常按以下顺序进行:
- 新建工程:选择 INTEGRITY 工程模板,指定工程名与存放路径;
- 选择目标配置:关联已配置好的目标板连接;
- 添加源文件:将
.c、.h、.int等文件加入工程; - 设置编译选项:架构、优化等级、宏定义、头文件路径;
- 配置链接脚本:指定内存布局与入口地址;
- 构建工程:执行 Build,生成可下载的目标文件;
- 下载与运行:通过调试通道将镜像下载到目标板并启动;
- 调试观察:设置断点、查看变量、读取串口日志,判断运行是否符合预期。
构建过程中,MULTI 会在输出窗口显示编译命令、警告与错误。若出现“undefined reference”通常是库路径或链接顺序问题;若出现“section overflow”则说明链接脚本中的内存区域不足,需要调整地址范围或裁剪代码。构建成功后,建议先确认生成文件的格式与大小,再执行下载,避免因镜像过大导致下载失败。
192.168.1.100、0x80000000 仅为教学示例,实际使用时请以目标板手册和项目配置为准。
环境搭建完成后,判断是否成功的标准不是“MULTI 能打开”,而是:工程能完整构建、目标板能稳定连接、镜像能成功下载、应用程序能在 INTEGRITY 上运行并输出预期日志。只有这四步都通过,后续的测试与故障诊断才有可靠的基础。