0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探究STM32H7芯片IAP跳转失败案例

茶话MCU ? 来源:cc ? 2019-02-26 15:32 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32用户反馈,他在使用STM32H750VB编写用户引导程序【BOOT CODE】和应用程序【APP CODE】。根据数据手册描述,STM32H750有128K Bytes的片内flash,地址是从0x0800 0000~~0x0801 FFFF。他将用户bootloader放在0x0800 0000~0x0800 2FFF,应用程序放在0x08003000~0x0801 FFFF。但当他按照这样的存储分配设计时,发现总是没法实现从BOOT区到APP区的跳转。

基于该用户的反馈信息,给他做了些提醒,比如中断矢量表定位问题,客户都说已经注意到了,代码应该没有问题。我这边就客户反馈的问题找了块STM32H743的板做了验证测试。发现从BOOT区到APP区的跳转并没有异常,那么客户怎么又有问题呢?

再次查看了客户邮件的反馈信息。他用的默认内部SRAM区为AXI SRAM,地址区间在0x24000000 --0x2407FFFF,即下面表格中的A区,而我使用的默认内部SRAM区是DTCM SRAM,地址区间在0x20000000 -0x2001FFFF,即下面表格中的B区。

难道是这个差别导致跳转的不同结果?当然,这两个SRAM区在使用上还是有差异的。

我尝试着将测试工程的默认SRAM区从TCM RAM也改成AXI SRAM进行测试。果真没法实现从BOOT区到APP区的跳转!看来跳转失败跟选择这个默认SRAM区有关系。也就是说当我默认使用DTCM RAM时跳转正常,如果默认使用AXI SRAM时会跳转失败。

我们知道,STM32H7系列芯片支持D-CACHE/I-CACHE。具体到这里,如果使用AXI SRAM往往会用到D-CACHE。我们的工程代码里也的确开启了D-CACHE,如果是因为这个原因,如果在做跳转操作之前关闭D-CACHE应该就能实现正常跳转。 于是对代码稍加调整,实际上也就是加了句关闭D-CACHE的代码。【红色方框处】

再次进行测试,此时即使使用AXI RAM做为默认内存空间,从用户BOOT区也能可靠跳转到APP区,完美实现。

这里涉及到STM32H7系列芯片内部不同存储区的访问特性和D-Cache相关知识,细节还是挺多的。有兴趣的话,可以自行查看相关技术手册做进一步的了解和探究。有时间,后续将在这里做进一步交流。此时分享该应用案例,一做应用提醒,二做抛砖引玉。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    460

    文章

    52769

    浏览量

    444664
  • STM32
    +关注

    关注

    2296

    文章

    11040

    浏览量

    366821

原文标题:一个STM32H7芯片IAP跳转失败的案例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32H7使用HAL库如何控制外置USB HS PHY进入低功耗?

    项目使用STM32H7的HAL库控制外置USB HS PHY(如USB3300或CH132)的。不知如何让MCU通过ULPI接口写寄存器让USB HS PHY进入低功耗,且USB保持链接状态让PC可以重新唤醒。
    发表于 08-14 07:21

    求助,关于stm32H7多DMA数据流问题求解

    情况如下:stm32H7配置了一个adc进行采样,通过dma进行数据传输,串口接收和发送命令,用两个dma数据流通道,采用的空闲中断。 问题:adc一直在中断中,调试未进入串口中断,关闭adc后串口
    发表于 07-29 15:02

    IAP升级跳转APP跳转Boot失败了怎么解决?

    使用的MCU是STM32U535RC ,V6 编译器 跳转实现的功能如下 /** *@brief直接跳转到 Boot 程序 */ void LibJumpToBoot(UINT32
    发表于 07-21 06:15

    AT32 IAP using the USART

    分代码进行更新 如果不需要更新则转到4) 执行更新操作 跳转到第二部分代码执行 图 1. IAP 代码执行流程 在上图所示流程中,MCU 复位后,还是从 0x08000004 地址取出复位中断向量的地址
    发表于 07-11 10:51

    有没有哪位大神提供一个STM32H523或者STM32H563的串口升级的IAP程序?

    有没有哪位大神提供一个STM32H523或者STM32H563的串口升级的IAP程序
    发表于 06-12 06:56

    STM32H7CubeMX配置硬件I2C,读写失败是什么问题呀?

    STM32H7CubeMX配置硬件I2C,读写失败什么问题呀,同样的操作F4和F1都能正常使用,应该不存在i2c地址错误,操作都是一样的,但H7就是用不了。I2C_WaitOnFlagUntilTimeout返回HAL_ERRO
    发表于 06-12 06:21

    STM32H743VIT6 ST单片机 参数及应用场景

    STM32H743VIT6 是意法半导体(STMicroelectronics)推出的一款高性能 Cortex-M7 微控制器,属于 STM32H7 系列。它凭借强大的处理能力、丰富的外设和低功耗
    的头像 发表于 05-12 11:19 ?1237次阅读
    <b class='flag-5'>STM32H</b>743VIT6 ST单片机 参数及应用场景

    使用STM32H7的FDCAN通讯,为什么CAN1会收到CAN2的帧ID,CAN2也会收到CAN1的?

    使用STM32H7的FDCAN通讯,请问为什么CAN1会收到CAN2的帧ID,CAN2也会收到CAN1的?
    发表于 03-14 10:33

    当内存不够时,stm32h7 ITCM可以当普通ram用吗?

    当内存不够时,stm32h7 ITCM可以当普通ram用吗
    发表于 03-14 06:13

    STM32H723 IAP跳转进入硬件故障怎么解决?

    1、栈顶指针校验不通过; 2、屏蔽栈顶指针校验,跳转进入硬件故障;
    发表于 03-13 08:10

    求助,关于STM32H7系列芯片下的ECC功能的疑问求解

    我这里采用的是STM32H755的芯片,参考了文档
    发表于 03-11 07:43

    STM32H7 ADC_IRQHandler和ADC3_IRQHandler这两个中断入口函数在使用上有什么区别?

    STM32H7,ADC_IRQHandler和ADC3_IRQHandler这两个中断入口函数在使用上有何区别?
    发表于 03-11 07:28

    请问STM32H5递增HDPL后如何跳转下一级程序?

    STM32H5的HDP保护,比如某一级ROT提升HDP等级并跳转下一级代码运行。那设置HDP等级提升后,立刻生效吗?如果生效,芯片不能再执行当前ROT中的程序,接下来怎么跳转到下一级程
    发表于 03-11 06:00

    STM32H7 0x00000000地址的内容引发hardfault怎么解决?

    STM32H7,串口初始化时执行HAL_UART_MspDeInit函数,调用HAL_NVIC_DisableIRQ(huart-&gt;hdmarx-&gt
    发表于 03-07 08:15

    【正点原子STM32H7R3开发套件试用体验】+01-开箱体验

    作为一个正点原子的忠实粉丝,很高兴能有机会试用正点原子的开发板,自己以前也是通过正点原子的开发板进入嵌入式行业的,这次给大家带来的是STM32的高端芯片STM32H7R3开发板 主芯片
    发表于 12-05 20:10