请问安全手册中,写入配置的软件回读是怎么实现的?即“
为了在系统模块中确保内存映射控制寄存器的正确配置,强烈建议软件执行一个测试来确认所有控制寄存器
写入的正确运行。为了支持这个软件测试,强烈建议将系统模块内存空间配置为一个使用Cortex-R4F 内存
保护单元的严格排序的、不可缓冲的内存区域。这一配置在回读被启动之前确保寄存器写入完成。
”
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
请问安全手册中,写入配置的软件回读是怎么实现的?即“
为了在系统模块中确保内存映射控制寄存器的正确配置,强烈建议软件执行一个测试来确认所有控制寄存器
写入的正确运行。为了支持这个软件测试,强烈建议将系统模块内存空间配置为一个使用Cortex-R4F 内存
保护单元的严格排序的、不可缓冲的内存区域。这一配置在回读被启动之前确保寄存器写入完成。
”
Hi Wei,
抱歉回复晚了。
软件回读的方法应用的比较广泛,这个不是硬件的功能,通过软件即可实现。
汽车电子或其他安全相关领域里面多常用这种方法避免寄存器中的设置发生错误。
简单地说,就是把用户设置的寄存器值再读取回来,并判断是否正确。
比如在某个寄存器中设置了0x80,而这个寄存器应该在整个工作过程中不会被改写,那么,用户每隔1s时间来读取这个寄存器的值,并且判断是否是0x80。如果不是,那么说明程序/硬件出错了。
在Hercules中,由于ARM Cortex R4内核提供了MPU功能,并把内存映射区域赋予不同的性质,比如:
• Memory types:
— Strongly-ordered
— Device
— Normal.
• Shared or Non-shared
• Non-cacheable
• Write-through cacheable
• Write-back cacheable
• Read allocation
• Write allocation.
这时,为了能够让软件回读更准确有效,安全手册建议,系统寄存器映射区域应该配置为Strongly-ordered并且Non-cacheable。