完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我有一个在 STM32F427VI 上运行的项目,它对双组闪存有一些特定用途,既用于存储某些配置参数,也用于自定义引导加载程序。 这很好,但我离使用完整的 2MB 闪存还差得很远,所以由于难以找到芯片,我希望能够使用带有 1MB 闪存的 STM32F427VG 芯片。 我看到如果设置了DB1M选项位,我可以在双bank模式下使用1MB芯片的flash,布局类似于2MB芯片,非常完美。 所以我得到了一个 1MB 的芯片并将它焊接到电路板上。为了好玩,我用我现有的引导加载程序和应用程序对它进行了编程,然后……它起作用了吗? 这是令人惊讶的,因为引导加载程序进程使用了超出 0x0810 0000 (1MB) 边界的闪存。如果我使用 ST-LINK 连接到芯片,它会正确显示 1MB 闪存大小,如果我转到“擦除扇区...”,它会正确显示 1MB 单组闪存布局。但是在我的代码中,我多次擦除大于 11 的闪存扇区(考虑到 DB1M 选项处于未设置的默认状态,它不存在)甚至 FLASH_SECTOR_23(在任何记录的配置中都不存在)芯片)。更令人惊讶的是,使用 ST-LINK 我可以读取和写入 0x0810 0000 边界之外的闪存地址。 我现有的代码假定内存布局如 RM0090 的表 6 所示,两个存储区中共有 24 个扇区(0x0800 0000 - 0x080F FFFF,和 0x0810 0000 - 0x81F FFFF)。为了擦除闪存,我使用 HAL 中的 FLASH_SECTOR_* 宏和硬编码地址。因此,如果我查看同一文档的表 9,我的硬编码地址应该都是错误的,至少我的某些闪存扇区不应该存在。起初我以为HAL代码在做一些翻译魔术,但我在任何地方都没有看到它,ST-LINK也很高兴地向我展示了不应该存在的闪存地址范围的内容。我还注意到 VG 芯片的地址 0x1FFF 7A22 正确显示闪存大小为 0x0400。 我假设 a) 我要疯了,b) 我弄错了,或者 c) 我中了 ST 彩票并在我的 1MB 芯片中获得了额外的 1MB 闪存奖励,但我希望答案是 ( b) 这里有人可以指出我错在哪里。 谢谢! |
|
相关推荐
1个回答
|
|
他们制造一个芯片,因为测试仪上的时间是一项重要的吞吐量成本,他们选择测试一个子集以实现价格分层。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2655 浏览 1 评论
3216 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1790 浏览 1 评论
3619 浏览 6 评论
5997 浏览 21 评论
946浏览 4评论
1319浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
591浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1309浏览 3评论
1369浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 19:10 , Processed in 1.781002 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号