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.

[参考译文] MSPM0L1305:基于 ARM 的微控制器论坛

Guru**** 2577385 points
Other Parts Discussed in Thread: SYSCONFIG, MSPM0L1306, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1572789/mspm0l1305-arm-based-microcontrollers-forum

部件号:MSPM0L1305
Thread 中讨论的其他器件:SYSCONFIG、MSPM0L1306UNIFLASH

工具/软件:

您好:

我的 MSPM0L1306 应用大于 4K、位于 0x0000。 如果我尝试使用辅助 BSL 加载此映像、它会覆盖辅助 BSL 所在的闪存区域。 我尝试了按照 SLAAE88D MSPM0 引导加载程序实施第 5.3.1 节中的说明将辅助 BSL 重定位到 0x4000、包括将备用 BSL 地址的 SysConfig 设置更改为 0x4041、但不起作用。 我还需要做什么?

谢谢、

Frank

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

    您好 Frank、

    您能否分享链接器 (cmd) 文件的外观?

    我建议也参考 SDK 中的 secondary_bsl_uart 示例(这适用于 MSPM0L1306):

    /*
     * Copyright (c) 2024, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    -uinterruptVectors
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    	FLASH_SBSL_INTVEC(RWX)  :	 org = 0x00001000,      len = 0x00000040,
    	FLASH_SBSL_START(RWX)   :	 org = 0x00001040,      len = 0x00000040,
    	FLASH_SBSL(RWX)   		:	 org = 0x00001080,      len = 0x00001F80,
    
        SRAM(RW)				:    org = 0x20000000,      len = 0x00001000,
    
        BCR_CFG		 		    : 	 org = 0x41C00000,      len = 0x00000080,
        BSL_CFG				    : 	 org = 0x41C00100,      len = 0x00000080,
        FACTORY_CFG		  		: 	 org = 0x41C40000,      len = 0x00000200,
    }
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    	.intvecs			: PALIGN(8) {} > FLASH_SBSL_INTVEC
    	.sblStart			: PALIGN(8) {} > FLASH_SBSL_START
    
        GROUP(FLASH_MEMORY) {
            .text          	: PALIGN(8) {}
            .const         	: PALIGN(8) {}
            .cinit         	: PALIGN(8) {}
            .rodata			: PALIGN(8) {}
        } > FLASH_SBSL
    
        GROUP(SRAM) {
        	.vtable 		: {}
            .data          	: {}
            .bss           	: {}
       } > SRAM
    
    	.TI.ramfunc   : load = FLASH_SBSL, palign(8), run=SRAM, table(BINIT)
    
        .stack  :   > SRAM (HIGH) SIZE(BSL_CI_stackSize)
    
        .factoryConfig          : {} > FACTORY_CFG
        .BCRConfig              : {} > BCR_CFG
        .BSLConfig              : {} > BSL_CFG
    }
    

    如果使用 SysConfig、请确保已禁用链接器文件的生成。 否则、每次编译工程时都会重写该文件。

    此致、

    Owen

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

    尊敬的 Owen:  

    是的。 在 Syscongi 中与该示例工程默认禁用链接文件生成。 下面是我对 mspm0l1306.cmd 的修改,我从  MSPM0 引导加载程序实现第 5.3.1 节复制了该修改 。

    Frank

    /*
    *版权所有 (c) 2024, Texas Instruments Incorporated
    保留所有权利。
    *
    *重新分发和使用源代码和二进制格式,无论有无
    *允许修改,前提是满足以下条件
    *符合:
    *
    **源代码的重新分发必须保留上述版权
    *声明、本条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *声明、本条件列表和中的下述免责声明
    *分发时提供的文件和/或其他材料。
    *
    ** Texas Instruments Incorporated 的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经事先书面许可,从本软件下载。
    *
    *本软件由版权持有人和贡献者“按原样“提供
    “服务“以“按现状“和“按可得到“的基础提供。
    *对特定的适销性和适用性的暗示保证
    *目的不受限制。 在任何情况下,著作权人或
    *贡献者对任何直接、间接、附带、特别、
    但对服务不作任何明示或暗示的保证,包括但不限于秒杀网服务的适用性、没有错误或疏漏、持续性
    *替代商品或服务的采购;使用、数据或利润的损失;
    *或业务中断)然而引起的,并根据任何责任理论,
    *无论在合同中,严格责任,还是侵权(包括疏忽或
    以任何方式产生于本软件的使用,
    *即使被告知可能发生此类损害。
    */

    -uinterruptVectors

    /*---------------------------------------------------------------------------------------------------- */
    /*存储器映射*/

    移动数据
    FLASH_SBSL_INTvec (rwx):org = 0x00004000、len = 0x00000040、
    FLASH_SBSL_START (RWX):org = 0x00004040、len = 0x00000040、
    FLASH_SBSL (rwx):org = 0x00004080、len = 0x00001F80、

    SRAM (RW):org = 0x20000000、len = 0x00001000、

    BCR_CFG:org = 0x41C00000、len = 0x00000080、
    BSL_CFG:org = 0x41C00100、len = 0x00000080、
    FACTORY_CFG:org = 0x41C40000、len = 0x00000200、
    }

    /*---------------------------------------------------------------------------------------------------- */
    /*段配置*/

    很重要
    .intvecs:PALIGN(8){}> FLASH_SBSL_INTvec
    .sblStart:PALIGN(8){}> FLASH_SBSL_START

    GROUP (FLASH_MEMORY){
    .text : PALIGN(8){}
    .const : PALIGN(8){}
    .cinit:PALIGN(8){}
    .rodata : PALIGN(8){}
    }> FLASH_SBSL

    GROUP (SRAM){
    .vtable :{}
    .data :{}
    .bss :{}
    }> SRAM

    .TI.ramfunc:load = FLASH_SBSL、palign (8)、run=SRAM、table (BINIT)

    .stack :> SRAM (high) size (BSL_CI_STACKSIZE )

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

    您好 Frank、

    您的链接器文件看起来不错。 当您说它不起作用时、您是指辅助 BSL 仍从 0x1080 开始?

    您是否尝试过重新编译整个项目? “Project">"Rebuild Project"“ Project"</s>“ “

    您是否可以共享整个项目?

    此致、

    Owen

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

    您好 Frank、

    我还想补充一点、更改 NONMAIN 时必须执行 POR。 在完成此操作之前、对 NONMAIN 的任何更改都不会生效。

    我刚好能够调整 SDK 示例、将 BSL 移至从 0x4000 开始。

    此致、

    Owen

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

    尊敬的 Owen:

    是的、我总是执行 Rebuild Project。 当我尝试加载辅助 BSL 大于 1K 的映像时、Uniflash 会收到以下错误消息(在小于 1K 时有效)。 我附上了一个辅助 BSL 工程和 GPIO 工程的 zip 文件。 对于 GPIO 工程、我在 gpio_toggle_output.c 中添加了一些代码以使映像大小大于 1K(const uint8_t dummy_data[4024]={0};) 我相信我做了一些错误的事情,但不能弄清楚。

    谢谢、

    Frank

    2025年10月3日、8:16:00 AM] [info] Cortex-M0P:MSPM0L1306(引导加载程序)
    [引导 2025年10月3日 加载程序、8:16:00 AM] [info] Cortex-M0P:正在调用引导加载程序…
    2025年10月3日、8:16:04 AM] [info] CORTEX_M0P:
    [BSL、8:16:04 AM] [info] Cortex-M0P:2025年10月3日 已连接
    [BSL、8:16:04 AM] [info] Cortex-M0P:命令解释器版本:[0x0001]构建 ID:[0x0001]应用版本:[0x00000000]活动插件接口版本:[0x1331] BSL 最大缓冲器大小:[0x0704] BSL 缓冲器起始地址:[0x20000180] BCR 配置 ID:[0x00000x0001] 2025年10月3日 配置 ID [0x00000x0001]
    [BSL、8:16:04 AM] [info] Cortex-M0P:2025年10月3日 密码正确!
    [DataBlock 2025年10月3日、8:16:04 AM] [info] Cortex-M0P:从 0x0 开始擦除包含 DataBlock 的扇区成功!
    [DataBlock 2025年10月3日、8:16:04 AM] [info] Cortex-M0P:从 0x6E4 开始擦除包含 DataBlock 的扇区成功!
    2025年10月3日、8:16:04 AM] 【错误】Cortex-M0P:
    [CORTEX](2025年10月3日、8:16:05 AM )【错误】CORTEX_M0P:[ERROR_MESS]Process is Failed!

    e2e.ti.com/.../secondary_5F00_bsl_5F00_uart_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zipe2e.ti.com/.../5756.gpio_5F00_toggle_5F00_output_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

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

    您好 Frank、

    感谢您与我分享这些项目。

    该过程当前失败的原因是在 SysConfig 中配置了 SWP。 下部扇区设置为 0xFFFFF00F。  这保护了位于 0x1000 处时包含辅助 BSL 的闪存区域。 由于我们移动了它、我们需要相应地移动 SWP。 我认为它现在应该是 0xFF00FFFF。 这保护扇区 16-23。

    现在我遇到了有关 8 位对齐的问题、但我认为它与应用程序 Hex 文件无关。 我认为它可能与 BSL 有关、但我必须研究它并返回给您星期一。

    此致、

    Owen

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

    谢谢!!! 我期待您的发现。

    此致、

    Frank

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

    您好 Frank、

    您是否能够复制我在您的最终观察到的行为?

    此致、

    Owen

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

    尊敬的 Owen:


    是的、在将 SWP 更改为 0xFF00FFFF 后、我能够进行复制。

    2025年10月6日、10:14:26 AM] [info] Cortex-M0P:MSPM0L1306(引导加载程序)
    [引导 2025年10月6日 加载程序、10:14:26 AM] [info] Cortex-M0P:正在调用引导加载程序…
    2025年10月6日、10:14:29 AM] [info] Cortex-M0P:
    [BSL、10:14:29 AM] [info] Cortex-M0P:2025年10月6日 已连接
    [BSL、10:14:29 AM] [info] Cortex-M0P:命令解释器版本:[0x0001]构建 ID:[0x0001]应用版本:[0x00000000]活动插件接口版本:[0x1331] BSL 最大缓冲器大小:[0x0704] BSL 缓冲器起始地址:[0x20000180] BCR 配置 ID:[0x00000x0001] 2025年10月6日 配置 ID [0x00000x0001]
    [BSL、10:14:29 AM] [info] Cortex-M0P:2025年10月6日 密码正确!
    [DataBlock 2025年10月6日、10:14:29 AM] [info] Cortex-M0P:从 0x0 开始擦除包含 DataBlock 的扇区成功!
    [DataBlock 2025年10月6日、10:14:29 AM] [info] Cortex-M0P:从 0x6E4 开始擦除包含 DataBlock 的扇区成功!
    [DataBlock 2025年10月6日、10:14:29 AM] [info] Cortex-M0P:从 0xDC8 开始擦除包含 DataBlock 的扇区成功!
    [MCU 2025年10月6日、10:14:29 AM] [info] Cortex-M0P:擦除存储器时长:0.09514s
    [NVM 2025年10月6日、10:14:31 AM] 【错误】Cortex-M0P:[ERROR]闪存编程的起始地址或数据长度未进行 8 字节对齐!
    [CORTEX](2025年10月6日、10:14:31 AM )【错误】CORTEX_M0P:[ERROR_MESS]Process is Failed!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Owen:

    我将 bsl_host_mcu_to_mscpm0l11_xx_l13xxI_target_uart_LPxxx 示例移植到 Windows、并在 SWP 设置为 0xFF00FFFF 时可以正常加载我的映像!! 不确定这是否指向 Uniflash 出现问题

    Frank

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

    您好 Frank、

    实现 SWP 的原因是为了防止写入 BSL。 除非您刷写的程序足够大、足以写入 BSL 或尝试写入 SWP 存储器、否则它不会导致问题。 我当前正在查看辅助 BSL 代码以了解是否还有任何其他需要更改的内容。

    此致、

    Owen