0


RH850U2A8的OCDID设置(安全调试)

1.安全调试简介

安全调试,即在调试的时候需要密码校验,一共有2个位置需要进行密码校验

  • 在使用Renesas Flash Programmer硬刷软件的时候需要输入32字节的OCDID作为校验密码
  • GHS进行调试程序的时候需要输入32字节的OCDID作为校验密码

2.安全调试使用步骤

2.1设置安全调试密码

使用CAN工具,对DID:2E2E写入32字节的OCDID作为安全调试密码

2.2 Renesas Flash Programmer硬刷

选择设备认证

勾选ocdid认证

开始刷写

输入ocdid

如果ocdid输入错误,会提示认证密码匹配失败

如果ocdid输入正确,会提示操作完成

2.3 GHS调试

点击debug

点击播放,点击编辑下载设置

设置ocdid

如果ocdid输入错误,会提示密码校验错误

如果ocdid输入正确,会提示选择芯片核

3 安全调试的代码逻辑

3.1安全调试密码的写入

使用DID:2E2E写入OCDID作为安全调试密码,在DID:2E2E的回调内执行安全区域设置的函数PropertyAreaControl

3.2 控制安全设置区域来设置安全调试密码

ocdid的存储位置位于安全设置区域,所以通过控制安全设置区域来设置ocdid。安全设置区域存在
front side(当前有效面)和back side(当前无效面),程序运行在有效面,修改无效面的安全设置区域,然后将无效面更新到有效面,从而实现设置安全设置区域的ocdid的功能

3.2.1 获得FACI目标

要写安全设置区域,即写入DataFlash的一块区域,写入DataFlash需要操作FACI,操作FACI需要先知道是要操作哪一个FACI,使用R_RFD_PropertyAddressToFaciNumber获取当前的FACI号

3.2.2 读取front side的数据

以下是安全设置区域的基地址

安全设置区域可写入区域是在安全设置区域的基地址偏移0x200的地址开始的

安全设置区域可写入区域一共分为三段

第一段:

第二段:

第三段:

根据以上的位置信息,读取front side的数据,即读取三段安全设置区域的数据

3.2.3 填入ocdid

将2E写入的ocdid按照合理的字节续填入
front side的缓存数组。包括u8的数组转化为u32的数组,u32的数组里面的数据进行大小端转换,u32的数组里面的数据进行倒序

3.2.4 擦除back side的数据

擦除
back side的数据,在

back side的数据之前需要开启P/E mode

3.2.5 写入back side的数据

写入
back side的数据也同样是3段安全设置区域的3段区域

3.2.6 比较front side的数据和back side的数据

比较
front side的数据和back side的数据是否相同,来判断数据有没有正确写入back side

3.2.7 选择有效安全设置区域

在确定
back side的数据正确写入之后,选择要切换的安全设置区域,先缓存在i_pu4_Data数组内,后续写入SVA寄存器

3.2.8 擦除Switch Area

Switch Area是用来切换有效安全设置区域的,此处先擦除

3.2.9 写入Switch Area

写入Switch Area来完成有效安全设置区域的切换

3.2.10 擦除Tag Area

Tag Area是用来切换FACI基地地址和FACI命令发布区域,此处先擦除

3.2.11 更新Tag Area

Tag Area区域更新完成后,成功切换了FACI基地地址和FACI命令发布区域,ocdid也成功写入有效区的安全设置区域,从而完成调试密码注入。更新完Tag Area区域之后要切换至读取模式


本文转载自: https://blog.csdn.net/m0_56002191/article/details/143368387
版权归原作者 屿北_ 所有, 如有侵权,请联系我们删除。

“RH850U2A8的OCDID设置(安全调试)”的评论:

还没有评论