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.

[参考译文] TM4C123GH6PZ:指令和数据总线错误。

Guru**** 2535740 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/770766/tm4c123gh6pz-instruction-and-data-bus-error

器件型号:TM4C123GH6PZ

在指令执行期间、大多数时候会生成故障 ISR。

故障寄存器中的 IBUS 位置位。

我已经尝试增加堆和堆栈内存并给出延迟。

为什么会生成指令总线错误?

此致、

Akshay

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

    使用8MHz 外部晶振。 PLL 和8分频。

    控制器在25MZ 下工作。

    如果我将速度降低到10MHz、则不会生成故障中断。

    但我的应用需要高速。

    我应该检查其他一些配置寄存器吗?

    此致、

    Akshay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    IBUSERR 主要是由于以下可能原因造成的。 我无法想象以不同频率运行会解决这个问题。 除 IBUS 位之外、您是否看到设置了任何其他位? 您是否有另一个可以尝试的芯片/板、是否可以重复同样的问题?

    a)分支到无效的存储器区域、例如由不正确的函数指针引起的存储器区域。
    b)由于堆栈指针或堆栈内容损坏而导致返回无效。
    c)异常矢量表中的输入错误。

    以下是一个应用手册、介绍了如何调试软件故障情况。
    www.ti.com/.../spma043.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    我浏览了该文档。 故障地址保存"调试内核寄存器数据"的地址。
    但该寄存器中的值为0x00000000。

    NVIC_FAULT_STAT0x00000100可配置故障状态[存储器映射]
    NVIC_HFAULT_STAT0x40000000硬故障状态[存储器映射]
    NVIC_DEBUG_STAT0x00000000调试状态寄存器[存储器映射]
    NVIC_MM_ADDR0xE000EDF8存储器管理故障地址[存储器映射]
    NVIC_FAULT_ADDR0xE000EDF8总线故障地址[存储器映射]

    NVIC_DBG_CTRL0x00030003调试控制和状态寄存器[存储器映射]
    NVIC_DBG_CTRL0x00030003调试控制和状态寄存器[存储器映射]
    NVIC_DBG_Xfer0x00000000调试内核寄存器 传输选择[存储器映射]
    NVIC_DBG_DATA0x00000000调试内核寄存器数据[存储器映射]
    NVIC_DBG_INT0x01000001调试复位中断控制[存储器映射]

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

    您好、Akshay、

     当 IBUS 位置位时、故障地址不会写入 FAULTADDR 寄存器。 此外、NVIC_FAULT_STAT 的位15 (BFARV)也表示 FAULTADDR 寄存器不是有效的故障地址。 因此、0xE000EDF8不是故障源。  

     如果您尝试过不同的芯片或主板、您没有回答我、您是否可以重复同样的问题? 您能否在 LaunchPad AD 上尝试一下、您能否重复同样的问题

     您能否展示如何配置系统时钟?

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

    我尝试使用不同的板、问题仍然存在。
    但在 launchpad 中看不到问题。
    在我的硬件中、我使用的是8MHz 晶体、而在 Launchpad 中、则使用的是16MHz 晶体。

    我在硬件上尝试的配置、

    SysCtlClockSet (SYSCTL_SYSDIV_8 | SYSCTL_USE_PLL | SYSCTL_XTAL_8MHZ | SYSCTL_OSC_MAIN); (25MHz) -IBUS 故障
    SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_8MHZ | SYSCTL_OSC_MAIN); (50MHz) -IBUS 故障
    SysCtlClockSet (SYSCTL_SYSDIV_20 | SYSCTL_USE_PLL | SYSCTL_XTAL_8MHZ | SYSCTL_OSC_MAIN);(10MHz) -未发现故障
    SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_USE_OSC | SYSCTL_OSC_INT); (内部16MHz)-未观察到故障

    我在 Launchpad 上尝试的配置、
    SysCtlClockSet (SYSCTL_SYSDIV_8 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN); (50MHz) -未发现故障

    此致、
    Akshay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您在哪里得到 IBUS 故障? 配置时钟或运行代码一段时间后? 如果您有某个时间运行代码并看到故障、您能否使用断点跟踪代码以找出导致 iBus 故障的代码行?

    您还可以尝试一些实验吗?

    1.您是否可以将8MHz OSC 更改为16MHz OSC? 如果您的电路板和 Launchpad 之间唯一的区别是 OSC、那么这将是您要研究的第一件事吗?
    2.您的 LaunchPad 配置不是50MHz。 由于来自 PLL 的 VCO 为200MHz、因此它仅为25MHz、您可以将8分频为25MHz。 您能否尝试在 LaunchPad 中进行4分频?
    3.如果您直接将单端8MHz 时钟驱动到 OSC0管脚而不是使用晶振、该怎么办?
    4、晶体制造商指定的 OSC0和 OSC1上是否有正确的外部负载电容?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Akshay、
    我没有听到你的反馈。 我假设您以某种方式解决了该问题。 我现在要关闭这个线程。 如果您有新问题、您可以打开新主题、或者如果此问题未得到解决、您可以重新打开此主题。