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.

[参考译文] CC2650DK:对内部闪存进行读写操作

Guru**** 2587365 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/564615/cc2650dk-read-write-in-to-internal-flash

器件型号:CC2650DK

如何在运行时读取和写入内部闪存?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您必须在 BLE Stack 项目中启用 OSAL_SNV=1、然后可以使用 osal_SNV_read 和 osal_SNV_write 来读取/写入内部闪存。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢主席先生,
    SIR,在扫描后,我可以在观测器文件中接收事件数据吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请查看此帖子中的答案:
    e2e.ti.com/.../564649
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在 SimpleBLEObserver 中执行此操作
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    事件数据不正常?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    事件数据是指...... 其它设备通告数据或其它内容...我在 pEvent 数据位置收到了垃圾数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否在 GAP_DEVICE_DISCOVERY 事件中检查 pEvent?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否、我在 GAP_DEVICE_DATA_INFO 中检查 pEvent
    在 GAP_DEVICE_DISCOVERY 事件中、没有数据...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您如何检查它? 设置断点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,我在 SimpleBLEPeripheralObserver 中设置断点。

    在案例 GAP_DEVICE_DISCOVERING_EVENT 中:

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

    如果您选中 devList,您是否看到任何内容?

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

    我想通过 UART 配置 BLE MAC 地址。 我该怎么做?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    然后、您需要使用 simple_np 项目来完成此操作。
    或者,您可以将 UART 驱动程序添加到项目中,然后在收到来自 UART 的消息后,您可以调用 HCI_EXT_SetBDADDR()。 但是、您只能在设备处于空闲状态时更改 Mac 地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到有这样的接口。 为什么要配置 BLE MAC 地址?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想通过 UART 添加辅助 BLE MAC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于次要 MAC、我还需要 BLE 器件的发送名称。因此所有 BLE 器件将显示不同的名称。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请尝试参考 e2e.ti.com/.../506226中的讨论
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Yk Chen

    目前、我的 BLE 器件名称显示 SPP BLE Server。它在扫描响应数据中可用我可以更改它。但我想通过 UART 发送新器件。如何实现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Yk Chen

    目前、我的 BLE 器件名称显示 SPP BLE Server。它在扫描响应数据中可用我可以更改它。但我想通过 UART 发送器件名称。如何实现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有看到 HCI 命令执行此操作、因此您可能需要实施自己的串行命令来设置 attDeviceName[]、并调用"GGS_SetParameter (GGS_DEVICE_NAME_ATT、GAP_DEVICE_NAME_LEN、(void*) attDeviceName);"来设置它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何将接收到的数据保存到 cc2650的内部闪存中。(UART 和 BLE 接收的数据)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在 Stack 项目中启用 OSAL_SNV=1、并使用 API osal_SNV_write 将数据写入 CC2650的内部闪存。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经在堆栈 project.set 预处理器 OSAL_SNV=1中启用 OSAL_SNV=1、并且调用 osal_SNV_write 并写入 sdiRx 缓冲器的数据、但无法正常工作。请提供帮助

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

    uint16 partialLen = 0;

    //由于循环缓冲区的绕回、需要进行两次读取
    如果((len + RxBufTail)> SDI_TL_BUF_SIZE)

    partialLen = SDI_TL_BUF_SIZE - RxBufTail;
    SDITL_readTL (&RxBuf[RxBufTail]、partialLen);
    len --= partialLen;
    RxBufTail = 0;


    //从传输层读取剩余的数据
    SDITL_readTL (&RxBuf[RxBufTail]、len);



    if (((RxBuf[0]=0x41)&&(RxBuf[1]=0x54)&&(RxBuf[2]=0x49)&&(RxBuf[3]=0x2B)//添加了 vijendra

    void osal_sv_write (BLE_MAC_Add_config、6、RxBuf);


    SDIRXBUF_RXTAIL_INC (len);

    //将 len 返回原始大小
    len += partialLen;

    返回 len;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    #define BLE_MAC_ADD_CONFIG 0x81
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将以下代码添加到 simple_peripheral 并在 CC2650DK 上运行。 一切都很好。

    UINT8 RxBuf[16];
    UINT8 TxBuf[16];

    RxBuf[0]=0x12;
    RxBuf[1]=0x34;
    RxBuf[2]= 0x56;
    RxBuf[3]=0x12;
    RxBuf[4]=0x34;
    RxBuf[5]= 0x56;
    OSAL_SNV_WRITE (0x81、6、RxBuf);
    OSAL_SNV_READ (0x81、6、TxBuf);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是、如果我们设置默认值、则它可以正常工作、但我希望在运行模块中发送不同的值。例如 UART 接收到的数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这意味着不同的数据通过移动应用发送到 BLE、或者通过 PC 串行端口发送到 BLE 模块的 UART
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这一点没有区别、当您使用来自 BLE 模块 UART 的数据写入闪存时、它不起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是、如果我通过接收到的串行端口发送缓冲区、但它不起作用。它不会达到在设置的中断点
    在栈项目中返回 NVOCOP_writeItem (nV_id、len、pBuf)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我无法理解您的最新描述。 您能详细说明吗?

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

    当我通过 UART 发送数据时、它会接收到 SDITL_readTL (&RxBuf[RxBufTail]、len)的 SDI_rxbuf.c 文件中;

    我想在内部闪存中写入该缓冲器(RxBuf)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我也无法在 SDI_rxbuf.c 中执行 osal SNV 写入。 OSAL_SNV_WRITE/osal_SNV_Read 始终返回 INVALIDPADRAMETER (0x02)。 这似乎与 ICALL 问题有关,但我现在找不到解决办法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、
    是否有其他选项可将 UART 缓冲器写入内部闪存?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    首先、为什么在函数调用前会有"空"?

    void osal_sv_write (BLE_MAC_Add_config、6、RxBuf); 

    其次、您必须知道写入闪存"需要大量时间"。 写入期间、CPU 应该被阻断。 不允许任务切换。 因此、您的 UART 驱动程序也将被阻止。 您必须检查"STL"的实现。

    就我个人而言,我不使用 osal_sv_write(),因为我不知道它是如何实现的。 我直接调用低级 API、并确保在写入闪存时禁用中断。

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

    如何在运行时更新扫描响应数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何在非连接模式下更新扫描响应数据。(我每分钟都在 CC2650的 UART 上接收数据、我想在扫描响应数据中更新此数据)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否指定您正在使用的示例并详细说明您希望在扫描响应数据中更新此数据的含义?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 SPP BLE 服务器。
    我想在运行中的扫描响应数据中添加一些字节(变量)、如下所示
    memcpy (&scanRspData[21]、/var/buff、10);
    GAPRole_SetParameter (GAPROLE_SCAN_RSP_DATA、sizeof (scanRspData)、
    scanRspData);
    但案例 GAPROLE_SCAN_RSP_DATA:为此返回0x02,数据也不会更新。

    我可以在运行时更新扫描或广播数据吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在使用 SPP BLE 服务器。
    我想在运行中的扫描响应数据中添加一些字节(变量)、如下所示
    memcpy (&scanRspData[21]、/var/buff、10);
    GAPRole_SetParameter (GAPROLE_SCAN_RSP_DATA、sizeof (scanRspData)、
    scanRspData);
    但案例 GAPROLE_SCAN_RSP_DATA:为此返回0x02,数据也不会更新。

    我可以在运行时更新扫描或广播数据吗?