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/TM4C123GH6PGE:targetConfig中的错误-如何解决?

Guru**** 2763595 points

Other Parts Discussed in Thread: TM4C123GH6PGE, TMDSEMU110-U, ADS1248

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/659444/ccs-tm4c123gh6pge-error-in-targetconfig---how-to-resolve

部件号:TM4C123GH6PGE
主题中讨论的其他部件: TM4C123TMDSEMU110-UADS1248

工具/软件:Code Composer Studio

我继承了TM4C123GHPGE的Tivaware项目。  此项目在另一台开发人员计算机上生成,加载和运行。   我无法访问该开发人员或机器。   我在另一个目录中有一个项目和源代码的副本。  我已经修复了不少损坏的包括指向tivaware软件的路径,并在调试模式下成功构建了代码,但是...   

1)即使 编译和链接成功(无错误),我也会收到一个对话框"Errors existen in required project (所需项目中存在错误)"。   问题1是targetConfig文件夹上的'red x'-我认为这是CCS在目标上加载程序之前抱怨的错误。   我打开了文件夹,发现两个*.CCXML文件,其中一个文件处于活动状态。   我打开文件,看不到任何不合适的内容。   由于它看起来是生成的,我删除了文件,然后CCS在指定设备和仿真器后生成了一个新的文件。   尝试几次并单击重试,我进入'继续'。  单步进起作用,然后最终出现错误,例如 “0x100.1024万”没有源代码。  当在Init()函数中对给定行执行步进时,不会一致发生。   控制台窗口如下所示:

Cortex_M4_0:凝胶输出:
内存映射初始化完成

Cortex_M4_0:连接到目标时出错:发生调试端口错误。
Cortex_M4_0:连接到目标时出错:发生调试端口错误。
Cortex_M4_0:连接到目标时出错:发生调试端口错误。
Cortex_M4_0:无法单步目标程序:发生调试端口错误。
Cortex_M4_0:错误:发生调试端口错误。
Cortex_M4_0:无法运行目标CPU:发生调试端口错误。
Cortex_M4_0:错误:发生调试端口错误。
Cortex_M4_0:错误:发生调试端口错误。
Cortex_M4_0:无法运行目标CPU:发生调试端口错误。
Cortex_M4_0:错误:发生调试端口错误。
Cortex_M4_0:错误:发生调试端口错误。
Cortex_M4_0:无法运行目标CPU:发生调试端口错误。
Cortex_M4_0:错误:发生调试端口错误。

仿真器是用于TIVA的MikroProg,我没有看到MikroProg的连接,而是使用以前的开发人员所拥有的- Stellaris在线调试接口。   

关于'修复' targetConfig的任何建议?  

是否有更好更稳定的仿真器?   

我是否做了正确的事情,将文件吹走并创建新文件?  这修复了项目中targetConfig文件夹上的红色x,但我对'工作程序'没有任何乐趣。    

我有以前开发人员使用的准确设置,如果存在一些神秘隐藏设置,我不想尝试从头开始重新创建工作项目。   有工作仪器运行此代码-除了项目位于不同的目录中(是的,我执行了一个导入项目,然后修复了一堆到tivaware的硬路径)。

