功能 #3407
打开Task #3240: FORD文档输出
50%
描述
参考软件DR-003701-708346 NVM Data Validation
以下设计规则适用于所有使用非易失性存储器(NVM)的电子控制单元(ECU)。
1.所有写入NVM的数据必须包含某种类型的数据的有效性。
2.占用多个NVM单元的NVM数据必须不使用冗余数据作为数据的有效数据。
3. NVM必须在以下情况下进行故障检测(通过将预期的valida-dashon数据值与实际的valida-dashon值进行比较,并检查一致性):微处理器复位的700毫秒内;或物理NVM被修改或访问时;或影子RAM(如果使用)被刷新时;或每个“正常”点火周期至少一次。
4.如果检测到NVM故障,则必须遵循供应商定义的故障遏制策略。至少,故障遏制策略必须得到福特的批准,并包括:何时记录故障(取决于数据的重要性)将NVM重新设置为默认值(与第6节更改计划相关)当NVM发生故障时,ECU的操作是否暂停?当NVM发生故障时,ECU的操作是否会受到任何限制?当NVM故障时,它会引起ECU复位吗?
5.影子RAM(如果使用)必须在每个正常点火循环中至少刷新一次。
设计规则1:
“validadapton”的例子包括:在内存块上的CRC,以及存储数据的精确副本。如果没有某种方法来验证完整性,则不能将数据存储在NVM中。
设计规则2:
可用于验证NVM块的方法之一是存储多个冗余副本。这种方法是可以接受的,但有某些限制,其中之一是组成块的数据元素的大小
设计规则3:
使用小的逻辑块,每个逻辑块都有一个CRC作为验证码。通过仔细组织每个块的内容,可以优化存储,并将风险降至最低(即,一个块的验证失败会影响无关变量的风险)。这些逻辑块中的每一个都应该尽可能地设计成完全填充可写单元,包括与块一起存储的任何有效数据。福特不鼓励使用“溢出”可写单元来简单地保存逻辑块的CRC,因为这浪费存储。
设计规则4:
如果系统具备验证NVM(非易失性存储器)逻辑块的方法,则必须使用该方法。具体要求如下:
复位后及时验证:复位后不应长时间延迟NVM内容确认,必须等待所有配置和校准数据加载完成(参考相关设计规则e)后,才能启动应用程序。
700ms 是一个合理的目标时间,但可根据具体ECU(电子控制单元)的情况调整。
每次访问存储时验证完整性
每次对物理存储(persistence)进行读写操作时,都必须确认所操作数据块的完整性。
如果使用标准AUTOSAR(汽车开放系统架构)栈,通常由供应商代码自动处理此验证。
NVM RAM镜像更新时重新验证:
当NVM管理器刷新RAM中的NVM镜像内容时,应重新确认数据块完整性。如果设计包含对RAM镜像的验证机制,则每次应用程序写入RAM镜像时,也应重新执行验证。
长周期运行模块的额外要求
某些模块可能长时间保持运行(包括休眠状态),而完整性检查的间隔时间越长,未检测到错误的风险越高。
如果MCU(微控制器)持续运行(即使处于休眠状态)超过一个点火周期(ignition cycle),则软件至少应在每个点火周期内执行一次完整性检查。
设计规则5:
不要假设你的NVM堆栈“只是处理”错误。
福特期望该项目的软件开发计划能够正确地考虑错误处理,包括可修复的(例如,错误写入)和永久性的(例如,有缺陷的存储单元)。
该计划应包括设计规则中所列项目的说明。
设计规则6:
不要让影子/镜像RAM变得陈旧。如果使用标准AUTOSAR堆栈,则刷新在ECU重置期间完成,并且应该配置为在ECU唤醒时发生。对于长持续时间开启的“唤醒”模块,其中正常的初始化开启序列未初始化,特别是至少在每个初始化开启周期刷新影子RAM。