当我通过设置密码打开 CSM 时、处理器挂起并复位、因为有一些指令从非安全存储器中执行、用于访问安全存储器。 这是一个继承项目、以前的开发人员似乎没有将适当的变量保留在适当的存储器中。 现在我要让 CSM 正常工作、这意味着我需要找到所有这些违规、并修复它们。 我获取了编译输出、提取了文件名、然后使用 grep 在所有这些文件中搜索映射文件中列出的所有 ROM 函数。 结果显示、使用可能错误放置的存储器的 ROM 函数的唯一实例是使用 CTRL_Obj 和 EST_Obj。 EST_Obj 自动放置在0x600、位于 RAMM0/M1中、我也调整了 cmd 文件以将 CTRL_Obj 也放置在 RAMM0/M1中。 此更改允许我在不挂起/复位的情况下通过初始设置、但一旦我启动实际的电机控制、处理器就会挂起并复位。 我使用了 CsmUnlock()来验证这些挂起/复位仅是由于安全违规所致。
我确实有几个函数被放置在 RAM 中、但它们都位于 L0 SARAM 中、这是安全的。 RAMM0/M1之外没有执行任何函数。 如果这是真的、那么安全违例只能是一个 ROM 函数、该函数会传递指向安全 RAM 的指针、对吧?
如何找到所有这些实例?