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/MSP430FR5969:文件加载器:数据验证失败。 请验证目标内存和内存映射。

Guru**** 2609955 points
Other Parts Discussed in Thread: MSP430FR5969, MSP430FR5967

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/648591/ccs-msp430fr5969-file-loader-data-verification-failed-please-verify-target-memory-and-memory-map

器件型号:MSP430FR5969
主题中讨论的其他器件: MSP430FR5967

工具/软件:Code Composer Studio

大家好、我在 MSP430FR5969 Launchpad 上进行编程。 launchpad 以前工作良好、但突然、它加载文件时出现问题。 我已经使用简单的示例代码"闪烁 LED"进行测试、但是我一直遇到如下错误:MSP430:文件加载程序:验证失败:地址0x04400处的值不匹配请验证目标存储器和存储器映射。
MSP430:GEL:文件:C:\Users\aeg\Desktop\TRV 部件工程图\Debug\Blblink _ccs.out:发生数据验证错误、文件加载失败。

我尝试在网上找到相关信息、也许链接器命令文件需要修改存储器映射、但我不知道如何操作。

我使用"快速访问"打开"存储器映射"、但它是一个空白窗口。 我下载了 SYS/BIOS、但在 TI Resource Explorer 中看不到它。

默认情况下、这是我的 lnk_msp430fr5969.cmd 文件、我使用的 IDE 是 CCS v7:

非常感谢您的帮助!

存储器

   SFR                    :origin = 0x0000、length = 0x0010
   外设_8位       :origin = 0x0010、length = 0x00F0
   peripherals_16BIT      :origin = 0x0100、length = 0x0100
   RAM                    :origin = 0x1C00,length = 0x0800
   INFOA                  :origin = 0x1980,length = 0x0080
   INFOB                  :origin = 0x1900,length = 0x0080
   INFOC                  :origin = 0x1880,length = 0x0080
   INFOD                  :origin = 0x1800,length = 0x0080
   FRAM                   :origin = 0x4400,length = 0xBB80
   FRAM2                  :origin = 0x10000、length = 0x4000
   JTAGSIGNATURE          :origin = 0xFF80,length = 0x0004,fill = 0xFFFF
   BSLSIGNATURE           :origin = 0xFF84,length = 0x0004,fill = 0xFFFF
   IPESIGNATURE           :origin = 0xFF88,length = 0x0008,fill = 0xFFFF
   INT00                  :origin = 0xFF90,length = 0x0002
   INT01                  :origin = 0xFF92,length = 0x0002
   INT02                  :origin = 0xFF94,length = 0x0002
   INT03                  :origin = 0xFF96,length = 0x0002
   INT04                  :origin = 0xFF98,length = 0x0002
   INT05                  :origin = 0xFF9A,length = 0x0002
   INT06                  :origin = 0xFF9C,length = 0x0002
   INT07                  :origin = 0xFF9E,length = 0x0002
   INT08                  :origin = 0xFFA0、length = 0x0002
   INT09                  :origin = 0xFFA2、length = 0x0002
   INT10                  :origin = 0xFFA4、length = 0x0002
   INT11                  :origin = 0xFFA6、length = 0x0002
   INT12                  :origin = 0xFFFA8、length = 0x0002
   INT13                  :origin = 0xFFAA、length = 0x0002
   INT14                  :origin = 0xFFAC,length = 0x0002
   INT15                  :origin = 0xFFAE、length = 0x0002
   Int16                  :origin = 0xFFB0,length = 0x0002
   INT17                  :origin = 0xFFB2、length = 0x0002
   INT18                  :origin = 0xFFB4,length = 0x0002
   INT19                  :origin = 0xFFB6、length = 0x0002
   INT20                  :origin = 0xFFB8、length = 0x0002
   INT21                  :origin = 0xFFBA,length = 0x0002
   INT22                  :origin = 0xFFBC,length = 0x0002
   INT23                  :origin = 0xFFBE,length = 0x0002
   INT24                  :origin = 0xFFC0,length = 0x0002
   INT25                  :origin = 0xFFC2,length = 0x0002
   INT26                  :origin = 0xFFC4,length = 0x0002
   INT27                  :origin = 0xFFC6,length = 0x0002
   INT28                  :origin = 0xFFC8,length = 0x0002
   INT29                  :origin = 0xFFCA,length = 0x0002
   INT30                  :origin = 0xFFCC,length = 0x0002
   INT31                  :origin = 0xFFCE、length = 0x0002
   int32                  :origin = 0xFFD0,length = 0x0002
   INT33                  :origin = 0xFFD2,length = 0x0002
   INT34                  :origin = 0xFFD4,length = 0x0002
   INT35                  :origin = 0xFFD6、length = 0x0002
   INT36                  :origin = 0xFFD8,length = 0x0002
   INT37                  :origin = 0xFFDA,length = 0x0002
   INT38                  :origin = 0xFFDC,length = 0x0002
   INT39                  :origin = 0xFFDE,length = 0x0002
   INT40                  :origin = 0xFFE0,length = 0x0002
   INT41                  :origin = 0xFFE2,length = 0x0002
   INT42                  :origin = 0xFFE4,length = 0x0002
   INT43                  :origin = 0xFFE6,length = 0x0002
   INT44                  :origin = 0xFFE8、length = 0x0002
   INT45                  :origin = 0xFFEA,length = 0x0002
   INT46                  :origin = 0xFFEC,length = 0x0002
   INT47                  :origin = 0xFFEE,length = 0x0002
   INT48                  :origin = 0xFFF0,length = 0x0002
   INT49                  :origin = 0xFFF2,length = 0x0002
   INT50                  :origin = 0xFFF4,length = 0x0002
   INT51                  :origin = 0xFFF6、length = 0x0002
   INT52                  :origin = 0xFFF8,length = 0x0002
   INT53                  :origin = 0xFFFA,length = 0x0002
   INT54                  :origin = 0xFFFC,length = 0x0002
   复位                  :origin = 0xFFFE,length = 0x0002


