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.

[参考译文] 编译器/LAUNCHXL2-570LC43:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置

Guru**** 2606375 points
Other Parts Discussed in Thread: HALCOGEN, LAUNCHXL2-570LC43, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/738788/compiler-launchxl2-570lc43-gel-output-memory-map-setup-for-flash-address-0x0-due-to-system-reset

器件型号:LAUNCHXL2-570LC43
主题中讨论的其他器件:HALCOGENUNIFLASH

工具/软件:TI C/C++编译器

尊敬的所有人:

我是 Hercules 微控制器编程的初学者。我使用 Launchxl2-570LC43两天没有任何问题。 使用 halcogen 和 ccs8.1成功构建了 RTIBlinky 示例。 但是、在 HALcogen 中加载 example_adcdisplay.c 后、它在启动调试会话时开始接收此错误。 我在许多线程中搜索并使用链接器生成的带有 vfill 命令的 ECC cmd 文件不会改变这个问题。 我可以连接到目标、但无法读取表示无法读取的内核寄存器。  

我在一个线程中观察到、在未映射到存储器的 Arm cortex 器件寄存器中、无法像在 C28x 器件中那样读取。 演示项目正在正常运行、但此 GEL 输出保持不变。 在部分中、HL_SYS_intvecs.asm 是否存在一些错误

resetEntry
       b  _c_int00

这是我的 linker.cmd 文件代码

存储器

/*用户代码开始(2)*/
#if 0
/*用户代码结束*/
   引导程序(X) :origin=0x00000000 length=0x00000020
   FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
   FLASH1 (RX):origin=0x00200000 length=0x00200000
   堆栈 (RW):origin=0x08000000 length=0x00001500
   RAM    (RW):origin=0x08001500 length=0x0007EB00

/*用户代码开始(3)*/
#endif
   引导程序(X) :origin=0x00000000 length=0x00000020 vfill =0xFFFF
   FLASH0 (RX):origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
   FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff
   堆栈 (RW):origin=0x08000000 length=0x00001800
   RAM    (RW):origin=0x08001800 length=0x0007E800

   ECC_VEC (R) :origin=0xf0400000 length=0x4 ECC={ input_range=vectors }
   ECC_FLA0 (R):origin=0xf0400000 + 0x4 length=0x3FFFC ECC={INPUT_RANGE=FLASH0}
   ECC_FLA1 (R):origin=0xf0440000 length=0x40000 ECC={input_range=FLASH1}
/*用户代码结束*/


/*用户代码开始(4)*/
ECC

  algo 名称:address_mask = 0xfffffff8
  汉明_MASK = R4
  奇偶校验掩码= 0x0c
  镜像= F021

非常感谢您在这方面的帮助。

谢谢你。

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

    在链接器 cmd 文件的 MEMORY 部分、ECC_xxx 不包含 ECC 算法。 正确答案如下所示:

    ECC_VEC (R):origin=0xf0400000 length=0x4 ECC={ algo_name,input_range=vectors }
    ECC_FLA0 (R):origin=0xf0400000 + 0x4 length=0x3FFFC ECC={algo_name、input_range=FLASH0}
    ECC_FLA1 (R):origin=0xf0440000 length=0x40000 ECC={algo_name、input_range=FLASH1}

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

    您好、QJ Wang、

     感谢您的回复。 上周、我一直在深入探讨架构以及您提到的内容。 正如您所说、我更改了代码、但错误似乎是一致的。 详细信息、这是 ccs8.1中调试窗口的屏幕截图。 连接到目标程序后、程序正常运行。 根据 GEL 文件, 显示此输出是由于 OnResetDetected ()和 OnTargetConnect 函数。 功能如下所述。 在调试会话开始时、似乎在0x00000000 (.intvects_c_int00 )调用复位矢量中断。 这是否会由于 RAM 存储器损坏而发生。 片上闪存设置也会显示在一个调试窗口中。再次感谢您的帮助。

    OnResetDetected (){

       if (MemSwitchState == compl){
       
           memmap (闪存、EMIF);
           MemoryMap =闪存;
           GEL_TextOut ("\t 由于系统复位、闪存@地址0x0的内存映射设置\n"、、、、 );
       }
       
       if (MemSwitchState ==已启动)
        
           MemSwitchState == compl;
       }  

    OnTargetConnect()

       if (MemoryMap ==闪存){
           memmap (闪存、EMIF);
           GEL_TextOut ("\t 闪存@地址0x0"、、、、、、的内存映射设置 );
       }    
       if (MemoryMap == RAM){
           memmap (RAM、EMIF);
           GEL_TextOut ("\tRAM 的内存映射设置@地址0x0。"、、、、 );
           GEL_TextOut ("\t 仅用于调试!"、、、、 );
       }   

    此部分是否包含 ECC 算法。 我使用的是安全 TI 诊断库 v 2.4、我在 include 选项中包含了该库。

    ECC

      algo 名称:address_mask = 0xfffffff8
      汉明_MASK = R4
      奇偶校验掩码= 0x0c
      镜像= F021

    谢谢。

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

    尊敬的 QJ Wang:
    我仍然有问题。 即使在使用 Uniflash 擦除闪存时也会弹出此消息。 我使用了其中两个器件、它们总是会弹出相同的消息。
    谢谢、此致、
    佛像。

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

    GEL 文件应该可以正常工作、而不会出现任何问题。 您是否将内存换成闪存和 SRAM? 默认情况下、从0x00开始的存储器映射到闪存、但您可以将此区域映射为 SRAM。