很多团队做功能安全时,最容易把两件事混在一起。一件是工具本身有没有被第三方按ISO 26262认可,另一件是项目在审计时到底要准备哪些落地证据。放到TASKING这里,这两层其实要分开看。官方当前对Arm工具链的表述已经比较明确,VX-toolset for Arm面向Cortex-M和Cortex-R,定位就是面向安全关键嵌入式开发;官方产品页写明其支持到ASIL D,带有Safety and Security Manual,运行时库和浮点库也有符合ISO 26262的合格版本。
在AURIX项目的开发过程中,如果碰到浮点运算的结果跟预期对不上,很多时候问题的根源并不在算法代码本身。这是因为TASKING工具链会根据当前选择的芯片型号以及编译时指定的选项,自动去挑选对应的C标准库和浮点运行库,这样一来,硬件浮点单元(FPU)有没有被用上、是否退回到软件浮点、单精度还是双精度处理、有没有开启异常捕获模式,这些因素都会直接影响到最终的计算结果。下面就以TASKING VX-toolset for TriCore这一工具为例来说明,虽然SmartCode和不同版本在界面上可能有些差别,但排查的思路是相通的。
很多团队把TASKING接进流水线时,最容易卡住的不是编译器本身,而是没先分清授权、命令行入口和批量构建方式。按TASKING官方资料,SmartCode本身支持不启动Eclipse图形界面而直接做headless build,也提供amk这一条make入口;另外,官方许可条款还明确写到,若要把工具放进Jenkins或其他自动化服务器场景,需要具备Build Server License,而不是把普通人工开发许可直接搬进CI。