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.

[参考译文] CCS/LAUNCHXL-CC2640R2:使用 SNV 存储器存储密钥

Guru**** 2595800 points
Other Parts Discussed in Thread: LAUNCHXL-CC2640R2

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/609361/ccs-launchxl-cc2640r2-using-snv-memory-for-key-storage

器件型号:LAUNCHXL-CC2640R2

工具/软件:Code Composer Studio

您好!

我想在 LAUNCHXL-CC2640R2上存储两个256位密钥。 我目前正在使用'Project ZERO '文件。 我研究了如何使用 SNV 存储器来存储这些密钥、但据我所知、osal_SNV_read/osal_SNV_write 只能用于存储8或16位。  

是否可以使用 SNV_osal_write 来存储256位密钥、或者我是否应该使用另一种方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果有任何帮助、我们将不胜感激!

    谢谢、

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

    您可以使用 osal_SNV_write(),但必须拆分密钥并多次调用读/写函数。 您是否在 SDG 中看到了代码片段?

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

    谢谢 Marie、我刚刚再次看了一下。

    在继续之前、我认为最好能更好地理解方法的基础知识。

    uint8 osal_snv_write (osalSnvId_t id、osalSnvlen_t len、void * pBuf)

    它说 id 是"有效 NV 项目"。 这到底是什么意思? 在示例代码中、它们将0x80定义为 SNV_ID_APP -这是否会针对代码的应用进行更改?

    这是我对我需要做什么的理解-如果您能突出我的流程中的任何问题、我将不胜感激:

    1) 1)定义全局变量 BUF_LEN 和 SNV_ID_APP

    2)创建4个 uint8缓冲区(buf1、buf2、buf3、buf4)、并存储相同32字节密钥的4个不同部分

    3) 3)使用 osal_SNV_read ()检查是否成功、如果失败、则使用 osal_SNV_write()将第一个缓冲区的内容写入 SNV 存储器。  

    4) 4)对其他三个缓冲区重复步骤3、从而将整个密钥存储到 SNV 存储器中。

    我看到的一个问题是、我不理解如何指定每个缓冲区的内容将存储在哪个位置。 SNV_ID_APP 控制的值是否显示位置?

    谢谢、

    Arrenan

     

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

    请参阅软件开发指南中 Marie 提供的链接中的"使用简单 NV 进行闪存存储"部分。

    我不确定您在哪里看到长度限制。 osalSnvLen_t 默认为 uint8、因此您可以为每个 nV 记录写入最多255个字节。

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

    你是对的、我想我误解了。 考虑到缓冲区是一个8位无符号整数的数组、我是否必须创建一个 BUF_LEN = 32 (对于32个字节)的缓冲区、并在32个位置的每个位置将密钥存储为32个部分?

    此外、我仍然不完全了解 SNV_ID_APP。 'nV 项'只是电路板上的一个存储器点吗? 如果我有2个密钥、我不希望第二个密钥覆盖第一个密钥-那么我如何指定每个密钥的存储位置?

    谢谢、

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

    SNV 管理器将负责 NV 页面内的存储。 访问相应值时、只需使用 NV 应用 ID 即可。
    请注意、我们确实提供了完整源代码的 SNV 代码-请随意查看。

    祝你一切顺利