提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是一些后续操作结果和程序:

    注:在程序崩溃后,MikroProg没有链路指示灯。

    退出CCS,拔下USB调试器,关闭并重新打开板载电源,插入USB调试器,启动CCS

    运行->调试导致加载失败,控制台如下所示:
    Cortex_M4_0:凝胶输出:
    内存映射初始化完成
    Cortex_M4_0:错误:发生调试端口错误。
    Cortex_M4_0:在长度0x4的第0页0x400fd008处写入内存块时出现问题:发生调试端口错误。
    Cortex_M4_0:闪存编程器:当前擦除选项无效;请尝试更改选项以擦除整个闪存或按地址范围。 目标写入0x400FD008失败
    Cortex_M4_0:写入寄存器PC时出现问题:目标未停止或在步骤后无法停止。
    Cortex_M4_0:文件加载器:内存写入失败:目标写入寄存器PC失败
    Cortex_M4_0:Gel:文件:C:\Users\TM.She\Dropbox \prj\workspace_CCS _v7\SeaFET_SeapHOx_IP.7\Debug\SeaFET_SeapHOx_O 3.0 .Out 3.0 :加载失败。
    Cortex_M4_0:错误:发生调试端口错误。
    Cortex_M4_0:系统重置失败

    再次运行->调试
    出现“Error connecting to target”(连接到目标时出错)调试端口错误的对话框。
    点击'重试'-再次显示相同的对话框
    HIT 'Retry'-程序现在加载,断点在main()中处于预期的初始卷。 控制台如下所示:
    Cortex_M4_0:凝胶输出:
    内存映射初始化完成
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。

    步入
    步入Init()
    一步一步,多走几步,工作正常。 设置断点以跳过某些GPIO设置,工作正常。
    将断点再次设置为更低的几行并失败-没有源可用于“0x100.1024万”。
    100.1024万:3801 次级方案 R0,#1
    100.1026万:D1FD BNE #0x100.1024万

    控制台如下所示:
    Cortex_M4_0:凝胶输出:
    内存映射初始化完成
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。
    Cortex_M4_0:错误:发生调试端口错误。
    Cortex_M4_0:错误:发生调试端口错误。

    重试:

    终止
    run->Debug加载了程序,但没有到达main()。 控制台:
    Cortex_M4_0:凝胶输出:
    内存映射初始化完成
    Cortex_M4_0:错误:发生调试端口错误。
    Cortex_M4_0:无法运行目标CPU:发生调试端口错误。
    Cortex_M4_0:错误:发生调试端口错误。
    Cortex_M4_0:错误:发生调试端口错误。

    重试:
    终止
    运行->调试失败“加载程序错误”加载失败。 控制台如下所示:
    Cortex_M4_0:凝胶输出:
    内存映射初始化完成
    Cortex_M4_0:错误:发生调试端口错误。
    Cortex_M4_0:在长度0x4的第0页0x400fd008处写入内存块时出现问题:发生调试端口错误。
    Cortex_M4_0:闪存编程器:当前擦除选项无效;请尝试更改选项以擦除整个闪存或按地址范围。 目标写入0x400FD008失败
    Cortex_M4_0:写入寄存器PC时出现问题:目标未停止或在步骤后无法停止。
    Cortex_M4_0:文件加载器:内存写入失败:目标写入寄存器PC失败
    Cortex_M4_0:Gel:文件:C:\Users\TM.She\Dropbox \prj\workspace_CCS _v7\SeaFET_SeapHOx_IP.7\Debug\SeaFET_SeapHOx_O 3.0 .Out 3.0 :加载失败。

    注:MikroProg上的链路指示灯熄灭

    重试:
    CCS正在运行
    目标电源关闭
    拔下USB仿真器
    插入USB仿真器-链路指示灯亮起
    目标电源打开
    运行->调试"连接到目标时出错,发生调试端口错误"
    重试"连接到目标时出错,发生调试端口错误",出现相同错误
    重试"连接到目标时出错,发生调试端口错误",出现相同错误
    重试程序现已成功加载,在main()的开头处有断点注:MikroProg上的链路指示灯熄灭
    步入-工作正常
    步入-工作正常,现在在Init.c和Init()中
    每步超过27次,每次成功,然后失败-没有"0x100.1026万"可用的源
    100.1024万:3801 次级方案 R0,#1
    100.1026万:D1FD BNE #0x100.1024万

    控制台如下所示:
    Cortex_M4_0:凝胶输出:
    内存映射初始化完成
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。
    Cortex_M4_0:连接到目标时出错:发生调试端口错误。
    Cortex_M4_0:读取寄存器SP时出错:发生调试端口错误。
    Cortex_M4_0:无法单步目标程序:发生调试端口错误。
    Cortex_M4_0:错误:发生调试端口错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    新建targetConfig:
    <?xml version="tal" 1.0 encoding="utf-8" standale="no"?>
    <configurations XML_version="configurations" 1.2 id="configurations_0">
    <configuration XML_version="configuration_0" 1.2 id="configuration_0">
    <instance XML_version="Stellaris" 1.2 desc="Stellaris在线调试接口" href="connections/Stellaris_ICDI_Connection.xml" id="Stellaris在线调试接口" xml="Stellaris _ICDI_Connection.xml" xmlpath="connections"/>
    <connection XML_version="Stellaris 1.2 " id="Stellaris在线调试接口">
    <instance XML_version="Stellaris_cs_dap.xml" 1.2 id="drivers" xml="Stellaris_cs_dap.xml" xmlpath="drivers"/>
    <instance XML_version="Stellaris_cortex_m4.xml" 1.2 id="drivers" xml="Stellaris_cortex_m4.xml" xmlpath="drivers"/>
    <platform XML_version="platform_0"> 1.2
    <instance XML_version="TIVA 1.2 TM4C123GH6PGE" href="devices/tm4c123gh6pge.xml" id="TIVA TM4C123GH6PGE" xml="tm4c123gh6pge.xml" xmlpath="devices"/>
    </platform>

    </configuration>
    </configurations>

    旧的targetConfig (targetConfig文件夹上有一个红色x):
    <?xml version="tal" 1.0 encoding="utf-8" standale="no"?>
    <configurations XML_version="configurations" 1.2 id="configurations_0">
    <configuration XML_version="configuration_0" 1.2 id="configuration_0">
    <instance XML_version="Stellaris" 1.2 desc="Stellaris在线调试接口" href="connections/Stellaris_ICDI_Connection.xml" id="Stellaris在线调试接口" xml="Stellaris _ICDI_Connection.xml" xmlpath="connections"/>
    <connection XML_version="Stellaris 1.2 " id="Stellaris在线调试接口">
    <instance XML_version="Stellaris_cs_dap.xml" 1.2 id="drivers" xml="Stellaris_cs_dap.xml" xmlpath="drivers"/>
    <instance XML_version="Stellaris_cortex_m4.xml" 1.2 id="drivers" xml="Stellaris_cortex_m4.xml" xmlpath="drivers"/>
    <platform XML_version="platform_0"> 1.2
    <instance XML_version="TIVA 1.2 TM4C123GH6PGE" href="devices/tm4c123gh6pge.xml" id="TIVA TM4C123GH6PGE" xml="tm4c123gh6pge.xml" xmlpath="devices"/>
    </platform>

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

    我想我有一个MikroProgs储存在某处。 我记得它模仿基于FTI的Stellaris ICDI。 我会看看是否可以找到它并将它连接到TM4C123。

    对于这类设备,我通常会推荐一种较新的XDS110探头,如TMDSEMU110-U

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

    我找到了MikroProg。 我现在还记得这件事。 它有一个10引脚连接器,但它不是标准的皮质10引脚。 我用电线连接信号,并为MikroProg安装了驱动程序。 但是我不能让这件事发挥作用。

    您是否可以访问任何其他XDS探头? 您的主板上有哪种类型的调试接头?

    你比我走得更远。

    您看到的消息“No source available for "0x100.1026万"(没有可用的源代码)”表示PC所在位置的CCS没有源代码关联。 这是一个非常常见的消息,当您最终进入内核或库中时,它会一直发生。 如果有一些符号信息,我们通常会提示您要浏览的文件的名称,但如果您没有看到该信息,则该地址没有符号信息。

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

    John,

    感谢您的观看。  我认为我错误地将该问题标识为targetConfig问题(但仍然不确定),因为我猜该配置中的某个内容会使仿真器不稳定。   我在加载程序时遇到了很多麻烦,但昨晚成功加载了一个简单的程序,并且能够构建,加载,运行,停止检查变量,运行很长时间,停止和检查,并再次运行,没有任何问题。

    我已经购买了一个启动板,并计划购买另一个仿真器,因此感谢您的推荐。  它将有所帮助,因为我可以进行一些'A与B'比较,尝试缩小硬件问题,仿真问题或软件问题的范围。   我已经看过但没有完全阅读关于我如何访问FaultISR的AppNote,因为我也在基于tivaware的应用程序中看到过这种行为。   

    我是TIVA的新用户,所以我认为这是启动仪式的一部分。   我在CCS v 7.4 上,一直在与MSP430一起烹饪,最近还添加了ARM支架。   CCS在我的其他项目中也很出色。

    如果我知道发生了什么,我会发布跟进。

    谢谢!

    Thom

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

    您与TM4C123有多紧密联系? 我问的原因是,这方面的软件已经过时了。 如果您正在查找基于M4的设备,则以下其中一项可能起作用:

    dev.ti.com/.../

    dev.ti.com/.../

    dev.ti.com/.../

    这些MSP432器件也基于CortexM4,但它们受SimpleLink SDK支持。

    我不确定您对内存和外设的要求,但从开发角度来看,它们可能很适合您。 适用于这些设备的LaunchPad内置了XDS110。 也许您对123设计的投资太大,无法实现这一转变。

    此致,
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    短期内,我与TIVA紧密合作,因为我在FAB中有一些新硬件,这些硬件具有相同的芯片和交付期限(对于科学而言!) 几个月后。 长期而言,我们可能会考虑更换为新处理器。 现有的代码库自2014年起就已开始开发,并已有许多不同的开发人员,公司和机构参与其中。 海洋研究在串行端口上非常重要,因此8个UART非常令人兴奋! 我制作了一段视频,介绍了我正在进行的令人困惑的互动... https://youtu.be/JiAeYcUHWcE 我怀疑对时钟设置的反应会延迟(可能是???)。

    一个不带tivaware的简单程序构建了负载运行,并且可以在同一硬件上使用同一个仿真器调试。 当我切换到tivaware代码库(2.1 .4.178)时,我似乎无法通过init(),尽管在今天的会话中,当我步进时,在给定的行中出现了一致的失败。 当我进入或通过UARTEchoSet时,我找到了没有反汇编的'trap'代码,并在控制台中抛出调试端口错误。 如果我注释掉该行,则下一行(ROM_SYSCtl.)是下面代码中出现的位置,请参见-->。 它是在视频中捕获的。

    作废初始化(作废)

    //为中断处理程序启用延迟堆栈。 这允许浮点
    //在中断处理程序中使用的指令,但费用为2
    //额外的堆栈使用。
    ROM_FPULazyStackingEnable();

    //启用浮动
    ROM_FPUEnable();

    //设置系统时钟...50MHz
    ROM_SysClockSet(sysctl_SYSDIV_4| sysctl_use_PLL | sysctl_XTAL_16MHz | sysctl_OSC主);

    /***启用使用的GPIO端口***/
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOA);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOB);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_gpIOC);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOD);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOE);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOF);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOG);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOH);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOJ);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOK);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOL);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOM);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_gpion);
    ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOP);

    /***初始化控制台***/
    ROM_SysCtlPeripheralEnable(sysctl_Periph_UART0);
    ROM_GPIOPinConfigure(GPIO_PA0_U0RX);
    ROM_GPIOPinConfigure(GPIO_PA1_U0TX);
    ROM_GPIOPinTypeUART (GPIO_Porta_base,GPIO PIN_0 | GPIO PIN_1);
    UARTClockSourceSet (UART0_BASE,UART_CLARK_PIOSC);
    UARTStdioConfig (11.52万,1600万); // 11.52万位/秒

    // console_on引脚
    ROM_GPIOPinTypeGPIOOutput (GPIO_PORTL_BASE,GPIO PIN_0);
    ROM_GPIOPinWrite (GPIO _PORTL_BASE,GPIO _PIN_0,0xff); //设置引脚以打开控制台驱动程序

    -->//UARTEchoSet (true); //启用控制台echo Thon debug


    -->ROM_SysCtlDelay(millisond*100) ;
    // uprintf ("\n\n控制台已初始化");

    /***检索保存的sys_data变量***/
    retrieveSysDataVariables();


    /***将隔离ADS1248引脚初始化为GPIO,以降低功耗***/
    ROM_GPIOPinTypeGPIOOutput (GPIO _Porth_base,GPIO _PIN_0); // SSI3CLK
    ROM_GPIOPinWrite (GPIO_Porth_base,GPIO PIN_0,0x00);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Thom,

    我向您发送了一封私人邮件。 我真的想通过换用另一个探头来排除mikroprog是问题的根源。 在调试启动期间不断出现错误,您必须单击浏览,这让我担心探测器存在通信问题。 观看视频时,我还可以看到控制台在不同位置弹出错误。

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

    请告诉我XDS110的发展情况。 希望事情更加稳定。 如果不是这样,我们就知道问题不是由灭鼠造成的。

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

    您好,John:

    由于需要适配器,我还没有连接到XDS110,但是...   我确实开始浏览Init()函数的每一行,因为我怀疑有计时/PLL。  

    删除50MHz的PLL设置并将时钟树配置为16MHz主osc后,一切似乎都正常!

    然后,我以较慢的时钟频率重新加入PLL,从20MHz开始-应用程序随后工作正常。   然后,我用40MHz的速度撞过分隔器,工作正常!

    现在有一件奇怪的事情-我把代码放回到生成50MHz时的方式-应用程序工作正常!    我一直在尝试重现故障,但未能-仿真器中几乎没有任何其他更改,代码除了Init中注释的线路之外,也没有相同的电源。

    我正在考虑将其'关闭案例',我可能有一个板存在ESD问题或组件不重要。

    再次感谢您的支持和信息。

    Thom

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果感兴趣,下面是我在Init()中编辑时钟树设置所做的操作。 开始时出现了一个非常可重现的故障,在时钟树设置行之后会发生许多行,并会导致位置“0x100.1024万”处的陷阱
    100.1024万:3801 subs r0,#1
    100.1026万:D1FD bne #0x100.1024万

    这是我的初始化:

    作废初始化(作废)

    //为中断处理程序启用延迟堆栈。 这允许浮点
    //在中断处理程序中使用的指令,但费用为2
    //额外的堆栈使用。
    ROM_FPULazyStackingEnable();

    //启用浮动
    ROM_FPUEnable();

    //设置系统时钟...50MHz Thom的注释:不确定是PLL导致调试器出现问题,但这可能是对代码的解释,代码最终导致未记录的程序集陷阱,并且MikroProg仿真器处于需要重启的状态

    //以下行指定PLL (400MHz)和div为50MHz -此行似乎是代码崩溃的原因
    //ROM_SysClockSet(sysctl_SYSDIV_4| sysctl_use_pll | sysctl_XTAL_16MHz | sysctl_OSC主菜单);

    // Thom -清除PLL -这消除了代码崩溃和调试器挂起,但系统运行速度较慢(16MHz)
    //ROM_SysClockSet(sysctl_SYSDIV_4| sysctl_use_OSC | sysctl_XTAL_16MHz | sysctl_OSC主);

    //尝试使用PLL,但将时钟降低到20MHz -工作正常
    //ROM_SysClockSet(sysctl_SYSDIV_10| sysctl_use_pll | sysctl_XTAL_16MHz | sysctl_OSC主菜单);// 20MHz

    //尝试使用PLL,但将时钟降低到40MHz -工作正常
    //ROM_SysClockSet(sysctl_SYSDIV_5| sysctl_use_pll | sysctl_XTAL_16MHz | sysctl_OSC主菜单);// 40MHz

    //尝试在50MHz的频率下使用PLL -奇怪的是,这是我们开始使用的同一个地方,现在这个就可以了! 可能主板上有不正确的电气或旁路问题?
    ROM_SysClockSet(sysctl_SYSDIV_4| sysctl_use_PLL | sysctl_XTAL_16MHz | sysctl_OSC主);