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.

[参考译文] AM6442:从 Linux 更新 HS-SE 器件上的 KEYREV 值

Guru**** 2455360 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1487007/am6442-updating-the-keyrev-value-on-an-hs-se-device-from-linux

器件型号:AM6442

工具与软件:

我一直在尝试在安全器件上对 KEYREV 值进行现场升级、以解决我们需要使主密钥无效的情况。

我创建了用户区代码来进行调用、它与我创建的 PTA 通信;反过来、PTA 向 PLAT-K3驱动程序进行调用。

'stock' plat-K3驱动器没有调用 TI_SCI_MSG_WRITE_KEYREV 函数的例程、所以我已经"滚动了我自己的"、只是它不起作用。

我已经按照 运行时读取/写入 KEYREV 和 SWREV—TISCI 用户指南中所述创建了证书、并且我已经尽可能检查了参数-但我总是收到一个错误代码0xff0001 (拒绝许可)

那么我缺少什么,请?

我的驱动程序片段如下...

int ti_sci_set_keyrev(uint32_t key_rev, uint32_t cert_addr_lo, uint32_t cert_addr_hi)
{
       struct ti_sci_msg_req_set_keyrev req = { };
       struct ti_sci_msg_resp_set_keyrev resp = { };
       struct ti_sci_xfer xfer = { };
       int ret = 0;
       req.value = key_rev;
       req.cert_addr_lo = cert_addr_lo;
       req.cert_addr_hi = cert_addr_hi;

       ret = ti_sci_setup_xfer(TI_SCI_MSG_WRITE_KEYREV, 0,
                               &req, sizeof(req), &resp, sizeof(resp), &xfer);
       if (ret) {
               return ret;
       }

       ret = ti_sci_do_xfer(&xfer);
       if (ret) {
               return ret;
       }

       memzero_explicit(&resp, sizeof(resp));
       return 0;
}

此致、

David