/ /
/*指定段分配到内存                             中*/
/ /

部分

   组(RW_IPE)
   {
       组(READ_WRITE_MEMORY)
       {
          .TI.persistent:{}/*             for #pragma PERSISTENT           */
          .cio          :{}//* C             I/O 缓冲器                     */
          .sysmem       :{}/*             动态内存分配区域   */
       } PALIGN (0x0400)、RUN_START (fram_rw_start)

       组(IPENCAPSULATED_MEMORY)
       {
          .ipestruct    :{}             /* IPE 数据结构               */
          .ipe          :{}//*             IPE                              */
          .ipe_const    :{}             /* IPE 受保护常量          */
          .ipe:_isr     :{}             /* ipe isr                         */
          .ipe_vars     :type = NOINIT{}/* IPE 变量                    */
       } PALIGN (0x0400)、RUN_START (fram_IPE_START) RUN_END (fram_IPE_END) RUN_END (fram_Rx_START)
   }> 0x4400

   .cinit           :{} > FRAM         /*初始化表            */
   .pinit           :{}> FRAM         /* C++构造函数表           */
   binit           :{}> FRAM         /*启动时初始化表  */
   init_array      :{} > FRAM         /* C++构造函数表           */
   .mspabi.exidx    :{} > FRAM         /* C++构造函数表           */
   .mspabi.extab    :{} > FRAM         /* C++构造函数表           */
#ifndef __large_data_model__
   .const           :{}> FRAM          /*常量数据                    */
其他
   .const           :{}>> FRAM | FRAM2/* 常量数据                    */
#endif

   .text:_ISR       :{} > FRAM         //代码 ISR                        */
#ifndef __large_code_model__
   .text            :{}> FRAM          /*代码                             */
其他
   .text            :{}>> FRAM2 | FRAM /*代码                             */
#endif
#ifdef __TI_Compiler_version__
 #if __TI_Compiler_version__>=15009000
   #ifndef __large_code_model__
   .TI.ramfunc:{} load=FRAM、run=RAM、table (BINIT)
   其他
   .TI.ramfunc:{} load=FRAM | FRAM2、run=RAM、table (BINIT)
   #endif
 #endif
