工具与软件:
我一直在尝试在安全器件上对 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