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.

[参考译文] RM44L520:使用 sciSend()时数据中止

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1181516/rm44l520-data-abort-when-using-scisend

器件型号:RM44L520

大家好、  

我当前正在尝试向某些任务添加串行打印语句、但出于某种原因、当我尝试向某个任务添加某些语句时、我会不断获取数据中止。 我粘贴的代码似乎导致了以下问题:

sprintf(str1,"(UV) ");
sciSend(scilinREG, 5, (uint8_t *) str1);
sprintf(str1,"UVSelfCheckError/TotalTestComplete: ");
sciSend(scilinREG, 36, (uint8_t *) str1);

指令故障地址指向 strlen 的实现、这在我不使用该函数的情况下是很奇怪的。 我已删除此代码、一切正常、因此我仍然认为这是导致问题的原因。 我还尝试将任务的此部分作为关键部分、以确保问题不是由上下文切换引起的、并确保 ST1只能通过这一个任务进行访问、而不是运气。 如果有人有任何想法、我都是耳朵。  

谢谢

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

    尊敬的 Andrew:

    我刚才在 RM46上测试了您的代码

    我看不到该代码有任何问题、它对我来说很好

    您能否确保您声明 的 str1的最小尺寸为36?

    --

    谢谢、此致、
    Jagadish。

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

    我确实声明了最小尺寸为36的 str1。

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

    尊敬的 Andrew:

    我没有任何使用 RM44控制器的电路板,所以您可以创建一个只使用 sci 外设的新项目,也可以只使用 sci_init 函数之后与您共享的四行以上的内容对其进行测试。

    如果您对上述内容进行测试、我们可以清楚地知道它是控制器依赖关系还是任何其他外设依赖关系。

    谢谢、

    Jagadish。

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

    我在项目中的其他地方有工作序列打印语句、它们工作正常。 这似乎只是一个问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="511679" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1181516/rm44l520-data-abort-when-using-scisend/4450613 #4450613"]此任务似乎只是一个问题。  [/报价]

    也许问题的任务没有足够的堆栈空间。 您可以尝试增大堆栈大小和/或检查堆栈溢出吗?

    您提到了"任务"一词、它建议使用某些 RTOS。

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

    我使用的是 FreeRTOS、没错。 我已尝试增加任务堆栈空间、但运气不好。 如何检查堆栈溢出? 我想我可以监控一个 ARM 寄存器。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="511679" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1181516/rm44l520-data-abort-when-using-scisend/4450634 #4450634"]如何检查堆栈溢出?

    我还没有测试过它、但 堆栈使用情况和堆栈溢出检查 包含一些有关 FreeRTOS 的信息。

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

    我显著增加了堆栈大小、但不幸的是、这个问题仍然存在。   

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

    尊敬的 Andrew:

    您能否参阅以下主题、

    (6) TMS570LS1224:是否有任何工具用于监控 TMS570堆栈/堆内存消耗、性能测量等? -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢、此致、
    Jagadish。

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

    尊敬的 Andrew:

    我刚刚使用免费 RTOS 创建了一个新的 LED Blinky 项目

    vTask1的默认 configMINIMAL_STACK_SIZE 值为128、当我使用此配置进行测试时、我不会得到任何错误、工程工作正常、稍后我将此值更改为32、然后我得到 _dabort 错误  

    那么、您的代码可能存在相同的问题、您是否可以增大此值并对其进行测试?

    --

    谢谢、此致、
    Jagadish。

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

    我的最小堆栈大小当前为128、问题仍然存在。 我还尝试将其增加到256、但没有改变。  

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

    尊敬的 Andrew:

    是否可以尝试512值?

    --

    谢谢、
    Jagadish。

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

    不幸的是,仍然没有什么。  

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

    我已将 FreeRTOS 堆总大小增加到102400、并将最小堆栈大小增加到512。 我还显著增加了相关任务的堆栈大小。 然后、我尝试仅发送一个包含 spisend 调用的字符串、如下所示:

    sciSend(scilinREG, 5, (unsigned char *)"(UV) ");

    这导致消息被发送一次、然后在以后尝试再次打印时导致数据中止。 通常,我在第一次打印时看到数据中止。  

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

    尊敬的 Andrew:

    很抱歉耽误你的时间、我在度假。

    您是否仍然遇到此问题?

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

    不用担心、我也是这样。 我仍然有这个问题。  

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

    尊敬的 Andrew:

    您是否可以共享您的项目?

    如果不可能、您能否创建一个新的最小项目来解决您面临的问题? 这将有助于我们在最后调试问题

    --

    谢谢、此致、

    Jagadish。