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.

[参考译文] MSPM0G1507:通过定制 BSL 上传 TXT 文件后、MSPM0G1507应用程序无法正常工作

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1502372/mspm0g1507-mspm0g1507-application-not-working-after-uploaded-txt-file-through-custom-bsl

部件号:MSPM0G1507

工具/软件:

您好、

我目前面临着我正在开发的一个项目的问题 CCS Theia IDE 、使用 MSPM0G1507 微控制器。

我能够使用成功上载并运行应用程序 "调试"配置 、其中.cmd链接器文件将应用程序起始地址设置为0x0000。 在此设置中、代码运行良好、不会出现任何问题。

但是、实际部署需要运行应用程序 辅助 BSL 组成 、其中:

  • BSL 的起始位置 0x0000

  • 应用程序从开始 0x2000

因此、我修改了.cmd文件以将应用程序起始地址设置为0x2000
然后、我刷了一下 自定义 BSL 十六进制文件 到设备(已经过测试并且正在运行)、然后使用我的 BSL GUI 应用程序 0x2000通过 UART 上载相同的应用程序(现在构建为从开始)。

下电上电后、我可以观察到这一点 一些初始代码运行 — 正如我可以看到指示灯 LED 亮起 —但应用程序似乎 稍后挂起或停止工作 。 我不确定这一点之后会出现什么问题。

为了验证 BSL 是否正常工作、我尝试了上传 其他应用 (使用几乎相同的外设)通过相同的定制 BSL 运行、并且没有任何问题。

对于帮助解决此问题的任何建议或指导、我将不胜感激。

提前感谢您的支持。

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

     尊敬的 Anthony:

    如果您可以使用自定义 BSL 加载另一个应用程序、那么第一个应用代码看起来应该存在一些问题。  

    我怀疑的是中断矢量、您是否已将 SCB->VTOR 设置为  0x2000

    B.R.

    Sal

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

    嗨、Sal Ye、非常感谢您的答复、也非常感谢您对我稍后的答复表示了歉意。 是的,你是对的,我没有在".cmd"中添加 INTVECS,所以我做了,但问题仍然存在。 这是 cmd 文件。

    -uinterruptVectors
    --stack_size=512
    
    MEMORY
    {
        INT_VECS		(RX)  : origin = 0x00002000, length = 0x000000C0
        FLASH           (RX)  : origin = 0x000020C0, length = 0x0001DF40
        SRAM            (RWX) : origin = 0x20200000, length = 0x00008000
        BCR_CONFIG      (R)   : origin = 0x41C00000, length = 0x00000080
        BSL_CONFIG      (R)   : origin = 0x41C00100, length = 0x00000080
    
    }
    
    SECTIONS
    {
        .intvecs:   > INT_VECS
        .marker:  > 0x0001FFF8
        .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
    }
    

    供参考、  

    .marker: > 0x0001FFF8 是新固件更新的验证字节。 除此之外、我还需要更改其他内容吗? 提前非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Sal Ye、我终于解决了这个问题。 我没有在项目的.syscfg 文件中禁用"启动文件参考"的自动文件生成功能。 因此、编译器获取了自动生成的启动文件。

    「我知道,我知道你想要我

    并复制了启动文件 (startup_mspm0g150x_ticlang.c) 安装目录中的 SDK。

    最后、我在此启动文件中设置了 SCB->VTOR、它工作正常。

    非常感谢您的帮助。  Slight smilePrayμ s