osg*_*sgx 9 embedded optimization do178-b
机载系统有"DO-178B"A级和B级认证.它是否禁止使用优化编译器?
例如,某些编译器会重新排序指令以获得更高的性能.DO-178B lev.A或lev.B是否禁止重新排序?
大多数现代CPU都在硬件中内置了这种重新排序.它们是否允许在DO-178B lev.A软件/硬件系统中使用?
Bro*_*ses 11
首先,并且批判性地:对于这类问题,如果答案很重要,您需要从有能力提供它的人那里获得正式的专业意见,或者与您的认证机构讨论.不应该依赖你在这里得到的任何答复.
话虽如此,我会假设你从好奇的角度提出要求并且不会以任何有意义的方式依赖答案,我将试图以这种方式回答.我不是专业人士,这不是专业建议.
我可以通过快速搜索在线找到的最详尽的文档是美国联邦航空局关于相关主题的指南文件:http://www.faa.gov/aircraft/air_cert/design_approvals/air_software/cast/cast_papers/media/cast- 12.pdf.本文描述了必须对生成的目标代码而不是源代码进行验证的条件.特别是,它提供了许多即使在非优化代码中也会出现的例子 - 自动变量初始化和异常处理只是一些例子.在编译器优化方面,它指出:
编译器优化是DO-178B/ED-12B第4.4.2a节中提到的另一个领域.这涉及分析确定优化特征不会损害测试用例展示基于需求的测试和与软件级别一致的结构覆盖的能力.这是与第4.4.2b节讨论的可追溯性和其他验证问题不同的问题.这超出了本文的范围.
我没有DO-178B的副本,方便阅读4.4.2a节,但我注意到(a)有处理其他情况的程序,其中目标代码与一对一中的源代码不对应一种方式,(b)这非常强烈地暗示了讨论编译器优化而不是彻底禁止.
从该论文的一些讨论中可以清楚地看出,"我们无法在源代码和目标代码之间跟踪事物"的答案是以某种方式验证目标代码 - 换句话说,有除了禁止此类事情之外的其他解决方案.
因此,我得出结论,至少必须允许一些编译器优化.
特别是,您所描述的那种重新排序是非常可追溯的,而且我似乎可以肯定它是允许的.
DO-178B不是绝对的,可以解释.如果您关闭优化,则没有任何问题,也无需解释.通过坚持最明显的解释,您可以避免以后向认证机构出售您的解释,并打开自己的问题来解决您的工作方式.
当您优化代码时,很难完成A级所需的源指令可跟踪性.此外,如果您使用Do-178B,那么额外的5%的软件并不是您最关心的问题.完成所有必需的认证步骤的难易程度应该是您首要关注的问题,因为这将是您所有时间的消耗.
你问题的硬件部分很有趣.对于软件优化代码不仅仅是重新排序,它也会被更改.但是对于硬件而言,代码不会被改变以仅获得更高的执行顺序速度.我不得不四处询问有关这个问题的更多信息.