This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2612-Q1:执行 OSPI_writeFifoData () 时、CPU 跳转到 Hwip_data_abort_handler

Guru**** 2695575 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1589502/am2612-q1-cpu-jumps-to-hwip_data_abort_handler-when-execute-ospi_writefifodata

器件型号: AM2612-Q1

尊敬的专家:

 

美好的一天! 我要找客户。

我的客户使用自己的电路板开发 AM261。 他们将调用函数函数 OSPI_writeFifoData () int 他们的代码。 他们在使用构建配置构建代码时发现了这一点 “调试“ 、它可以在调试代码时很好地运行闪存。 但在他们使用构建配置构建代码时 “释放“ 、CPU 将跳至 Hwip_data_abort_handler

在跳转到 Hwip_data_abort_handler 之前、它在 CSL_REG32_WR (indAddr、*srcPtr) 上运行。 此问题将发生在地址 0x880000 上、长度为 256 字节。

IMG_1035.jpeg

IMG_1034.jpeg

您能帮助检查导致 CPU 跳转到什么位置吗 Hwip_data_abort_handler 当执行 OSPI_writeFifoData () 时? 函数 OSPI_writeFifoData () 上的“release"和“和“debug"之间“之间有何区别

 

此致

Kita

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kita:

    感谢您报告此问题。 您描述的行为 — 代码在何处工作 调试 但在中失败 提供 带有数据中止异常的模式 — 通常由以下问题之一引起:

    1.内存对齐问题:

    CSL_REG32_WR(indAddr, *srcPtr)操作需要正确对齐存储器。 在释放模式下、编译器优化可能会改变数据的访问方式。

    • 检查: 确保srcPtr指向 32 位对齐的存储器
    • 解决方案: 使用适当的对齐属性声明源缓冲区: __attribute__((aligned(4)))
    2.编译器优化问题:

    释放模式支持可能影响内存访问模式的积极优化。

    • 检查: 回顾编译器优化级别 (-O2、-O3)
    • 解决方案: 尝试将缓冲区标记为volatile或暂时降低优化级别

    调试模式和释放模式之间的主要区别:

    方面
    调试模式
    释放模式
    过程
    -O0(无)
    -O2/-O3(侵略性)
    代码重新排序
    最小
    广泛
    内联
    受限
    攻击性
    栈使用情况
    大约 50%
    优化/降低
    时序
    更慢
    更快(可能会暴露竞态条件)
    缓存行为
    不同
    不同

    您能否尝试解决上述编译器优化和内存对齐问题、并告诉我问题是否仍然存在? 这将有助于我们缩小根本原因的范围并提供更有针对性的援助。

    请尝试上述建议并分享您的发现。

    此致、
    Mayank Shadwani