很多团队做功能安全时,最容易把两件事混在一起。一件是工具本身有没有被第三方按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和不同版本在界面上可能有些差别,但排查的思路是相通的。