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.

[参考译文] MSPM0L1105:如何在不同闪存分区中进行调试

Guru**** 2905440 points

Other Parts Discussed in Thread: MSPM0L1105

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1581417/mspm0l1105-how-to-debug-accross-different-flash-partition

器件型号:MSPM0L1105


您好的团队、

1.我的客户使用 M0L1105 并将闪存分为两部分:引导加载程序 (0x0000-0x2FFF) 和 APP (0x3000-0x7FFF)。 它们将应用起始地址从 0x3000 修改。 但它不能进行调试(按下“debug"后“后、它不能停留在“main()")“)。
他们按下“暂停“、代码似乎保持在 0x0000-0x1500 之间、而不是移至修改后的地址。

2.如果客户从引导加载程序进行调试,在固件运行到应用程序后,他们如何调试应用程序?

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

    您好 Jerry、

    客户是否使用 SDK 中的辅助 BSL 示例之一?

    您能否共享其链接器 (cmd) 文件?

    此致、

    Owen

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

    我们尚未使用 SDK“辅助 BSL“示例。

    我们的目标是在 MSPM0L1105 上构建引导+应用结构:
    -引导加载程序:0x0000–0x2FFF
    -应用:0x3000 - 0x7FFF
    -应用程序矢量表被重定位到 0x3000

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

    -uinterruptVectors
    --stack_size=256
    
    
    MEMORY
    {
        FLASH           (RX)  : origin = 0x00003000, length = 0x00004FF8
        SRAM            (RWX) : origin = 0x20000000, length = 0x00001000
        BCR_CONFIG      (R)   : origin = 0x41C00000, length = 0x00000080
        BSL_CONFIG      (R)   : origin = 0x41C00100, length = 0x00000080
    }
    
    SECTIONS
    {
        .intvecs:   > 0x00003000
        .text   : palign(8) {} > FLASH
        .const  : palign(8) {} > FLASH
        .cinit  : palign(8) {} > FLASH
        .pinit  : palign(8) {} > FLASH
        .rodata : palign(8) {} > FLASH
        .ARM.exidx    : palign(8) {} > FLASH
        .init_array   : palign(8) {} > FLASH
        .binit        : palign(8) {} > FLASH
        .TI.ramfunc   : load = FLASH, palign(8), run=SRAM, table(BINIT)
    
        .vtable :   > SRAM
        .args   :   > SRAM
        .data   :   > SRAM
        .bss    :   > SRAM
        .sysmem :   > SRAM
        .stack  :   > SRAM (HIGH)
    
        .BCRConfig  : {} > BCR_CONFIG
        .BSLConfig  : {} > BSL_CONFIG
    }
    

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

    尊敬的 POCA:

    我想注意的是、将辅助 BSL 置于 0x0000 将导致每次启动时引导进入 BSL。 如果这不是预期行为、我建议将 BSL 移至闪存中的其他位置。 我不希望这是预期行为、因为通常会使用 BSL 进行更新。

    我还想提到的是、如果您 还不对 BSL 进行编程、您共享的链接器文件 可能会导致器件被锁定。 这是因为该存储器区域将用 0xFFFF 填充、这不是有效的操作码。 然后、它将看到 0xFFFF 不是有效的硬故障位置、并将锁定。 必须执行恢复出厂设置来恢复器件。

    SDK 中的辅助 BSL 示例是一个很好的起点。

    此外、以下是一些您可能会认为有用的文档:

    此致、

    Owen