#endif

   .jtagsignature:{}> JTAGSIGNATURE/*    JTAG Signature                   */
   bslsignature :{}> BSLSIGNATURE     /* BSL Signature                    */

   组(signature_SHAREDMEMORY)
   {
       ipesignature :{}/*                IPE Signature                    *//
       .jtagpassword :{}                /* JTAG 密码                    */
   }> IPESIGNATURE

   .bss       :{}> RAM                 /*全局和静态变量             */
   .data      :{}>RAM                 /*全局和静态变量             */
   .TI.noinit :{}>RAM                 /* for #pragma noinit               */
   .stack     :{}> RAM (高)          /*软件系统堆栈            */

   infoA (空载):{}>INFOA             /* MSP430 INFO FRAM 内存段*/
   infoB (空载):{}>infoB
   .infoC (空载):{}> INFOC
   infoD (空载):{}> infod

   /* MSP430中断矢量         */
   .int00      :{}>int00               
   .int01      :{}>INT01               
   .int02      :{}>INT02               
   .int03      :{}>INT03               
   .int04      :{}>INT04               
   .int05      :{}>INT05               
   .int06      :{}>INT06               
   .int07      :{}>INT07               
   .int08      :{}>INT08               
   .int09      :{}>INT09               
   .int10      :{}>int10               
   .int11      :{}>int11               
   .int12      :{}>int12               
   .int13      :{}>int13               
   .int14      :{}>int14               
   .int15      :{}>INT15               
   .int16      :{}>int16               
   .int17      :{}>INT17               
   .int18      :{}>INT18               
   .int19      :{}>INT19               
   .int20      :{}>INT20               
   .int21      :{}>INT21               
   .int22      :{}>INT22               
   .int23      :{}>INT23               
   .int24      :{}>INT24               
   .int25      :{}>INT25               
   .int26      :{}>INT26               
   .int27      :{}>INT27               
   .int28      :{}>INT28               
   .int29      :{}>INT29               
   AES256      :{*(.int30)}> INT30类型= VECT_INIT
   RTC         :{*(.int31 )}> INT31类型= VECT_INIT
   Port4       :{*(.int32 )}> int32 type = VECT_init
   PORT3       :{*(.int33 )}> INT33 TYPE = VECT_INIT
   TIMER3_A1   :{*(.int34 )}> INT34 TYPE = VECT_INIT
   TIMER3_A0   :{*(.int35 )}> INT35 TYPE = VECT_INIT
   端口2       :{*(.int36 )}> INT36类型= VECT_INIT
   TIMER2_A1   :{*(.int37 )}> INT37 TYPE = VECT_INIT
   TIMER2_A0   :{*(.int38 )}> INT38 TYPE = VECT_INIT
   Port1       :{*(.int39 )}> INT39 TYPE = VECT_INIT
   Timer1_A1   :{*(.int40)}> INT40 type = VECT_init
   Timer1_A0   :{*(.int41)}> INT41 type = VECT_init
   DMA         :{*(.int42 )}> INT42 type = VECT_init
   USCI_A1     :{*(.int43)}> INT43类型= VECT_INIT
   TIMER0_A1   :{*(.int44 )}> INT44 TYPE = VECT_INIT
   TIMER0_A0   :{*(.int45)}> INT45 type = VECT_INIT
   ADC12       :{*(.int46)}> INT46 TYPE = VECT_INIT
   USCI_B0     :{*(.int47 )}> INT47 TYPE = VECT_INIT
   USCI_A0     :{*(.int48)}> INT48 type = VECT_init
   WDT         :{*(.int49 )}> INT49类型= VECT_INIT
   TIMER0_B1   :{*(.int50 )}> INT50 TYPE = VECT_INIT
   TIMER0_B0   :{*(.int51 )}> INT51 TYPE = VECT_INIT
   Comp_E      :{*(.int52)}> INT52类型= VECT_INIT
   UNMI        :{*(.int53 )}> INT53 TYPE = VECT_INIT
   SYSNMI      :{*(.int54 )}> INT54 TYPE = VECT_INIT
   .reset      :{}              > reset /* MSP430 Reset vector        */


