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.

[参考译文] SW-EK-TM4C1294XL:调试时出现问题

Guru**** 2445440 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/631429/sw-ek-tm4c1294xl-problems-while-debugging

器件型号:SW-EK-TM4C1294XL
主题中讨论的其他器件:TM4C1294NCPDT

嗨、Fellas! 在使用 TM4C1294NCPDT (使用 TM4C1294XL 评估板)调试软件时、我遇到了一些问题、换句话说、我的代码卡在函数 SysCtlClockFreqSet 中(需要 FAULTISR)、并且在多次读取代码后、我看不到其中的任何问题。 因此、我决定使用故障寄存器、特别是 位于0xD28的寄存器。 查看 CCS 调试器后,我在 NVIC_FAULT_STAT 寄存器中看到了值0x00009200,在查看数据表后,可以很容易地得出结论,允许位被置位:


BFARV -->总线故障地址寄存器有效

BSTKE -->堆栈总线故障

Precise -->精密数据总线错误

BSTKE 位被置位、这让我疯了、因为相反、我可以使用德州手册轻松解决问题来解决故障(本文档中有一个问题完全合适)。 我在此向大家寻求帮助。

我尝试运行的代码附加到此线程。

e2e.ti.com/.../adc_5F00_utils.ce2e.ti.com/.../adc_5F00_utils.he2e.ti.com/.../6153.main.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 James:
    故障地址是否类似于0x1FFFXXXX? 如果是这种情况、则表示您已溢出堆栈分配。 您能否尝试增加堆栈、看看它是否会产生影响、因为您指出存在堆栈总线故障。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    由于此类问题经常出现、"成功的替代方案"是否可以建议将此类"增加的堆栈"作为默认值?

    用户(从而避免此类问题)可以(稍后)下调其堆栈使用量(如有必要)...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿、Charles。 否、实际上 NVIC_FAULT_ADDR 的值为0x1FFF67F8。 此外、如何提高堆栈? 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    我认为、不浪费内存资源始终是一种折衷方案。 当前默认的堆栈大小为512。 用户通常需要根据局部变量、返回地址和函数参数的用法来估算最坏情况。 当然、手动操作并不容易。 尽管我从未使用过任何第三方工具、但仍有一些工具可帮助分析所需金额。 使用 TI-RTOS 等 RTOS 的人员可以使用内置工具分析堆栈使用情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在这里、我将堆栈大小更改为1024。  

    在.cmd 文件中、您需要像以下那样更改堆栈指针:

    __STACK_TOP =__STACK + 1024;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即使使用较大的栈、代码仍会在 SysCtlClockFreqSet 中存根
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您首先将样本数量从10000减少到小得多的值、因为您正在创建一个由10000个浮点类型元素组成的数组。 我认为1024栈大小不足以满足要求。 尝试您喜欢的10个元素、并在调整堆栈大小的同时继续工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Charles Tsaaaa">我认为不浪费内存资源总是一个折衷方案。 [/报价]

    但是 Charles -难道这样的"(潜在)浪费内存资源"比破产时的损害要小得多-陷入了 Fault_ISR 地狱之中吗?

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

    在这种特殊情况下、使用10000元素浮点阵列时、两倍甚至四倍的栈大小可能无法切断栈。 我们不知道每个客户的用例。 对于不同的 TivaWare 示例、使用了不同的堆栈大小。 例如、一些以太网示例使用2kB 的堆栈、而计时器示例使用的是256字节。 我不认为我们可以仅为所有示例使用一个堆栈大小。 在这种情况下、无论默认堆栈大小是多少、都是不够的、而且这与应用程序非常相关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    特殊情况除外-此处的任何调查都确认"堆栈大小不足"是导致"用户到达 Fault_isr!"的主要原因

    增大堆栈大小-超出当前"运行中"的大小-(正确地反应)以减少(即减少)已知问题!    (这种反应(奇怪的)这里遇到了很大的阻力!   (如0Ω LPAD 电阻器(鼠疫病)长期由(无)用户判断为"低于最佳"(但"铸就混凝土")、永远不会被纠正!)   (R9/R10应该"袋装"-只能由少数(极少)人(可能)使用!)