搜索
bottom↓
回复: 7

开优化引起memcpy触发HardFault,很是奇怪

[复制链接]

出0入4汤圆

发表于 2023-11-28 11:20:00 | 显示全部楼层 |阅读模式
CPU是STM32H723,cubeide version 1.14.0,gcc工具链为10.3

前提条件:外挂PSram在OSPI2,地址0x70000000,MPU已经把这个区设置为device,避免cache影响
两个缓冲区的地址:
        uint8_t * p = 0x24000702;
        uint8_t * pCmd_gs = 0x70000000;


对比了几种情况:

情况1:debug模式,gcc优化选项为O0

        memcpy(p, pCmd_gs+3, 8);  // =》可以正常工作
        p += 8;


情况2:debug模式,gcc优化选项为Og

        memcpy(p, pCmd_gs+3, 8);        // =》 进入HardFault
        p += 8;


情况3:debug模式,gcc优化选项为Og

        uint8_t *pgs = pCmd_gs + 3;
        for(int i=0;i<8;i++)
        {
                *p++ = *pgs++;  // =》可以正常工作
        }


情况4:debug模式,gcc优化选项为Og

        *p++ = pCmd_gs[3];
        memcpy(p, pCmd_gs+4, 7);         // =》可以正常工作
        p += 7;


总结下来,好像是开优化后(无论Oz,Os,O1-3,Og,只要不是O0),用memcpy的时候pCmd_gs需要4字节对齐。
照理说memcpy不应该有这种限制,不知道是什么问题导致了这种情况。


出20入186汤圆

发表于 2023-11-28 13:54:19 | 显示全部楼层
你外壳PSRAM,内存映射写搞定了没?我的读可以,写一直报硬件故障。

出0入4汤圆

 楼主| 发表于 2023-11-28 16:11:46 | 显示全部楼层
本帖最后由 liuqian 于 2023-11-28 16:13 编辑

大概是找到问题了
memcpy底层用了LDR/LDM,对于device类型需要对齐,在memcpy(p, pCmd_gs+3, 8) 这个pCmd_gs+3是没有对齐的,导致hardfault

但是问题还是没有解决,有老外说要自己实现memcpy等一系列内存函数,还有加--no_unaligned_access

出0入4汤圆

 楼主| 发表于 2023-11-28 16:14:52 | 显示全部楼层
yuyu87 发表于 2023-11-28 13:54
你外壳PSRAM,内存映射写搞定了没?我的读可以,写一直报硬件故障。
(引用自2楼)

读写都正常,MPU必须配置为device,如果配置为normal,读写过程中会有个别数据出错,导致不可预期的结果

出0入31汤圆

发表于 2023-11-28 17:27:01 来自手机 | 显示全部楼层
memcpy用在外部类似sram的外设需要注意,他为了提高效率可能会产生不期望的访问方式。

出20入186汤圆

发表于 2023-11-28 21:11:12 | 显示全部楼层
liuqian 发表于 2023-11-28 16:14
读写都正常,MPU必须配置为device,如果配置为normal,读写过程中会有个别数据出错,导致不可预期的结果 ...
(引用自4楼)

如果不配置MPU是不是不能映射写?
我没配置MPU,映射写会触发硬件故障。

出0入4汤圆

 楼主| 发表于 2023-11-29 04:57:27 来自手机 | 显示全部楼层
yuyu87 发表于 2023-11-28 21:11
如果不配置MPU是不是不能映射写?
我没配置MPU,映射写会触发硬件故障。

(引用自6楼)

不配也能写,但是偶尔有数据错误

出0入0汤圆

发表于 2023-11-30 15:52:22 | 显示全部楼层
看下汇编的区别
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 21:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表