/ /
/* MPU/IPE 特定内存段定义                              */
/ /

#ifdef _IPE_ENABLE
  #define IPE_MPUIPLOCK 0x0080
  #define IPE_MPUIPENA 0x0040
  #define IPE_MPUIPPUC 0x0020

  //评估 IP 封装控制设置的设置
  #if defined (_IPE_ASSERTPUC1)
       #if defined (_IPE_LOCK)&&(_IPE_ASSERTPUC1 == 0x08)
        FRAM_IPE_ENABLE_VALUE =(IPE_MPUIPENA | IPE_MPUIPPUC |IPE_MPUIPLOCK);
       #elif defined (_IPE_LOCK)
        FRAM_IPE_ENABLE_VALUE =(IPE_MPUIPENA | IPE_MPUIPLOCK);
     #Elif (_IPE_ASSERTPUC1 = 0x08)
        FRAM_IPE_ENABLE_VALUE =(IPE_MPUIPENA | IPE_MPUIPPUC);
     其他
        FRAM_IPE_ENABLE_VALUE =(IPE_MPUIPENA);
     #endif
  其他
     #if defined (_IPE_LOCK)
        FRAM_IPE_ENABLE_VALUE =(IPE_MPUIPENA | IPE_MPUIPLOCK);
     其他
        FRAM_IPE_ENABLE_VALUE =(IPE_MPUIPENA);
     #endif
  #endif

  //段定义
  #ifdef _ipe_manual                 //用于在 GUI 中选择的自定义大小
     FRAM_IPE_Border1 =(_IPE_SEGB1>>4);
     FRAM_IPE_Border2 =(_IPE_SEGB2>>4);
  #else                          //链接器生成的自动大小
     FRAM_IPE_Border2 = fRAM_IPE_END >> 4;
     FRAM_IPE_Border1 = fRAM_IPE_START >> 4;
  #endif

  FRAM_IPE_SETTINGS_STRUCT_ADDRESS = IPE_设置 结构>> 4;
  FRAM_IPE_CHECKSUM =~((fRAM_IPE_ENABLE_VALUE & fRAM_IPE_Border2 & fRAM_IPE_Border1)|(fRAM_IPE_ENABLE_VALUE &~fRAM_IPE_Border2 &~fRAM_IPE_ENABBorder1)|(~frAM_IPE_ENABLE_ENABLE_IPE_1和~FRAM_IPE_IPE_IPE_IPAM_Border1)|(~~FRAM_IPE_IPE_IPE_IPE_IPE_IPAM_IPE_IPE_IPAM_FRAM_IPE_IPE_IPE_IPE_1和 IPAM_IPAM_IPAM_Border1)
#endif

#ifdef _MPU_enable
  #define MPUPW (0xA500)   /* MPU 访问密码*/
  #define MPUENA (0x0001)  /* MPU 使能*
  #define MPULOCK (0x0002) /* MPU 锁定*/
  #define MPUSEGIE (0x0010)/* MPU 在段违反时启用 NMI */

  _MPU_ENABLE = 1;
  //段定义
  #ifdef _MPU_manual //用于在 GUI 中选择的自定义大小
     MPU_SEARD_Border1 =_MPU_SEGB1 >> 4;
     MPU_SEARD_Border2 =_MPU_SEGB2 >> 4;
     MPU_SAM_VALUE =(_MPU_SAM0 << 12)|(_MPU_SAM3 << 8)|(_MPU_SAM2 << 4)|_MPU_SAM1;
  #else //链接器生成的自动大小
     #ifdef _ipe_enable //如果项目中也使用 IPE
        //seg1 =任何读取+写入持久性变量
        //seg2 = IPE =读取+写入+执行访问
        //seg3 =代码、只读+只执行
        MPU_SEGM_Border1 = fRAM_IPE_START >> 4;
        MPU_SEGM_Border2 = fRAM_Rx_START >> 4;
        MPU_SAM_VALUE = 0x1573;// Info R、Seg3 RX、Seg2 rwx、Seg1 RW
     其他
        MPU_SEGM_Border1 = fRAM_Rx_START >> 4;
        MPU_SEGM_Border2 = fRAM_Rx_START >> 4;
        MPU_SAM_VALUE = 0x1513;// Info R、Seg3 RX、Seg2 R、Seg1 RW
     #endif
  #endif
  #ifdef _MPU_LOCK
     #ifdef _MPU_ENABLE_NMI
        MPU_ctl0_value = MPUPW | MPUENA | MPULOCK | MPUSEGIE;
     其他
        MPU_ctl0_value = MPUPW | MPUENA | MPULOCK;
     #endif
  其他
     #ifdef _MPU_ENABLE_NMI
        MPU_ctl0_value = MPUPW | MPUENA | MPUSEGIE;
     其他
        MPU_ctl0_value = MPUPW | MPUENA;
     #endif
  #endif
#endif

/ /
/*包括外设内存映射                                          */
/ /

l msp430fr5969.cmd

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

    您发布的链接器文件与 FR5969器件的默认链接器文件匹配、因此应该可以。 您是否能够为 MSP430FR5969器件创建新的 CCS 项目并将其加载到 Launchpad 上?

    您能否尝试使用其他 USB 电缆将 Launchpad 连接到计算机或将其插入计算机的另一个端口?

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

    您好、Ryan、

    非常感谢您的回复。 我听从了您的建议、使用新的 CCS 工程测试了示例代码、但遇到了相同的文件加载程序错误。 我还尝试了不同的 USB 电缆、不同的 USB 端口和不同的笔记本电脑、但运气不好。 这可能是故障的 LaunchPad 吗?

    非常感谢、

    红梅

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

    您是否能够通过仅加载符号在 CCS 中调试器件? 转到 CCS 窗口顶部的"Run"选项卡。 单击"Debug Configurations..." 然后转到弹出窗口中的"Program"选项卡。 选择窗口中间的"仅加载符号"按钮。 单击窗口右下角的"Debug"。

    如果 CCS 连接到 MCU、您可以转到 CCS 顶部的"View"选项卡、然后单击"Memory Browser"。 此时会弹出一个窗口、您可以键入地址0x4400来查看加载到 MCU 存储器中的内容。 您在那里看到了哪些值?

    如果您转到"General"下的工程属性并将器件变体更改为 MSP430FR5967、您是否仍然看到相同的消息? 在这种情况下、更改器件型号只应更改代码和数据存储在器件存储器中的位置。

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

    您好、Ryan、

    非常感谢您告诉我这些步骤。 我已经按照步骤仅加载符号、但我得到了错误补偿:"0xFFF"没有可用的源"。

    0x004400的内存浏览器值如下所示:

    如果我将器件更改为 MSP430FR5967、launchpad 可以运行 LED 闪烁代码。

    您知道这种情况的发生原因吗? 以及如何修复它?

    此致、

    红梅

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

    您好、Hongmei、

    地址0x4400上的0x3FFF 值可能意味着闪存部分受到读/写保护、这可能意味着电路板之前有一个程序具有锁定闪存区域的 IP 封装。

    要在 CCS 中将其删除、您可以转到"Debug Configurations..." "Run"选项卡上。 在弹出的窗口中、单击"Target"选项卡。 单击"MSP43x 选项"。 在"连接选项"部分下、选择"连接、擦除主区域和 IP 保护区域"。

    如果您使用 FR5969链接器文件加载程序、请告诉我。

    谢谢、

    Ryan

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

    您好、Ryan、

    我已经尝试过您的方法,但仍收到错误信息:“No source available for "0xFFF"(没有可用于"0xFFF"的源)”。

    此致、

    红梅

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

    在"Debug Configurations..."下、尝试在"Program"选项卡下重新选择"Load Program"、但保持在"Target"选项卡上选择的"On connect、erase main、information and IP protected area"选项。 然后是否正确加载了程序?

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

    非常感谢、问题已经得到解决。 我的 launchpad 现已开始工作!

    非常感谢、
    红梅