Green Hills工程里,目标处理器并不只是一个芯片名称。编译器会根据处理器型号决定可用指令和相应的代码生成方式,调试环境还要用同一套硬件信息去连接目标板。Green Hills目前覆盖ARM、Power Architecture、AURIX/TriCore、RH850、x86、RISC-V等处理器平台,不同工具链安装包能够选择的具体型号并不相同。工程从旧项目复制过来、更换开发板或者升级芯片后,如果仍沿用原来的处理器配置,编译可能报错,也可能直到下载运行时才暴露问题。
Green Hills MULTI里的工程和普通桌面IDE不太一样,项目结构往往会和目标处理器、运行环境、链接布局一起确定。工程刚建好时,即使源码只有几个文件,只要目标板、工程层级或者路径配置有一处没对上,构建时就可能连续出现找不到头文件、链接文件缺失、目标架构不匹配等报错。遇到这种情况,与其盯着最后一条错误反复修改,不如从顶层工程和较早出现的构建信息往下查,思路会清楚很多。
Green Hills的编译优化等级到底要怎么调,还有优化以后变量没有办法被观察到,这要怎么处理,这些问题一般是出现在从Debug版本往性能版本那边切过去的阶段。编译优化会去把函数给内联展开,把没有用到的代码给删掉,重新去分配寄存器,对指令的先后顺序也做一些调整,程序的运行结果虽然没有变,但这可不表示它生成出来的机器代码,跟每一行的源代码还能一一对应得上。Green Hills编译器里面,性能的级别和调试的级别都是可以选的,MULTI调试器则可以把源代码、内存、寄存器,还有函数调用栈放到一起,去查看程序的状态。