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.

[参考译文] LP-XDS110:调试时文件加载失败

Guru**** 1624165 points
Other Parts Discussed in Thread: TM4C1294NCPDT, TM4C1294KCPDT, UCD3138, UNIFLASH, EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1336790/lp-xds110-file-load-failed-while-debugging

器件型号:LP-XDS110
主题中讨论的其他器件:TM4C1294KCPDTUNIFLASHEK-TM4C1294XL、TM4C1294NCPDT

你(们)好。

我使用 TM4C1294KCPDT 微控制器和 XDS110 USB 调试探针进行调试。 目前、我面临以下问题

Cortex_M4_0:文件加载程序:验证失败:地址0x00007F80处的值不匹配请验证目标内存和内存映射。
Cortex_M4_0:GEL:file:D:\ACP Workspace\28-02-24 1.5V_law_Master_RV1.5\Debug\law_Master_RV1.5.out:发生数据验证错误、文件加载失败。

我如何才能找到该问题的根本原因。 请 尽快解决此问题。

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

    您好!

     -您可以在其他电路板上重复同样的问题吗?

     -我有时看到了这个错误,但通常在下电上电或重置后,错误将在第二次尝试后消失。

     -你的错误是永久性的吗?

     -在您看到这个错误之前,您已经成功使用了多少年了?

     -发生错误时芯片是否很热?

     -您能解锁设备吗? 请参阅此应用手册中关于使用 dbgjtag.exe https://www.ti.com/lit/pdf/spma075的第5.3.2节。可以使用以下命令。

      " dbgjtag.exe–f @xds110–Y UNLOCK、MODE=Tiva"

      

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

    您可以在其他电路板上重复同样的问题吗?

    我有时看到过此错误、但通常在下电上电或复位后、该错误会在第二次尝试后消失。

    不,它一直来了

     您的错误是否永久存在?

     查看此错误前、您成功使用此芯片多长时间了?

    始终成功运行

     发生错误时芯片是否很热?

    芯片未发热。

    注:

    实际上、我正在我的项目中执行引导加载程序序列。 最初、我将在1.5版固件中设置地址范围。

    首次成功调试时。 如果我修改另一个 具有相同地址范围的固件(1.7版)、它没有进行调试。 它显示以下错误。

    Cortex_M4_0:GEL 输出:
    存储器映射初始化完成
    Cortex_M4_0:文件加载程序:验证失败:地址0x00007F80处的值不匹配请验证目标内存和内存映射。
    Cortex_M4_0:GEL:file:D:\ACP Workspace\version 1.13\law_Master\Debug\law_Master.out:发生数据验证错误、文件加载失败。

    我的问题是

    1.首先,我把地址范围设置为1.5版本,成功调试

    2.我修改了1.7版本的固件,地址范围和不调试相同。

    我的要求是

    1.如何避免以下错误

    Cortex_M4_0:文件加载程序:验证失败:地址0x00007F80处的值不匹配请验证目标内存和内存映射。

    2.如何禁用像上述错误一样的地址比较选项?

    请告诉我我我不想比较地址,我需要禁用比较  地址,如地址0x00007F80的值不匹配.   我想调试相同地址范围的1.7版本。

    因此,请指导我解决这个错误.

    提前感谢。

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

    1.首先,我把地址范围设置为1.5版本,成功调试

    2.我修改了1.7版本的固件,地址范围和不调试相同。

    [/报价]

    1.5和1.7有什么区别? 这两者之间的.cmd 文件是否相同?

    您可以在另一个定制板上重复同样的问题吗?

    您可以在 LaunchPad 上重复同样的问题吗?

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

    1.5和1.7有什么区别? 这两者之间的.cmd 文件是否相同?

    我对固件进行了一些更改、但不是按引导顺序进行的。 在步进、BLDC 电机序列等其他序列中完成的修改。

    注意:实际上它 是一个完整的电机固件。 我在电机序列中仅对引导加载程序序列进行了一些更改。

    您可以在另一个定制板上重复同样的问题吗?

    是的、我尝试了一些其他电路板、但无法调试。

    您可以在 LaunchPad 上重复同样的问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我对固件进行了一些更改,但不是按启动顺序进行的。 [/报价]

    您是否正在使用引导加载程序? 你说的引导顺序是什么意思?

    您可以展示您的.cmd 文件吗?

    您可以查看.map 文件并比较工作和不工作的版本吗? 映射文件应提供一些提示。  

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

    您是否正在使用引导加载程序? 你说的引导顺序是什么意思?

    这是 UCD3138中的引导  

    if ((address = 0xff))
    {

    UARTIntEnable (UART3_BASE、UART_INT_RX | UART_INT_RT);// UART 3仅启用引导加载程序用途
    boot_loading();//禁用除 UART 3之外的所有中断

    您可以查看.map 文件并比较工作和不工作的版本吗? 映射文件应提供一些提示。

    首先、我调试1.5版本。 已成功调试。

    接下来、我尝试调试1.7版本、但不进行调试。

    然后、检查并验证 Uniflash 软件。 它显示以下错误。  

    我在 uniflash 中打开存储器 ma、其中存储器从  0x00004000不匹配、此地址。

    请告诉我如何解决此问题。 我试图传达 我的问题,如果你需要更多的信息,请告诉我。

    非常感谢您的支持。 继续支持我们。

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

    1.5和1.7版本的.cmd 文件在哪里?

    您是否看过.map 文件?区别是什么?

    您一直说它在调试模式下无法正常工作? 它在运行模式下工作吗(未连接调试器?)

    工作版本的存储器屏幕截图从0x4000开始?

    如果您的应用程序将驻留0x4000、那么您应该将矢量表位于0x4000? 您的屏幕截图似乎没有正确的矢量表。

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

    感谢您的观看。

    1.5和1.7版本的.cmd 文件在哪里?

    这是1.5和1.7 .cmd 文件之间的差异。

    您是否看过.map 文件?区别是什么?

    此外、在比较两个文件时也存在一些差异。

    您一直说它在调试模式下无法正常工作? 它在运行模式下工作吗(未连接调试器?)

    如果没有调试器、则已成功构建。 但不用于调试。

    工作版本的存储器屏幕截图从0x4000开始?

    这是   工作版本从0x4000开始的内存的屏幕截图。

    请指导我 如何在此阶段找到错误。

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

    哪个是工作的 cmd 文件?

    由于我目前不在办公室出差、请在周三之前等待回复。  

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

    感谢您的回复。

    由于我目前不在办公室出差、请在周三之前等待回复。  

    没问题没有问题。

    哪个是工作的 cmd 文件?

    感谢您问这个问题。 让我解释一下。

    实际上、在 v1.5的 cmd 中、   

    --retain=g_pfnVectors

    内存
    {
    FLASH (RX):origin = 0x00000000,length = 0x00080000
    SRAM (rwx):origin = 0x20000000、length = 0x00040000

    我的问题是、我无法谈论1.7版。 在 V1.5版本相同的版本中、首先我更改了地址范围、

    在我第一次更改此地址进行调试后、没有问题。 一旦我在第二次调试时停止调试器、版本是同样的 v1.5 (不是 v1.7)。

    我需要解决方案为什么它没有第二次调试(同一版本). 它 显示以下弹出窗口。

    希望 您理解我的问题。 如果您需要任何信息、请告诉我。 感谢您的快速响应。

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

    您好!

     现在、我要查看您的1.7V cmd 文件。 您的引导加载程序从0x7F000而不是0x0开始的原因。 引导加载程序应从0x0开始、并且您的应用程序应从满足两个要求的地址偏移开始。 1) 1)应用程序偏移地址必须是1KB 的倍数;2)应用程序偏移量必须位于16KB 的闪存页边界处。 我强烈建议您尝试 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_serial 中的引导加载程序示例、以及随引导加载程序一起位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo\boot_demoplexamples\中的示例应用。 按原样运行这些示例以了解引导加载程序的工作原理。 boot_serial 是从0x0开始的引导加载程序、而 boot_demo1应用程序从0x4000开始、位于16kB 页边界。 如果应用程序没有从闪存页边界启动、那么您可能会误擦除闪存。 例如、如果您在0x2000 (8kB 边界)启动应用程序、然后当您擦除闪存时、它将擦除从0x0到0x3FFF 的整个闪存页。 最初驻留在闪存开头的内容、例如引导加载程序(从0x0开始)将被擦除。 为你所面临的类似原因。 在任何情况下、您都应该查看 TivaWare 引导加载程序并根据您的应用要求进行调整。 如果您对 TivaWare 引导加载程序示例有任何疑问、可以发布问题。 同样、首先按原样运行引导加载程序示例、在您使其正常运行并了解其应该如何运行之前、不要进行修改。  

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

    感谢您的宝贵答复。 我将尝试 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_serial 和引导加载程序随附的示例应用程序、位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo1。

    您的引导加载程序为何从0x7F000而不是0x0开始?

    引导加载程序的最大代码大小为4K 字节。 CBL 需要128K 字节的 RAM 大小来接收将从 GUI 接收的新闪存代码以及用于内部变量

    闪存块大小:0x4000 (16KB)。 可擦除或编程的最小大小

    定制引导加载程序应加载到指定的地址0x7F000

    这就是使用0x7F000的原因。

    这在 tm4c1294kcpdt.cmd 文件中是否有任何错误? 请推荐我。

    谢谢!

     

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

    您好!

    引导加载程序的最大代码大小为4K 字节。

    您的引导加载程序可能只占用4K、但闪存页为16K。 闪存是逐页擦除的。 您的引导加载程序将占用从0x7C000至0x7FFFF 的应用程序相同页面。 如果引导加载程序发送一条擦除应用程序的命令、它将擦除从 0x7C000到0x7FFFF 的整个页面、包括引导加载程序本身。  

    TivaWare 引导加载程序从0x0开始。 复位后、处理器从引导加载程序所在的0x0运行。 引导加载程序将确定是否存在有效的应用程序。 例如、应用程序可驻留在0x4000。  如果0x4000处存在有效的应用程序、引导加载程序将跳转至该应用程序并运行该应用程序。 如果没有应用或引导加载程序被指示根据引脚输入更新固件、引导加载程序将使用所选接口(如 UART、SPI 或其他接口)加载应用固件。 应用程序在运行后、如果需要再次更新应用程序、可以跳回引导加载程序。  引导加载程序的基本工作方式。 我不知道为什么引导加载程序必须在闪存的末尾而不是闪存的开头。 您可以自行决定、但您需要创建自定义引导加载程序、而不是引用现有的引导加载程序示例。 如果选择使用自己的自定义引导加载程序、则必须让引导加载程序占用最后16kB、而不仅仅是4kB。 您必须指示自定义引导加载程序不要擦除最后一个16kB 闪存页、这样引导加载程序就不会被擦除。  

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

    你(们)好。

    谢谢!

    我尝试了"自定义引导"加载、从4KB 到16KB。我进行了以下更改

    我更改了 tm4c1294kcpdt.cmd 文件。

    我更改了地址、也是针对16KB。

    但这次我遇到了不同的错误、比如、当我更改任何修改时、验证失败对话框不打开。 这次调试器进入故障 ISR。

    然后我打开调试器窗口、单击"XDS110 Debug (正在运行)"。 然后、我按"暂停"按钮、它会进入故障 ISR 模式。

    我已 循序渐进地处理了你在上述答复中所说的话。  它会进入故障 ISR 模式。

    请建议我在此阶段可以做些什么。

    非常感谢您的巨大支持。

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

    你(们)好。

    谢谢!

    我尝试了"自定义引导"加载、从4KB 到16KB。我进行了以下更改

    我更改了 tm4c1294kcpdt.cmd 文件。

    我更改了地址、也是针对16KB。

    但这次我遇到了不同的错误、比如、当我更改任何修改时、验证失败对话框不打开。 这次调试器进入故障 ISR。

    然后我打开调试器窗口、单击"XDS110 Debug (正在运行)"。 然后、我按"暂停"按钮、它会进入故障 ISR 模式。

    我已 循序渐进地处理了你在上述答复中所说的话。  它会进入故障 ISR 模式。

    请建议我在此阶段可以做些什么。

    非常感谢您的巨大支持。

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

    我尝试了"自定义引导"加载、从4KB 到16KB。我进行了以下更改

    [/报价]

    您的 FLASH_bootloader 从0x7F000开始、长度为0x4000 (16k)。 长度应为0x1000 (4K)。 您不能将 TivaWare 引导加载程序用作参考是否有充分的原因? 我强烈建议您使用 TivaWare 引导加载程序或至少尝试使用它来了解其工作原理、如果您需要适应您对不同起始引导加载程序地址的要求、则可以这样做。  

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

    好的,谢谢

    请参阅任何设置与我的查询相关的存储器地址的示例。 我对如何为引导加载程序项目选择存储器地址感到困惑。  请给我发送链接。

    谢谢

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

    我不理解您的问题。 如前所述、引导加载程序示例位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_serial、随附的示例应用位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo1。 您是否试用过此示例?

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

    是的, 我尝试过,但我在运行在该代码时遇到了一些问题

    在该代码中、存储器

    内存
    {
    Flash (RX):origin = 0x00000000,length = 0x00010000
    SRAM (rwx):origin = 0x20000000、length = 0x00010000

    1. 在我做了任何修改后、调试器进入故障 ISR 模式。 在尝试时、我同样遇到了调试问题。

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

    您好!

     我知道错误的原因。 该示例是为支持1MB 闪存和256KB SRAM 的器件创建的。  对于示例应用程序 boot_deme1、对于 TM4C1294KNCPDT、您必须将闪存长度更改为512KB。 如前所述、我强烈建议您首先在 LaunchPad 上运行该示例、该 LaunchPad 的 TM4C1294NCPDT 处理器支持 1MB。 首先在 LaunchPad 上运行、没有要修改的内容。 一旦开始工作、您就可以通过更改.cmd 来进行调整、以便您可以在自定义电路板上使用  TM4C1294KNCPDT 运行。

    请参阅 boo _demo1_ccs.cmd 中的以下必要更改:

    发件人:

    /* The starting address of the application. Normally the interrupt vectors */
    /* must be located at the beginning of the application. */
    #define APP_BASE 0x00004000
    #define RAM_BASE 0x20000000/* System memory map */

    MEMORY
    {
    /* Application stored in and executes from internal flash */
    FLASH (RX) : origin = APP_BASE, length = 0x000fc000
    /* Application uses internal RAM for data */
    SRAM (RWX) : origin = 0x20000000, length = 0x00040000
    }

    至:

    /* The starting address of the application. Normally the interrupt vectors */
    /* must be located at the beginning of the application. */
    #define APP_BASE 0x00004000
    #define RAM_BASE 0x20000000/* System memory map */

    MEMORY
    {
    /* Application stored in and executes from internal flash */
    FLASH (RX) : origin = APP_BASE, length = 0x0007c000
    /* Application uses internal RAM for data */
    SRAM (RWX) : origin = 0x20000000, length = 0x00040000
    }

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

    感谢您发送编修。

    非常感谢你的评分