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.

[参考译文] TMS320F280025C:负载应用- serial_flash_programr.exe 中的 F280025C

Guru**** 2538955 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035628/tms320f280025c-load-application---f280025c-in-serial_flash_programmer-exe

器件型号:TMS320F280025C

我们已经尝试使用新的串行闪存编程器工具。

如果我们严格遵循该演示、它的工作原理与演示中所述的相同。

(《F28002x 上具有器件复位功能的单组 LFU 用户指南》)

在本演示中、应用程序文件为 f28002x_lfu_singlebankBANK0FLASH.txt、但对于我们来说、我们有自己的应用程序 txt 文件。

如果要对 MCU 进行编程,是否需要执行其他任何步骤?
我们使用 hex2000.exe 工具将 application.out 转换为 application.txt。 然后、我们再次运行该命令、但替换
f28002x_lfu_singlebankBANK0FLASH.txt 更改为 application.txt。

下面是我们使用的命令:
serial_flash_programr_appln.exe -d f28002x -k f28002x_sci_flash_kernel.txt -a application.txt -b 9600 -p COM8

实际结果:数据传输停止,在传输46 06 00 90 7C 91 22 56 AC 28 18 00后停止。

有人对我们犯了什么错误有什么想法吗?

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

    您好!  

    首次运行 serial_flash_programmer 实用程序时、是否正在使用您自己的应用程序文件? 如果是、当数据传输暂停时、您可以暂停 CCS 中闪存内核的执行、并查看内核停止的位置。  

    关于应用本身、您可以检查应用程序是否与128位边界对齐。 对于分配给闪存的每个段、您需要在链接器命令文件中使用 align (8)指令。  

    谢谢、  

    Anu

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

    感谢您的回复。
    我发现它出现在第617行,原因: 目标地址在 B0_START_ADD 和 B0_RESERVED 范围内"。

    现在、我已经修复了它、该工具可以将整个应用程序 txt 文件加载到我们的器件中。

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

    您好!

    我现在设法将我的应用程序 txt 文件加载到我们的器件中。
    复位后、应用程序工作正常。

    但是、在我重置器件并重新运行 serial_flash_programr_appln.exe 工具后、结果如下所示:


    它将在这里挂起、直到我按下 Ctrl + C
    您是否有任何想法,为什么会这样做?
    为什么我无法再次将应用重新加载到设备中?

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

    Chzi、  

    您的应用是否映射到扇区2-15? 重新加载应用程序时,您遵循的操作顺序是什么?

    谢谢、  

    Anu

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

    尊敬的 Anu:

    很抱歉、您的回复不正确。
    是的、我的应用在扇区2-15内映射。

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

    我将应用程序的 cmd 文件的内容粘贴到下面:

    存储器

    开始:origin = 0x08EFF0,length = 0x000002
    BOOT_RSVD:origin = 0x00000002,length = 0x00000126
    RAMM0:origin = 0x00000128,length = 0x000002D8
    RAMM1:origin = 0x00000400,length = 0x000003F8 //片上 RAM 块 M1 *
    // RAMM1_RSVD:origin = 0x000007F8,length = 0x00000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超过有效内存的预取),保留并不用于代码*/

    /* RAMLS4:origin = 0x0000A000,length = 0x00000800
    RAMLS5:origin = 0x0000A800,length = 0x00000800
    RAMLS6:origin = 0x0000B000、length = 0x00000800
    RAMLS7:origin = 0x0000B800,length = 0x00000800*/

    /*合并所有 LS RAM */
    RAMLS4567:origin = 0x0000A000,length = 0x00002000
    RAMGS0:origin = 0x0000C000,length = 0x000007F8
    // RAMGS0_RSVD:origin = 0x0000C7F8,length = 0x00000008 //保留并不用于根据勘误咨询“内存:预取超出有效内存”的代码*/


    // FLASHBANK1:origin = 0x00080000,length = 0x0000FFF0
    // flash_bank1_RSVD:origin = 0x0008FFF0,length = 0x00000010 //保留并不用于根据勘误咨询“Memory:pretching Beyond valid Memory”(内存:有效内存之外的预取)*/的代码
    BootROM:origin = 0x003F0000,length = 0x00008000
    BootROM_EXT:origin = 0x003F8000,length = 0x00007FC0
    复位:origin = 0x003FFFC0,length = 0x00000002
    /*闪存扇区*/
    /*组0 */
    FLASH_BANK0_SEC0:origin = 0x080000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000 //片上闪存*
    FLASH_BANK0_sec2:origin = 0x082008,length = 0x000FF8 //片上闪存*
    FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC5:origin = 0x085000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC7:origin = 0x087000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC9:origin = 0x089000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC14:origin = 0x08E000、length = 0x000FF0 //片上闪存*
    FLASH_BANK0_SEC15:origin = 0x08EFF2、length = 0x00100E //片上闪存*
    // flash_BANK0_SEC15_RSVD:origin = 0x08FFF0,length = 0x000010 //根据勘误咨询“Memory: prepetching Beyond valid Memory”(内存:超出有效内存的预取),保留代码且不用于代码*/


    部分

    codestart:>开始,align (8)
    .text:>> flash_BANK0_sec2 | flash_BANK0_SEC3 | flash_BANK0_SEC4、align (8)
    .cinit:> flash_BANK0_SEC5,align (8)
    .switch:> FLASH_BANK0_sec2,ALIGN (8)
    .reset:> reset,type = DSECT /* not used,*/

    .stack:> RAMM1

    init_array:> flash_BANK0_sec2,align (8)
    .bss:> RAMGS0
    .bss:输出:> RAMGS0
    .bss:CIO :>RAMGS0
    .const:> FLASH_BANK0_SEC5、ALIGN (8)
    .data :> RAMGS0
    .sysmem:> RAMGS0

    //ramgs0:> RAMGS0

    .TI.ramfunc:load = flash_BANK0_sec2,
    运行= RAMGS0、
    Load_start (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    Load_End (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    run_size (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    对齐(8)


    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *

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

    Chzi、  

    链接器命令文件看起来正常、重新加载应用程序时、您会按照什么顺序执行操作?

    谢谢、  

    Anu

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

    尊敬的 Anu:

    已连接内存配置映像、谢谢!

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

    Chzi、  

    您可以尝试在更多扇区之间间距链接器命令文件中的段吗? 例如、如果一个扇区映射到.text、则不要将其映射到另一个段。  

    您可以尝试的另一件事是增大堆栈的大小。 在此之后尝试加载和重新加载应用程序、并让我知道发生了什么。  

    谢谢、  

    Anu

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

    尊敬的 Anu:

    我已经尝试过几次、但结果仍然相同(重新加载应用程序失败)。
    以下是链接命令文件的内容之一:

    存储器

    开始:origin = 0x08EFF0,length = 0x000002
    BOOT_RSVD:origin = 0x00000002,length = 0x00000126
    RAMM0:origin = 0x00000128,length = 0x000002D8
    RAMM1:origin = 0x00000400,length = 0x000003F8 //片上 RAM 块 M1 *
    // RAMM1_RSVD:origin = 0x000007F8,length = 0x00000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超过有效内存的预取),保留并不用于代码*/

    /* RAMLS4:origin = 0x0000A000,length = 0x00000800
    RAMLS5:origin = 0x0000A800,length = 0x00000800
    RAMLS6:origin = 0x0000B000、length = 0x00000800
    RAMLS7:origin = 0x0000B800,length = 0x00000800*/

    /*合并所有 LS RAM */
    RAMLS4567:origin = 0x0000A000,length = 0x00002000
    RAMGS0:origin = 0x0000C000,length = 0x000007F8
    // RAMGS0_RSVD:origin = 0x0000C7F8,length = 0x00000008 //保留并不用于根据勘误咨询“内存:预取超出有效内存”的代码*/


    // FLASHBANK1:origin = 0x00080000,length = 0x0000FFF0
    // flash_bank1_RSVD:origin = 0x0008FFF0,length = 0x00000010 //保留并不用于根据勘误咨询“Memory:pretching Beyond valid Memory”(内存:有效内存之外的预取)*/的代码
    BootROM:origin = 0x003F0000,length = 0x00008000
    BootROM_EXT:origin = 0x003F8000,length = 0x00007FC0
    复位:origin = 0x003FFFC0,length = 0x00000002
    /*闪存扇区*/
    /*组0 */
    FLASH_BANK0_SEC0:origin = 0x080000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000 //片上闪存*
    FLASH_BANK0_sec2:origin = 0x082008,length = 0x000FF8 //片上闪存*
    FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC5:origin = 0x085000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC7:origin = 0x087000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC9:origin = 0x089000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC14:origin = 0x08E000、length = 0x000FF0 //片上闪存*
    FLASH_BANK0_SEC15:origin = 0x08EFF2、length = 0x00100E //片上闪存*
    // flash_BANK0_SEC15_RSVD:origin = 0x08FFF0,length = 0x000010 //根据勘误咨询“Memory: prepetching Beyond valid Memory”(内存:超出有效内存的预取),保留代码且不用于代码*/


    部分

    codestart:>开始,align (8)
    .text:>> flash_BANK0_sec2 | flash_BANK0_SEC3 | flash_BANK0_SEC4、align (8)
    .cinit:> flash_BANK0_SEC5,align (8)
    .switch:> FLASH_BANK0_SEC6,ALIGN (8)
    .reset:> reset,type = DSECT /* not used,*/

    .stack:> RAMLS4567

    init_array:> flash_BANK0_sec7,align (8)
    .bss:> RAMGS0
    .bss:输出:> RAMGS0
    .bss:CIO :>RAMGS0
    .const:> FLASH_BANK0_SEC8、ALIGN (8)
    .data :> RAMGS0
    .sysmem:> RAMGS0

    //ramgs0:> RAMGS0

    .TI.ramfunc:load = flash_BANK0_sec2,
    运行= RAMGS0、
    Load_start (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    Load_End (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    run_size (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    对齐(8)


    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *

    我通过将.stack 映射到  RAMLS4567来增大了堆栈的大小、对吧?

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

    Chzi、  

    将堆栈映射到 RAMLS4567应该是可以的。  

    我正在与 LFU 专家讨论您可以采取哪些后续步骤、我将在周五返回给您。  

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

    Chzi、  

    您能否检查应用程序的优化级别? LFU 示例在级别2设置了优化级别、您能否尝试启用优化并查看优化是否起作用?

    谢谢、  

    Anu

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

    尊敬的 Anu:


    我尝试过优化级别2、但结果仍然相同。
    加载第一个应用程序后、我们无法重新编程该应用程序。

    谢谢!

    Chzi Sern

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

    Chzi、  

    我认为、最好发出一个电话来确定下一步应该做什么。 我们可以通过私人聊天讨论什么时间最有效。  

    谢谢、  

    Anu

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

    尊敬的 Anu:

    我同意您在这里提到的内容、虚拟讨论可以固定流程、事实上我们迫切需要解决这个问题。
    包括  TMS320F280025C:TMS320F280025C:负载应用- serial_flash_programr.exe 中的 F280025C (非 controlCARD)

    如果我们在本周五之前进行讨论、是否可以?
    我们的开放时间为上午8:00 -晚上10:00 (马来西亚时区)。
    期待您的回复。

    谢谢!

    Chzi Sern

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

    Chzi、  

    请参阅您链接的主题中的回复。  

    谢谢、  

    Anu