ligpg 2023-10-09 16:48 采纳率: 0%
浏览 6

RT_Thread CortexA5 原子操作data abort

rt-thread运行到dfs_mnt_create函数执行原子操作时候出现data abort:
log如下:

img

ldrex地址是正常内存地址,对齐也没有问题:

img

读取DFAR和DFSR:
DFAR: 0x400e2f08. DFSR: Ox00001008
查ARMV7A手册这表示external data abort:

img

地址访问0x400e2f08是正常内存范围,读写正常,用的是标准版本,没有启用MMU,搞不明白为什么会发生external data abort?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-10 12:28
    关注

    【以下回答由 GPT 生成】

    由于没有完整的代码和更多的上下文信息,导致很难准确地确定问题的根本原因。但是,我可以提供一些常见的可能性和解决方案,帮助你进一步调试和解决该问题。

    1. 对齐问题:确保地址和数据访问的对齐是正确的。请检查dfs_mnt_create函数中涉及到的地址和数据访问是否是正确对齐的。

    2. 内存访问权限问题:检查dfs_mnt_create函数处理的内存区域的访问权限是否正确,尤其是在涉及到修改或写入数据时。

    3. 打开MMU:根据你的描述,你没有启用MMU。考虑启用MMU以提供更好的内存管理和保护。MMU可以提供更有效的地址映射和访问控制。

    4. 数据冲突:检查在dfs_mnt_create函数中是否存在其他线程或中断处理程序同时访问相同的内存区域。这可能导致数据冲突和数据异常。

    5. 缓存同步:当使用多个核心或处理器时,确保在所有核心/处理器之间正确同步缓存,以避免数据不一致。这通常需要使用同步原语(如dmb指令)来确保数据的一致性。

    除了以上几点,还需要进一步的调试和分析才能确定问题的具体原因。这可能涉及到查看代码的其他部分和更详细的日志信息。我建议你针对以上提供的解决方案逐步调试和检查代码,并使用调试工具(如GDB)分析更多的日志信息和内存访问情况以获得更多的上下文。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月9日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题