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.

[参考译文] LAUNCHLL-F2.8379万D:GUI Composer v2 UART显示器在联机和独立应用程序中不工作

Guru**** 2568585 points
Other Parts Discussed in Thread: ENERGIA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/640888/launchxl-f28379d-gui-composer-v2-uart-monitor-not-working-in-online-and-standalone-app

部件号:LAUNCHXL-F2.8379万D
线程中讨论的其他部件:EnergiaTMS320F2.8379万DTMS320F2.8379万S

您好,

我有一个使用TI提供的Serial_Cmd_monitor库的项目(来自MSP432示例)。 它在CCS中可与UART监视器(也可在CCS中与GUI Composer v2应用程序配合使用)很好地工作。 下面是接收缓冲区的屏幕,其中包含可使用此Wiki网页解码的命令:  

http://processors.wiki.ti.com/index.php/ProgramModelUart_GuiComposer#Monitor_Protocol_Documentation

它从数组单元逐个读取一个MAU。 但当我使用GUI Composer在线或独立应用程序时(我运行独立应用程序并选中自动程序,然后使用完全相同的UART读取CCS中的接收缓冲区),我会捕获类似以下的缓冲区:

看起来它尝试将值写入寄存器,但我只有一个折线图引用此数组。

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

    您好,  

    在两种情况下,缓冲区应保持相同的值的期望值是否相同? 您用来重现此问题的程序,您是否愿意分享(如果您愿意,私下分享)? 这可能是重现问题的最快方法。  

    您能否告诉我您正在使用哪个版本的CCS以及哪个版本的GC Runtime (独立)? 此外,我尝试澄清几个项目,以确保我们可以重现该问题:

      您提到您使用了432个示例。 您引用的处理器wiki没有432示例。 它确实有MSP430示例。 这是您使用的内容吗?  

      有一个使用UART的MSP432教程(与上面引用的Wiki相同的协议)    然而,目标方案使用能源框架来执行。 因此,我想澄清一下您的程序是基于Energia还是基于其他程序,而您将显示器代码集成到自己的应用程序中。  

    谢谢!
    马丁

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

    我使用了Energia的图书馆-它在你的帖子中链接的项目中。 使用CCS 7.3 0.0和GC运行时5.0 的IM (指向它的链接由 https://dev.ti.com/gc/提供)。 这是我的项目:

    e2e.ti.com/.../UARTmon.zip

    它包含CCS和GUI项目文件。 我有新数据:

    在线GUI撰写器执行2个16位写入:0x000F@0x0005F412和0x003F@0x0005F432。 这些是MemCfgRegs,命令是DxINIT和LSxINIT。 独立应用程序可执行3个额外的RAM输入:GSxINIT,然后是DxINIT和 LSxINIT。

    这些寄存器受EALLOW保护,因此我添加了EALLOW以进行写入操作。 可能会暂停通信,因为写入的数据不是接收的数据-初始化RAM后,硬件会清除这些寄存器位。 稍后我尝试通过不从寄存器发回数据而是从接收到的数据来欺骗GUI。

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

    我已经完成了该协议,甚至还专门为该UC编写了我自己的监视器(更快的响应)。 结果相同。 这是Chrome中的控制台-对我来说,它似乎尝试两次连接到同一COM端口。

    现在我还没有什么办法去咬这个。

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

    您的上一篇文章向我提供了有关可能发生的情况的更多信息。

    您正在使用的LaunchPad是双核。 在CCS图片中,您似乎只连接/使用了两个内核中的一个。 但是,GUI Composer似乎尝试连接到两个内核。 据我所了解,实际上只有一个COM端口被LaunchPad公开,GC正在尝试对两个CPU使用相同的COM端口,这将失败。  

    我假设您只关心从一个核心获取信息。 因此,我们需要“配置”GC,使其只有一个核心配置。 通过提供绕过两个可用内核之一的自定义CCXML,可以实现这一点。 但是,在为您提供具体说明之前,我需要对此进行测试。  

    当GC应用程序在CCS中运行时,它们不会启动单独的调试连接,而只是重复使用用户在调试视图中选择的现有调试连接,因此上述问题被忽略。  

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

    我认为这是另一回事。 已尝试与F2.8377万S和F2.8069万通信,如下图所示。 F2.8069万上的控制台看起来不错,但在线形图上仍然没有反应。

    ////////////////////////////////////

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

    不幸的是,有多个问题花了一些时间才解决。  

    1. 2.8379万D是双核,因此需要自定义CCXML。 dev.ti.com目前不支持此功能,我们已在内部添加了此功能的支持,但需要一些时间才能将其推送到dev.ti.com。 您使用过其他单个核心目标,因此希望这不是您的展示障碍。  

    2.在传输字节的固件中存在一个小错误。 请参阅下面的功能,在不使用While循环的情况下,FIFO溢出和传输仅适用于传输8个字(即 16字节)。 因此,如果请求8个元素或以下元素的数组(如tablica),则该数组可以工作。 对于较大的内存请求,只传输16字节,这样就会在主机端中断代码,因为主机正在等待永远无法获取的数据,因此会超时。 使用while循环,整个bufor数组现在应该可以工作。  

    //覆盖这些取决于目标
    void UARTMon::Write8bitByteToCOM (unsigned char c)

    while (SciaRegs.SCICTL2.bit.TXRDY!= 1)

    }
    SciaRegs.SCITXBUF.bit.TXDT = c;
    }

    3.折线图中有一个错误,它需要一个多维数组(即 X和Y)坐标。 这应该适用于一维数组,因为数组索引应该用于X轴。 我将尝试在星期一使用一些javascript为您提供解决方法。  

    马丁

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

    广告1. 是否可以通过选择单核器件(例如TMS320F2.8379万S)来欺骗GUI作曲家? TMS320F2.8379万D的寄存器映射相同。 如果不能,是否可能将关键变量与TMS320F2.8379万S和TMS320F2.8379万D项目中的链接器命令文件中的地址绑定,然后提供单核.out文件? 我的设备将被预先编程,并且只使用UART来读取数据,因此GUI编写器只需要符号。

    广告2. 是的,您回答正确。 为了解决这一问题,我们做了还原tablica阵列。 我想关注连接问题-如果问题得到解决,我将编写自己的UARTMitor与SYS/BIOS的实现,以充分利用硬件并减少CPU的使用。 我们(实验室)正在构建一个由9个或更多转换器组成的矩阵,我的目标是构建一个调试工作站。 使用GUI可以选择独立的COM端口,但不能像在CCS中那样通过序列号绑定调试探测器。 调试探测器的成本很高;)我测试了一种可能性-在CCS中运行GUI应用程序。 CCS实例不受限制,因此我可以实现全部功能,但代价是RAM -独立应用程序~20 MB and CCS ~500 MB。 但你会同意,这不是它应该如何运作的:)

    广告 3此错误是否仅存在于GUI独立和在线的UART连接中? 我在CCS中使用GUI应用程序时没有遇到这种情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    回答1:是的,对于只与COM端口通信的UART连接,您应该能够使用单个设备配置。 如果使用了XDS连接,则无法执行此操作。  

    #2:我没有在C2000上尝试过,但有一个TI-RTOS模块已经实现了UART监视器    文档介绍了如何将其与GCv1结合使用,但是目标(又称固件)方面应该几乎相同。 当然,如果您愿意,您可以自由使用自己的实施。 协议非常简单。  

    通过更改提供自定义CCXML文件(dev.ti.com上尚未提供),您可以选择上载多个具有固定序列号的.CCXML文件(您需要使用CCS设置编辑器创建这些文件) 然后允许用户从固定列表中选择CCXML。 这需要一些javascript来控制此情况,但它与演示应用程序类似,可通过下面的链接获取。 但是,需要为这些特定的调试探测器预先编程序列号。 基于UART的解决方案将更加灵活。  

    问题3:我实际上希望独立版和CCS Desktop的行为完全相同,在线版本可能有点不同。 当您从GC在线导出应用程序(适用于CCS Desktop或单机版)时,也会导出小部件/后端组件,因此它们在当时是固定的。 联机使用最新版本。