您好 UCD 朋友、
我想实施 ROM 密码 PMBus 命令、这有助于防止器件擦除其密码。
您能不能帮助我了解支持此功能的命令? 如果您可以在此命令例程中共享代码、这将是完美的。
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.
您好 UCD 朋友、
我想实施 ROM 密码 PMBus 命令、这有助于防止器件擦除其密码。
您能不能帮助我了解支持此功能的命令? 如果您可以在此命令例程中共享代码、这将是完美的。
大家好、Jack、
防止 DFLASH 或 PFLASH 意外擦除或写入的最佳方法是通过单独的 PMBus 命令将 PFLASH 或 DFLASH 密钥写入 RAM、而不是在代码中将其作为常量写入。
这样,您需要首先发送一条将密钥写入 RAM 的命令(选择您自己的命令代码),然后发送另一条使用 RAM 中的密钥打开闪存进行擦除或写入的命令(0xD9)。
这里是用于保护 DFlash 的代码,但用于 pflash 保护的代码非常相似。
这是一组非常简单的更改:
extern uint32 dflash_key;
int32 PMBus_write_dflash_key (void)
{
dflash_key =(PMBus_buffer[2]<< 24)+(PMBus_buffer[3]<< 16)+(PMBus_buffer[4]<< 8)+ PMBus_buffer[5];
返回 PMBus_SUCCESS;
}
案例 PMBus_CMD_MFR_SPECIFIC_35://这转换为命令0xf3
返回 PMBus_write_dflash_key ();
DecRegs.FLASHILOCK.ALL = 0x42DC157E;//解锁闪存写入;
DecRegs.FLASHILOCK.ALL = DATA_FLASH_UNCHONSE_KEY;//解锁闪存写入;
DecRegs.FLASHILOCK.all = dflash_key;//解锁闪存写入;
这些是代码更改。 为了写入校准数据、在发送任何命令写入数据之前、您需要发送 PMBus 命令以写入 dflash 寄存器。 这将是正确密钥0X42DC157E 的块写入。
块写入的详细信息如下:
启动
读/写位清零时的地址字节
命令字节–示例代码中的0xf3–您在代码中选择的任何内容
重复启动
块中的字节数–在本例中为04
42.
直流
15.
7E
PEC 字节。
在写入数据闪存和擦除新数据闪存之后、您将需要再次发送命令、这次仅将所有零都发送为保护数据闪存。
请注意、数据闪存写入每字大约需要50 μ s、擦除每页需要20毫秒(32字节)。 一旦擦除被启动、PMBus 将再次被激活。 因此,如果等待时间不够长,则更改 dflash_key 位置后,部分擦除将无法完成。 这将使下一次写入数据闪存失败。 您需要为覆盖增加更多时间、因为 PC 强加的时序不是很好地控制。 发送到 API 的命令间隔1秒就可以很容易地在最终输出时变得更加接近。
希望这有道理、
此致、