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.

[参考译文] TMS320F2800155-Q1:设计闪存驱动程序时、应禁用闪存驱动程序

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1406095/tms320f2800155-q1-flash-drivers-should-be-scolded-to-do-it

器件型号:TMS320F2800155-Q1
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的团队:

 我想问您一些问题。 在升级 bootleader 的过程中、我首先需要将闪存驱动器下载到 RAM。 然后下载我的应用。

 您是否可以参考任何例程或推荐任何信息?

最好的鱼片

Zhang

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

    顺便说一下、我想问的问题是如何分别取出闪存驱动器?

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

    尊敬的 Zhang:

    您能否更详细地解释您的应用以及您要使用哪些 TI 工具/功能?

    此致、

    Delaney

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

    嗨、 Delaney、ó n

    现在我有一个客户需要、当我升级软件时、我需要首先将闪存驱动程序函数写入我的 RAM、然后写入我的应用程序。 现在、我的闪存驱动程序和我的应用程序是十六进制的、我需要将它们分开。 但我现在还不知道、您能给我一些建议吗?

    此致、

    Zhang

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

    尊敬的 Delaney:

    闪存驱动器是一个硬件相关的模块、为 ECU 提供闪存擦除和写入功能。
    引导加载程序应用软件互锁机制、即完整的闪存驱动器代码或其关键部分不在 ECU 的闪存中
    它是在重新编程过程中下载到 ECU 的 RAM。 在重新编程结束时、必须从 RAM 中删除闪存驱动程序代码。

    此致

    Zhang

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

    尊敬的 Zhang:

    我很抱歉耽误了时间、我已经找了有关专家、他们应该在第二天左右回复你。

    此致、

    Delaney

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

    您好、Zhang、

    请看一下 C2000Ware 中的一个闪存内核示例(在目录 driverlib\f280015x\examples\flash 下)。 我们有两个示例、一个使用 SCI、另一个使用 CAN 将传入的数据编程到器件闪存中。 您可以调整这些示例以供您使用。

    此致、
    Ibukun

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

    Hi Ibukun Olumuyiwa、á

    非常感谢您在百忙之中抽出时间回答我的问题。

    下面是我在调试程序时遇到的一些问题,我想得到一些专家意见。

    MEMORY
    {
       BEGIN            : origin = 0x00080000, length = 0x00000002
       BOOT_RSVD        : origin = 0x00000002, length = 0x00000126
    
       RAMM0            : origin = 0x00000128, length = 0x000002D8
       RAMM1            : origin = 0x00000400, length = 0x000003F8
       // RAMM1_RSVD       : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       RAMLS0           : origin = 0x00008000, length = 0x00001000
     RAMLS3           : origin = 0x00009000, length = 0x00001000
       RAMLS1           : origin = 0x0000A000, length = 0x00001FF8
       // RAMLS1_RSVD      : origin = 0x0000BFF8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
       DCSM_ZSEL_Z1_P0  : origin = 0x00078008, length = 0x00000002
       DCSM_ZSEL_Z1_P1  : origin = 0x0007800C, length = 0x00000002
       RESET            : origin = 0x003FFFC0, length = 0x00000002
    
      BOOTKEYADDR      : origin = 0x084000,   length = 0x000010     /* on-chip FLASHC EEPROM*/
    
       /* Flash sectors */
       FLASH_BANK0_SEC_0_7     : origin = 0x080002, length = 0x1FFE  /* on-chip Flash */
       FLASH_BANK0_SEC_8_15    : origin = 0x082000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_16_23   : origin = 0x084010, length = 0x1FF0  /* on-chip Flash */
       FLASH_BANK0_SEC_24_31   : origin = 0x086000, length = 0x2000  /* on-chip Flash */
      FLASH_BANK0_SEC_32_39   : origin = 0x088000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_40_47   : origin = 0x08A000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_48_55   : origin = 0x08C000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_56_63   : origin = 0x08E000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_64_71   : origin = 0x090000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_72_79   : origin = 0x092000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_80_87   : origin = 0x094000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_88_95   : origin = 0x096000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_96_103  : origin = 0x098000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_104_111 : origin = 0x09A000, length = 0x2000  /* on-chip Flash */
      FLASH_BANK0_SEC_112_119 : origin = 0x09C000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_120_127 : origin = 0x09E000, length = 0x1FF0  /* on-chip Flash */
    
       // FLASH_BANK0_SEC_127_RSVD : origin = 0x0A0FF0, length = 0x0010  /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
    
    }
    SECTIONS
    {
        codestart        : > BEGIN
    
       .text            : >> FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
    
       .cinit           : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       .switch          : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
    
       .reset           : > RESET,  TYPE = DSECT /* not used, */
    
       .stack           : > RAMM1
       dcsm_zsel_z1_p0  : > DCSM_ZSEL_Z1_P0,  PAGE = 0
       dcsm_zsel_z1_p1  : > DCSM_ZSEL_Z1_P1,  PAGE = 0
        boot_key_addr    : > BOOTKEYADDR       PAGE = 0
    
    
       .bss             : > RAMLS0
       .bss:output      : > RAMLS0
       .init_array      : >> FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       .const           : >> FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       .data            : > RAMLS0
       .sysmem          : > RAMLS0
      .bss:cio          : > RAMLS0
    
    	GROUP
    	{
    		.TI.FlashDrive
    		{-l FAPI_F280015x_EABI_v2.00.01.lib}
    	}
    		RUN = RAMLS3,
      		RUN_START(FlashDriverRunStart),
      		RUN_SIZE(FlashDriverRunSize),
      		RUN_END(FlashDriverRunEnd),
      		ALIGN(8)
    
        .TI.ramfunc:
    		LOAD = FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15,
     		RUN = RAMLS1,
      		LOAD_START(RamfuncsLoadStart),
      		LOAD_SIZE(RamfuncsLoadSize),
      		LOAD_END(RamfuncsLoadEnd),
      		RUN_START(RamfuncsRunStart),
      		RUN_SIZE(RamfuncsRunSize),
      		RUN_END(RamfuncsRunEnd),
      		ALIGN(8)
      		    /*  Allocate IQ math areas: */
     //  IQmath           : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
       //IQmathTables     : > FLASH_BANK0_SEC_0_7|FLASH_BANK0_SEC_8_15, ALIGN(8)
    
    
    
       DataBufferSection : > RAMLS1, ALIGN(2)
    }
    

    1、这是我的 cmd 文件配置、有一条警告、我应该如何解决它

    Warn for "..GROUP_1"/lib/source/280015x_generic_flash_lnk.cmd、第69行:警告#10334-D:未为初始化对象"Group_1"指定加载放置;使用运行放置

    2 μ s 当我、此 CMD 配置文件运行程序时、很容易触发非法中断。 这是什么原因

    _interrupt void Interrupt_illegalOperationHandler (void)

    //
    //有什么问题。 CPU 试图执行非法的
    //指令、生成非法指令陷阱(ITRAP)。
    //
    ESTOP0;
    for (;;)


    }
    }

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

    尊敬的 Zhang:

    专家目前不在办公室、因此请预计延迟1–2天的响应时间。 谢谢你。

    此致、

    Aishwarya.

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

    尊敬的 Zhang:

    	GROUP
    	{
    		.TI.FlashDrive
    		{-l FAPI_F280015x_EABI_v2.00.01.lib}
    	}
    		RUN = RAMLS3,
      		RUN_START(FlashDriverRunStart),
      		RUN_SIZE(FlashDriverRunSize),
      		RUN_END(FlashDriverRunEnd),
      		ALIGN(8)

    此段应具有与之关联的加载地址。 请参阅此链接以了解 有关链接器 cmd 文件配置的更多信息。

    此致、

    Skyler