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

STM32H750启动代码与片内flash操作小经验分享

[复制链接]
思行一 发布时间:2019-2-22 12:02

首先感谢STM32 FAE的支持,迅速有效,非常感谢!然后也非常感谢论坛里的大佬们的帮助回答!

我在这里就这两天调试STM32H750的bootloader和写片内flash的经历分享下自己遇到的问题与解决办法。
一. bootloader地址设置和cache使能失能设置与成功跳转到app的关系


      1. 首先说明下我bootloader和app部分的flash和SRAM的分配:

      因为STM32H750的片内flash只有128K,地址是从0x0800 0000 ~ 0x0801 FFFF,我的bootloader大小有12k左右,所以我将bootloader存放到flash的前16k,即地址0x0800 0000 ~ 0x0800 5FFF,在SRAM里使用的起始地址0x2000 0000,大小0x20000;剩下的116K用于存放我的app程序,即地址0x0800 6000 ~ 0x0801 FFFF, 在SRAM里使用的起始地址0x2400 0000,大小0x80000。
      然后贴上我bootloader工程中Target的设置:

b1.jpg b2.jpg b3.jpg

      下面是app中Target的设置:
a1.jpg a2.jpg a3.jpg

      2. cache的设置与地址跳转
      从上面几张target中的设置可以看到我app部分的RAM是使用的是AXI SRAM,bootloader使用的是TCM SRAM, 而在bootloader中一开始我是使能的D-Cache和I-Cache的,我在写完bootloader后无法跳转到自己的app程序去,检查了自己程序里面地址设置与app中中断向量表也作了对应修改,还是无法跳转过去后,向FAE求助,他们给的办法是在bootloader中,地址跳转前将D-Cache失能,即使用HAL库下的函数:SCB_DisableDCache()。添加此函数后能够成功向app跳转。
      所以之后有小伙伴涉及到相关问题希望这部分对你有帮助。

二. STM32H750片内flash操作
      其实H7与之前的芯片在片内flash上不同的地方就是,写操作必须要按32bytes对齐。意思是即便你只想往里面写一个字节或者不到32个字节,但是flash依然会操作32个字节,只是其中只有一个字节或者你写进去的那么多个字节有效,而其他的字节被mcu自己操作填充,而要这样做就必须操作flash的force-write功能,按照我的经验的话,就是在写之前加一句FLASH->CR1 &= ~FLASH_CR_FW,然后再执行写操作,之后添加一句FLASH->CR1 |= FLASH_CR_FW,即:
FLASH->CR1 &= ~FLASH_CR_FW;
HAL_Flash_Program();
FLASH->CR1 |= FLASH_CR_FW
这样才能保证不会出错(仅我个人调试结果是这样)。
所以如果是有连续的数据(大于32bytes),可以先存32bytes然后执行一次写操作,不必去操作force-write功能;如果只是想单独写几个字节可以向我说的这样操作。

附加一点:因为我中间还有调试can通信,而HAL中CAN_TxHeader/CAN_RxHeader里面的DataLength是32bits的,而使用Classic CAN的话,发送和接收的真实数据帧长度最大只有8,会保存在DataLength的高16位,所以如果使用的是Classic CAN接收的话,获取帧长度的时候要将DataLength右移16bits,不然绝对出错。





收藏 1 评论4 发布时间:2019-2-22 12:02

举报

4个回答
gzbkey 回答时间:2019-4-14 19:11:32
H750不是只有一个sector吗?如果要擦除flash就只能整个sector擦除了,按照你的做法,boot和app都做到128k上,boot根本无法升级app,没有意义啊
wofei1314 回答时间:2019-5-9 13:19:14
gzbkey 发表于 2019-4-14 19:11
H750不是只有一个sector吗?如果要擦除flash就只能整个sector擦除了,按照你的做法,boot和app都做到128k上 ...

刚才看了一下  RM0433.pdf  ,确实只有1个Sector ....  如果是这样的话,每次IAP 擦除的时候就会把BootLoader 也一并擦除 ....
woods-377527 回答时间:2019-10-14 16:12:56
外挂FLASH程序怎么操作?
woods-377527 回答时间:2019-11-4 16:57:34
还以为是QSPI

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版