请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640R2F 工具/软件:TI-RTOS
这个主题可能早已讨论过、但我看不到有关这个问题的任何修复或进一步讨论。
基于当前的 CC2640R2F 1.35 SDK、OAD 如何处理接收到的写入块数据:
- 中央系统将块写入数据到 OAD_IMG_BLOCK_UUID
- oadWriteAttrCB()接收块数据
- oadWriteAttrCB()将接收到的数据块发送到 SimpleBLEPeripheral_processOadWriteCB()
- SimpleBLEPeripheral_processOadWriteCB()调用 iCall_malloc()以从堆获取内存并将其存储到堆中
- 应用任务从堆中获取数据并将其保存到闪存中
问题很明显。 如果中央和外设之间的速度真的很快。 如果闪存写入需要更多的时间、iCall_malloc()可能会从堆内存中运行。 我看不到当前 SDK 会处理这种情况。
Samson