你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H750片内flash对同一flash地址做二次修改出错

[复制链接]
思行一 提问时间:2019-2-28 21:08 /
10ST金币

各位大佬好,又是我,是的,我在H750的flash里游不出去了……


      下面详细介绍我的使用方法和出现的问题:

      我在程序里面拟定在片内flash地址0x08001000~0x0800101F(32bytes, 256bits)写一个uint64_t pData[4] = {0x1020304050607080, 0x0102030405060708, 0x1112131415161718, 0x1213141516171819};然后将pData[0] = 0x2122232425262728, 再将数组pData[4]写到0x08001000~0x0800101F,然后flash就挂掉了。

      当然,在写操作中是执行了擦除操作的。我的写操作流程是:unlock_bank1-->erase sector0-->program 256bits-->lock_bank1
      如果这个数组的值不变,那么我可以写任意次;一旦这个数组的值发生了变化,那么再次写入到同一flash地址空间就会理解挂掉。

      我不清楚是自己在写flash之后没有将片内flash的什么状态恢复,还是说我在数据发生变化后再次执行写操作的时候,擦除动作是将整个flash擦除掉了,还是flash处于某个状态导致了我写出错。

      所以我希望有遇到过这种问题的小伙伴和大佬们能够提供意见和帮助,也希望有官方技术支持能够验证一下提供方案,毕竟如果H750的片内flash只支持写一次的话,除了放一个bootloader外还有什么意义。

望解,谢谢!

收藏 评论8 发布时间:2019-2-28 21:08

举报

8个回答
疯de_恒 回答时间:2019-3-1 09:23:42
这个H7好像是有缓冲的,不知道这个有没有影响。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

思行一 回答时间:2019-3-1 09:25:50
す疯Ⅱ恒す 发表于 2019-3-1 09:23
这个H7好像是有缓冲的,不知道这个有没有影响。

cache只是对于片内SRAM有影响,我的问题是对片内flash同一地址的内容做更改会面对一次全扇区的擦除,这样就会导致我在对flash内容更改的时候我的程序已经被全擦掉了
斜阳 回答时间:2019-3-1 09:43:40
For STM32H750xB devices: a 128-Kbyte user Flash memory block containing one
user sector of 128 Kbytes (4 K Flash words). 你的一个擦除操作把程序也擦掉了。简单应用就不要做iap了。复杂应用外flash。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

思行一 回答时间:2019-3-1 09:59:36
斜阳__ 发表于 2019-3-1 09:43
For STM32H750xB devices: a 128-Kbyte user Flash memory block containing one
user sector of 128 Kbyte ...

但是我做成品之后,如果我想升级的话,不可能把所有产品拆开用jtag去下载程序啊
斜阳 回答时间:2019-3-4 09:27:37
思行一 发表于 2019-3-1 09:59
但是我做成品之后,如果我想升级的话,不可能把所有产品拆开用jtag去下载程序啊 ...

A、升级时让升级程序在ram中运行,缺点,一旦升级失败就得人工升级。
B、使用外挂flash做xip,片内flash只有一个bootloader。缺点成本高。
C、使用系统BL做升级,缺点要做上位机,不然用户不会用
思行一 回答时间:2019-3-4 17:51:28
斜阳__ 发表于 2019-3-4 09:27
A、升级时让升级程序在ram中运行,缺点,一旦升级失败就得人工升级。
B、使用外挂flash做xip,片内flash ...

谢谢您的回复!
1. 片内RAM运行bootloader暂不做考虑,因为老板肯定不能接受升级失败还要拆板子……
2. 将app放在片外flash做xip有两个困难:a)对程序的加密;b)对于目前使用的外挂flash(型号S25FL132K)我
    在keil的flash download里面没有找到flash算法,也就是说我需要自己写一个flash算法?但是我对于改写
    flashPrg.c这里面的内容真的是从来没有弄过,所以不懂怎么搞……、
3. system bootloader我有看STM32提供的那几个自举程序的文档和相关的协议,正在研究,这一部分应该是要有
    对应的硬件电路支持的吧。
枫天123 回答时间:2019-3-5 15:12:06
我也在用H750,其实不用担心IAP升级失败问题,我有个WIFI升级的项目一断电wifi板子就挂了没什么的仅仅是升级时不能断电而已!另外加密可以考虑把密文手动写到烧录bin文件里面去(手动写,一个芯片对应一个烧录文件,嘿嘿。我总是这么干),然后用stlink烧录就行了。至于想把flash做EEPROM用就别想了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

思行一 回答时间:2019-3-5 19:22:19
枫天2015 发表于 2019-3-5 15:12
我也在用H750,其实不用担心IAP升级失败问题,我有个WIFI升级的项目一断电wifi板子就挂了没什么的仅仅是升 ...

你没有用片外FLASH,用的片内FLASH完成的升级?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版