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.

[参考译文] F28M36H33B2:GUI编辑器USB-UART监视器连接不工作

Guru**** 2589300 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/642395/f28m36h33b2-gui-composer-usb-uart-monitor-connection-not-workin

部件号:F28M36H33B2

我正在尝试通过USB-UART显示器将我的云GUI编辑器应用程序连接到目标。 我已将 Serial_Cmd_Monitor.h和.c文件添加到我的项目中,并在COM 4上的目标配置中添加了UART通信,我的USB连接到串行适配器。 然后我将GUI编辑器应用程序配置为使用USB-UART并尝试连接。 我选择了COM 4,但它似乎要连接到COM 14,并且由于COM 14上没有任何内容而失败。 如何使其连接到COM 4? 我真的很难做到这一点,基于监视器的通信教程非常高级。 USB-UART显示器设置是否有更详细的Tut?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否确定选择了正确的COM端口? 在您的图片中,COM4的描述显示了Silicon Laboratories,这是操作系统从USB设备获取的字符串。 我会使用设备管理器检查您是否正在与正确的COM端口通话。 仅根据此屏幕中的信息捕获选择了错误的COM端口。

    如果不是问题,我会尝试确认您的显示器固件是否正常工作。 我找到的最好的方法是通过CCS Desktop来实现这一点,在这里,您可以模拟GUI Composer如何通过UART进行通信。 以下链接包含有关使用UART编程模型的更多信息。 wiki页面用于GCv1,但是,在JTAG和COM端口连接同时处于活动状态的情况下启动调试会话将是相同的。 目标固件和协议也相同。 主要区别在于如何构建GUI。 然后,您应该能够在表达式视图中选择UART连接或JTAG连接。请参阅相同的变量更新。 UART连接不提供完整的调试功能,因此您只能读/写存储器,这意味着表达式视图/存储器视图应该可以工作,但其他功能不多。

    processors.wiki.ti.com/.../ProgramModelUart_GuiComposer

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

    我使用的是Silicon Lab串行USB转换器,它连接到我的目标,根据我的设备管理器,它连接到COM4,这就是我选择COM 4的原因。 因此,它应该是正确的COM端口。  

    但是,如果我选择了COM4,无论它是否正确,为什么它要尝试连接到COM14?

    是的,我也在您发送的wiki中尝试了该示例,但仍然不起作用。 我将再次按照这些步骤操作并查看。  

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

    它可能正在尝试使用COM14,因为该COM端口上还有一些其它德州仪器(TI)的COM设备。 TI云代理是GUI Composer用于与器件通信的对象,它会根据选定的器件,调试探测器和操作系统提供的说明信息,尝试自动猜测正确的COM端口。 在这种情况下,它似乎是在猜测COM14。  

    当您处于项目属性中以及预览或运行应用程序时,它将尝试执行此操作。 我猜您正尝试在设计模式下通过项目属性将其设置为COM4。 但是,当您预览上述应用程序时,将再次触发检测逻辑。 根据您使用的项目模板,您可能需要添加"选项"菜单,以便您手动覆盖正在运行的应用程序中的COM端口设置。 从构件面板中,查找选项菜单并将其拖至"文件"或"编辑"菜单,然后预览应用程序。 这将打开一个新选项卡,使应用程序处于运行模式。 然后,您需要打开“选项”菜单,选择正确的COM端口,然后单击“配置”,该端口将断开连接并使用新的COM端口重新连接。  

    如果您正在执行不同的操作,请告诉我您要采取哪些步骤来查看问题。   

    马丁

     

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

    其它德州仪器(TI) COM器件位于COM6和7上。 根据设备管理器,COM14上没有任何内容。

    我添加了选项菜单并预览了应用程序,然后选择COM4,但仍然不起作用。 ASLO导出到CCS Desktop并从那里试用,不起作用。

    我还尝试通过在设备管理器中更改串行至USB转换器来强制将其置于COM14上。 GUI编写器仍显示错误:

    TICanloudAgent配置错误: Cortex_M3_0:无法初始化目标CPU:无法以9600波特打开COM14:打开:系统找不到指定的文件

    这是我对目标应用程序所做的操作,请您确认这是否正确,或者我是否错过了一些内容?

    • 1.我将2 个Serial_Cmd_Monitor (.c和.h)文件添加到我的项目中。 (文件已附加)
    • 我只更改了Write8bitByteToCOM函数以与我的目标UART连接:

    //覆盖这些取决于目标
    void Write8bitByteToCOM (无符号字符c)

    UARTCharPut (UART0_BASE,c);//由Albert添加
    // uartTxByte (c和0xff);
    }

    • 我在目标上配置了UART0并添加了函数ClearBufferRelatedParam():

    //----------------
    // UART0设置  
    //----------------
    //为11.52万 ,8-N-1操作配置UART。
    UARTConfigSetExpClk (UART0_BASE,SysClockGet (system_clock_speed),9600,
    (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
    UART_CONFIG_PAR_NONE));

    //启用UART中断。
    IntRegister (INT_UART0,UART0IntHandler);
    IntEnable (INT_UART0);
    UARTIntEnable (UART0_BASE,UART_INT_RX | UART_INT_RT);
    IntPrioritySet (INT_UART0,0x80);

    UARTFIFO启用(INT_UART0);
    UARTFIFO级别集(INT_UART0,UART_FIFO,TX4_8,UART_FIFO,RX1_8);

    //设置UART的485线路驱动器方向
    GPIOPinWrite (UART0_485_DIR_BASE,UART0_485_DIR_PIN,0);//设置为低(接收模式)

    ClearBufferRelatedParam();

    • 我有一个中断读取UART0并在 其中添加了receivedDataCommand函数:

    //*************************************************************************************************
    // UART0中断处理程序。
    //*************************************************************************************************

    void UART0IntHandler (void)

    未签名的long ulStatus;

    //获取中断状态。
    ulStatus = UARTINStatus (UART0_BASE,TRUE);


    while ( UARTCharsAvail(UART0_BASE ))

    receivedDataCommand (UART GetNonBlocking (UART0_BASE));
    }

    //清除断言的中断。
    UARTIntClear (UART0_BASE,ulStatus);
    }

    e2e.ti.com/.../Serial_5F00_Cmd_5F00_Monitor.ce2e.ti.com/.../Serial_5F00_Cmd_5F00_Monitor.h

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

    您好,Albert,  

    遗憾的是,我发现COM通信很难调试。 但是,当时需要修复固件的90 %。 例如,查看最近发布的此帖子,除大于16字节的块读取(例如,读取阵列时)外,显示器大部分工作正常。  

    我有一个建议是使用RealTerm之类的方法来尝试发送二进制值,因为GC或CCS会发送它们。 这应该可以从图中消除整个主机端的软件,因为您将直接与PC上的COM端口交互,并且可以专注于使固件正常工作。  

    例如。 我使用CCS Desktop启动调试会话,加载符号,然后打开模块视图。 然后,展开“全局符号”节点以查找全局变量以查找其内存地址。 i启动RealTerm以发送十六进制值(如以下POST中建议)

    例如,我首先连接到COM端口,然后切换到“发送”选项卡,输入 c1万ACC0,然后按“作为十六进制”按钮发送二进制请求。 在这种情况下,C1是初始标头字节,0000ACC0是要读取的地址的4个字节。 我还使用了连接到同一COM端口的Device Monitor Studio来验证我发送的内容是否正确,它还显示了显示器响应。  

    马丁

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

    你好,Martin

    我遵循了您的方法,我可以确认固件是否正常工作。 我使用RealTerm向地址0x2000.555万 (我的程序中的变量,值为01)和设备监视器发送读取命令,以查看响应是什么。 响应是C1 (报头)和值字节01。 然后,我将变量的值更改为0,并再次发送read命令进行双重检查,响应为C1和00。 请参阅随附的图片。 第一个字节00是目标应用程序在我启动设备时发送的,不知道它是否应该是这样的? 最后两个字节00,也是我重新启动设备时出现的。

    但是,根据Device Monitoring Studio,如果我使用USB-UART连接到GUI编写器应用程序,则COM端口上没有响应,根本没有数据流。

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

    您好,Albert,  

    我对延迟回复表示歉意。 您有没有尝试过通过CCS通过UART连接进行连接的实验? 它需要修改目标配置(即CCXML)文件以添加COM端口并为COM14配置它,这是上面屏幕截图中显示的内容。 如果这在CCS中有效,而同一COM端口在GC中不起作用,则我们可能需要安排WebEx呼叫以获取更多详细信息。  

    马丁

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

    你好,Martin

    是的,我也尝试过CCS。 我在配置文件中添加了com端口,并确保在调试窗口中选择UART连接。 它仍然不起作用。 但是,GUI没有红色的叉号图标,比如我选择了错误的连接时,但GUI上没有响应。 当我这样做的时候,我没有使用设备监视器工作室来检查是否有任何数据流动,但肯定没有通信。 我的目标设备当前正在使用中,我正在尝试另一个设备设置。

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

    您好,Albert,  

    实际上,我所想到的实验是有点不同的。 使用JTAG和UART连接配置CCS,启动调试会话,您需要在UART和JTAG连接中手动加载符号(即单击调试视图下的相应CPU),然后切换到JTAG并运行CPU。 在JTAG连接上添加一个您尝试在表达式视图中查看的全局变量(您可能需要单击表达式视图中的“连续刷新”工具栏按钮以查看其更新)。 现在,如果您在“调试”视图中单击基于UART的连接,则应在“表达式”视图中看到与JTAG相同的变量更新。 这将确认CCS和GC共享的其余调试堆栈是否正常工作。

    这是我会在LaunchPad上尝试的操作,但是我不确定是否可以在您的设备设置中使用相同类型的通信(通过JTAG和UART)。

    马丁

     

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

    好的,我终于能够按照您的描述进行测试。 我可以在与JTAG连接时看到变量更新,但在将连接更改为UART时,它不起作用。 我还尝试在GUI编写器应用程序中添加USB UART显示器,但JTAG也不想工作。

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

    你好,Martin

    我仍想解决这个问题。 你有什么建议吗? 我执行了如您所描述的测试,但仍无法与UART通信。

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

    您好,Albert,  

    这仍然让我相信这是某种固件问题。 是否有共享在C28上运行的目标代码的选项? 它可能是一个精简的示例,其中包括您的监控代码,也可能包括您的应用程序框架。 有一个选项可供您私下发送文件。  

    马丁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在2017年11月30日的帖子中,我发布了我添加到应用程序中的代码,以使UART显示器正常工作。 这还不够吗? 我可以尝试去除我的代码,如何私下发送文件?
    此外,您提到“您的目标代码在C28上运行”,我不在C28端运行UART监视器代码,我在协奏曲的M3核心上运行它,这有什么区别吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UART连接现在在CCS桌面视图中工作。 我已经重复了您的测试,但这次也加载了UART连接上的符号。 我错过了这一小步。 因此,我可以在CCS中通过UART连接看到GUI变量更新。 但是,在使用云GUI撰写器应用程序时,它仍然不起作用。 当我运行应用程序时,它似乎连接到设备,左下角显示"COM14:9600 Hardware Connected"(已连接COM14:9600硬件),但我的目标设备在连接后停止运行。 我还没有尝试从独立的应用程序连接UART,因为我在那里遇到了其他问题,我尝试用另一线程解决,但这是我最终想要做的。