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.

[参考译文] CCS/CODECOMPOSER:Linux 下的 PRU 调试

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/815773/ccs-codecomposer-pru-debug-under-linux

器件型号:CODECOMPOSER

工具/软件:Code Composer Studio

嗨、大家好!

我不是第一次提交此论坛、因此请原谅我的无知。

我一直在尝试将我为 BeagleBone Black 继承的项目的所有参数结合在一起、该项目使用在 Linux 下运行的 PRU 和 C 代码 来监督该过程。  这似乎是处理器的完美选择。  在互联网上挖掘出来的过程中、我觉得工具和 Linux 本身在过去几年中发生了很大的变化、而 Code Composer 中的功能比以前更好。  我使用的是 code composer 9、我的问题是在 Linux 运行时是否可以实际调试一个或两个 PRU?  我看到的参考资料说这是不可能的、但这对我来说毫无意义、因为它对于处理器的用途来说有点核心、至少从我的角度来看。   

如果有人知道参考信息或有关如何设置此信息的 hello world 示例、我会很感激、或者甚至可能。

谢谢

标记

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

    Mark、

    可以在 Linux 运行时调试 PRU、但我已经完成这项工作了相当长的一段时间。 我通常调试 PRU、但使用运行裸机代码的 Cortex A。   

    概述如下:  

    使用 Linux 的过程应该更简单一点、因为您不必使用 CCS 初始化硬件(Linux 为您执行此操作)、并且可以发出 remoteproc (或 pruloader)命令。 但是、您需要将 PRU 代码更改为在特定点"暂停"、以便连接到它并开始分步调试(否则、PRU 将自由运行)。

    此时、您可以为 BeagleBone Black 配置 CCS 并手动连接到 PRU 内核。 应在上面的预定点停止。  

    详细信息应在 wiki 和 TI 培训网站上提供。 如果您尚未检查它们、请参阅:

    http://processors.wiki.ti.com/index.php/PRU-ICSS  

    https://training.ti.com/search-catalog/field_language/EN/categories/processors?keywords=PRU&start%5Bdate%5D=&end%5Bdate%5D= 

    希望这对您有所帮助、

    拉斐尔

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

    非常感谢拉斐尔-  这对我来说很有意义。  我想我应该能够使用在另一个会话中运行的标准 gdb 调试器调试 Linux 部件、使用通过 JTAG 端口连接的 CCS 调试 PRU 部件(具有适当的暂停功能)?   或者是否都需要通过 CCS 运行?

    我将查看您发送的链接、尚未完成。

    再次感谢您的回复。

    标记

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

    Mark、

    您的方法看起来非常好。 如果您打算使用 GDB 的 GUI、则仍可以使用 CCS、但配置方式与传统的.ccxml + Debug 略有不同。  

    另一个参考资料是我几年前参加的培训课程、其中说明了为 BareMetal (停止模式)和 GDB (运行模式)调试这两个任务配置 CCS 的过程。

    https://www.youtube.com/watch?v=JpXJ-F5QqOo 

    请记住、培训使用的是工具的旧版本、但多年来这些版本变化很小、因此基本概念都在此处进行了说明。  

    希望这对您有所帮助、

    拉斐尔

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

    非常感谢您的回复。   

    我也会查看这一点。   在我四处走动时、似乎存在着旧的做事方式、现在的新方式是 SDK。  我想知道,与旧方法相比,您是否可以谈论该工具的区别和适用性。  它看起来简化了与 PRU 交互的 Linux 应用程序。  这是真的吗?  对于新的 SDK 方法、是否有一种旧项目风格的简单定位?  什么时候会这样做?  我面临的挑战是、我有一个旧项目、需要在未来的一段时间内为其提供支持、并且正在尝试确定最佳方法。  原始工程是使用 CCS 6.x 完成的

    感谢你的帮助。

    标记

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

    Mark、  

    处理器 SDK 当然可以简化 PRU 应用的开发、其中 Linux 托管在 AM335x 器件的主应用内核上、 但是、鉴于我并不完全熟悉更现代的 SDK (因为我在另一个小组中工作)、我依靠 e2e 的智慧来获得一些指导。  

    有一个重要文档、介绍了旧版软件开发套件和新版处理器 SDK 之间的迁移。

    http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Release_Specific_Migration_Guide.html 

    它讨论了组件和其他特定方面的差异、例如文件的位置等 这可能对您有用、具体取决于您的项目是如何遗留的。  

    专门针对 PRU、根据您拥有的旧版代码、下面的线程可能对您非常有用:  

    https://e2e.ti.com/support/processors/f/791/t/619971 

    此时、我将向处理器团队的优秀人员寻求进一步的支持。 我联系他们回复了这个话题。  

    希望这对您有所帮助、

    拉斐尔

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

    Mark、您好!

    最初开发项目的 ARM 端是哪个版本的 Linux? 您是否正在尝试继续使用该版本的 Linux、或者是否正在尝试迁移到更新版的 Linux/处理器 SDK?

    从 ARM Linux 向 PRU 执行操作的"新方法"可能涉及加载 PRU 固件、运行 PRU 固件以及(取决于所需的数据传输类型)使用 RPMsg 在 ARM 和 PRU 之间进行通信。 根据您的需求、我可以指向更具体的入门示例。

    此致、

    Nick

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

    您好、Raphael -

    非常感谢这一情况,并对拖延作出答复表示歉意。  我认为这将是非常有价值的、因为您到目前为止已经得到了帮助。  也感谢您转发到处理器组。  干得不错。

    谢谢

    标记

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

    Nick 您好- 感谢您加入本期节目。  我相信原始 Linux 版本是3.8。  适用于 PRU 的 CCS 6.2.1。   Pruss (非 rproc) API。   

    我认为最好是保留原始版本并使其正常工作、但担心系统可能会降低价格、我会被卡住。  我对线程化进程并不是非常熟悉(此应用程序中有很多) 、因此我也担心能够有效地进行调试。  目前,我认为已经使用了日志记录调试方法。  代码通常是稳定的、几年来没有变化、Linux 端也有一些变化  真正只是尝试处理未来的最佳方法、以支持整个系统的持续开发。

    感谢您的任何想法、并非常感谢您的帮助。

    谢谢

    标记

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

    Mark、您好!

    要确认:这是您使用的 API 吗? 《PRU Linux 应用程序加载程序 API 指南》。 如果是、我们几年前就停止了支持。 我们当前的 Linux 处理器 SDK 使用 RemoteProc 来初始化 PRU。 如果您认为您将继续使用该 API、请转到 wiki 页面屏幕的左侧、然后立即选择"下载为 PDF"。 我不能保证 Wiki 页面在2020年或2021年仍会出现。

    我们在这些论坛上不支持 Linux 3.8 -目前我可以回答有关4.9、4.14和4.19的问题、但即使是4.9支持也很快就会被淘汰。

    Linux 处理器 SDK 基本上是 TI 的 Linux 发行版、附带示例、示例文件系统等 它没有任何其他人在 Linux 发行版中无法找到的特殊调试工具。 但是、它将具有最新的 PRU 驱动程序和其他 Linux 代码。 在 TI 的 Linux 发行版中更新 PRU 驱动程序与将该更新推向上游以供其他 Linux 发行版使用之间可能会有延迟。

    在调试 Linux/PRU 交互方面:Rafael 是一个能够评论如何将 CCS 等调试工具连接到 Linux 和 PRU 的人。 我通常只使用 printk 消息来调试我的 Linux 代码。 我用于调试 PRU 代码的主要工具是类似的(定义存储器位置、将调试值写入这些存储器位置、使用 devmem2读取 PRU 写入的值)。

    如果您需要更正式的 PRU 调试技术列表、请告诉我。

    此致、

    Nick

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

    您好 Nick -

    这是我要使用的驱动程序。 这是一个非常有价值的信息,因为我们需要找出前进的道路。  谢谢。  我可以获得的任何调试指导都很好、因此如果您可以列出或指向资源、我将不胜感激。

    一般性意见-我通常是裸机人员、因此使用 IDE 对我来说有点正常。  似乎还有其他的 printf (printk)调试器学校。  您能评论一下这可能是什么吗? 在我看来、IDE 显示了更多信息、但可能对实时多路复用器线程没有那么好?  在这个领域中有点不好。

    谢谢

    标记

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

    2022年3月15日:在处理器 Wiki 脱机后更新线程

    Mark、您好!

    Linux/CCS 调试文档

    1) 1) Rafael 在 CCSv5中编写了 wiki Linux Debug 。 这应该是他 YouTube 视频 Linux 调试(很长)的补充。 未来的读者、该 Wiki 可能会在未来几年更新并迁移到其他地方。

    2) 2) Linux 电路板移植培训系列 可能包含一些有用的 Linux/CCS 调试信息。

    嵌入式 Linux 的常规调试:  

    请参阅我们 的调试嵌入式 Linux 系统培训系列。 其中包括有关如何调试 Linux 的一般信息、包括如何使用 printk。

    PRU 的常规调试:


    我们的 PRU 调试文档目前非常分散。 我们将在未来发布一份全面的文档、但现在您可以在此处找到常规调试技术:

    使用 CCS 进行 PRU-ICSS 编程

    PRU 调试 Wiki

    AM335x 上的 PRU-ICSS 调试 wiki

    我将在下一篇文章中包含类似 PRU printf 的调试的简单示例。

    此致、

    Nick

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

    在中 、UART 引脚不适用于 PRU

    如何检查 PRU 变量值? 如果使用 Code Composer Studio (CCS)、您只需在此处进行检查即可。 如果使用 Linux、您可以通过将测试代码添加到程序中来将变量值保存到已知位置、如下所示。

    #define Testa (*(volatile unsigned int *) 0x100)
    
    main (void){
    Testa = 0xDEADBEEF;
    } 

    请注意,从 PRU 的角度来看,绝对内存地址与内存地址不同,例如,当您尝试从 AM335x 上的 Linux 命令行查看时,Testa 位于0x4a300100。 因此、您可以使用 devmem2 0x4a30100从命令行探测 Linux 中的存储器位置

    此致、

    Nick

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

    谢谢 Nick、这是一个很好的信息。  我需要完成这些文档。  我现在将设置此已解决问题。  再次感谢。

    标记