|
查看: 7|回复: 0

[BLE SDK] 为什么不允许用指针直接读flash?

[复制链接]

145

主题

338

回帖

1584

积分

管理员

积分
1584
发表于 昨天 11:37 | 显示全部楼层 |阅读模式 来自 上海
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: -
SDK及版本: -
为什么现在 SDK 不允许用指针直接读 flash,必须用 API?以前不是可以用指针读吗?

回答:

这是为了避免一个非常难排查的 bug:cache 缓存导致的"读→写→读"数据错误

历史原因说明:

1、早期 SDK 允许使用指针读 flash,但可能出现:先读 flash(内容进 cache)→ 写 flash(内容已更新)→ 再读 flash 时,读到的是 cache 里旧数据的情况,造成数据错误;

2、RISC-V 平台的 cache 更大,这个问题更严重——即使读和写之间隔得很远,也可能命中旧缓存;

3、因此新 SDK 明确禁止指针读 flash,必须使用 flash_read_page 等 API 访问,由驱动保证缓存一致性,避免踩到这种非常难定位的坑。

建议:所有 flash 访问一律使用 SDK 提供的 API,不要用指针直接操作 flash 地址。

本版积分规则

关注公众号
隐私政策|Telink forum

相关侵权、举报、投诉及建议等,请发 E-mail:forum@telink-semi.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|沪ICP备17008231号-1 |沪公网安备31011502403548号

在本版发帖返回顶部