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.

[参考译文] UCD3138:ROM 密码示例

Guru**** 2577385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/850301/ucd3138-rom-password-example

器件型号:UCD3138

您好 UCD 朋友、

我想实施 ROM 密码 PMBus 命令、这有助于防止器件擦除其密码。  

您能不能帮助我了解支持此功能的命令? 如果您可以在此命令例程中共享代码、这将是完美的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    我应该有代码、但由于天气恶劣、南园区关闭、我目前无法访问代码。

    我希望下周能处理这个问题。

    很抱歉耽误你的时间。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    很抱歉耽误你的时间。

    您是否指的是防止意外擦除 DFLASH 或其他内容?

    请添加更多详细信息、

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jack、

    防止 DFLASH 或 PFLASH 意外擦除或写入的最佳方法是通过单独的 PMBus 命令将 PFLASH 或 DFLASH 密钥写入 RAM、而不是在代码中将其作为常量写入。

    这样,您需要首先发送一条将密钥写入 RAM 的命令(选择您自己的命令代码),然后发送另一条使用 RAM 中的密钥打开闪存进行擦除或写入的命令(0xD9)。

    这里是用于保护 DFlash 的代码,但用于 pflash 保护的代码非常相似。

    这是一组非常简单的更改:

     

    1. 在 RAM 中创建新变量:

    extern uint32 dflash_key;

    1. 创建新的 PMBus 命令函数:

    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;

    1. 向 PMBus_WRITE_MESSAGE 函数添加一个案例、以处理写入 dflash_key 的操作。  我随意选择了0xf3命令代码。  您必须选择您自己的命令集可用的选项:

                   案例 PMBus_CMD_MFR_SPECIFIC_35://这转换为命令0xf3

                                  返回 PMBus_write_dflash_key ();

    1. 软件中断函数中至少有3个点用于写入或擦除数据闪存。  案例1、案例3和案例13应是具体案例
      1. 所有案例都将具有类似如下的行:

    DecRegs.FLASHILOCK.ALL = 0x42DC157E;//解锁闪存写入;

    1. 或者:

           DecRegs.FLASHILOCK.ALL = DATA_FLASH_UNCHONSE_KEY;//解锁闪存写入;

    1. 将三行替换为:

    DecRegs.FLASHILOCK.all = dflash_key;//解锁闪存写入;

     

     

    这些是代码更改。  为了写入校准数据、在发送任何命令写入数据之前、您需要发送 PMBus 命令以写入 dflash 寄存器。  这将是正确密钥0X42DC157E 的块写入。

     

    块写入的详细信息如下:

     

    启动

    读/写位清零时的地址字节

    命令字节–示例代码中的0xf3–您在代码中选择的任何内容

    重复启动

    块中的字节数–在本例中为04

    42.

    直流

    15.

    7E

    PEC 字节。

     

    在写入数据闪存和擦除新数据闪存之后、您将需要再次发送命令、这次仅将所有零都发送为保护数据闪存。  

     

    请注意、数据闪存写入每字大约需要50 μ s、擦除每页需要20毫秒(32字节)。  一旦擦除被启动、PMBus 将再次被激活。  因此,如果等待时间不够长,则更改 dflash_key 位置后,部分擦除将无法完成。  这将使下一次写入数据闪存失败。  您需要为覆盖增加更多时间、因为 PC 强加的时序不是很好地控制。  发送到 API 的命令间隔1秒就可以很容易地在最终输出时变得更加接近。  

    希望这有道理、

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Yitzhak、

    感谢您的大力支持。 这是防止意外擦除闪存和闪存的好方法、我很清楚。 谢谢。。。