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 闪存的插件 UART 示例代码->迁移到 MSPM0G1507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1527942/mspm0g1507-bsl-flash-based-plug-in-uart-sample-code---migration-to-mspm0g1507

部件号:MSPM0G1507
主题中讨论的其他器件:MSPM0G3507MSPM0G1506SysConfig

工具/软件:

您好、

我´ve 导入了示例工程 mspm0_sdk_2_05_00_05\examples\nortos\LP_MSPM0G3507\bsl\bsl_uart_flash_interface ->、并将其设置为 MSPM0G1507。

导入后、我´ve 更改了 sysconf 中的软件包和编译器设置下的全局符号 (__MSPM0G1507__、而不是__MSPM0G3507__)。

然后、我将链接器 cmd 文件修复为具有正确的地址->  

 SRAM_INT_VECS(RWX)		:    org = 0x20200000
而不是  
 SRAM_INT_VECS(RWX)		:    org = 0x20000000

´ve 我向 bsl_pi_uart_init () 添加了一个 GPIO、以便打开电路板上的 LED、从而查看其是否正常工作。 ´ve 用于 UART PA0/1 而不是 PA10/11 的开关引脚。

使设备闪烁时、LED 不会亮起。  

我做了什么?

谢谢!

此致  

Steffen

e2e.ti.com/.../MSPM0_2D00_BL.zip

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

    BSL 调用 PIN(PA18 ->绿色) 相对于 NRST(黄色):

    因此、BSL 应该正在运行...

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

    ´ve 进一步测试此情况、我创建了一个空的 MSPM0G1506 工程、并将 BSL 设置为在 PA1/0 上工作。  

    e2e.ti.com/.../empty_5F00_mspm0g1507_5F00_nortos_5F00_ticlang.zip

    ´ve 我从 XDS110 上连接了 RX/DX、并通过 MSPm0 引导加载程序 GUI V1.2 上传固件。  

    工作正常!

    因此问题肯定出在闪存接口上。 以及链接器脚本。 它使 init() 函数n`t 调用。

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

    ´ve 我做了什么:

    如果从上面修改了我使用基于闪存的插件的示例、其中 ROM BSL UART 配置为 PA10/11:

    e2e.ti.com/.../6622.MSPM0_2D00_BL.zip

    ´ve 我从 XDS110 上连接了 RX/DX、并通过 MSPM0 引导加载程序 GUI V1.2 上传固件。  

    工作正常!

    现在我知道我的闪存插件可以正常工作、因为它配置为 PA0/1、而不是 ROM BSL 侧的 PA10/11。 但 GPIO 切换n`t 正常工作...

    我是否错过了设置 GPIO 的相关内容?

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

    我将闪存插件的波特率更`ve 19200 波特、然后在 MSPM0 引导加载程序 GUI V1.2 上进行更改。 并重新编译是有效的。 因此、我在 UART 上设置的所有内容都能正常工作、但 GPIO 无法正常工作。

    有什么想法吗?

    Thansks

    Steffen

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

    尊敬的 Steffen:

    请查看我们的技术参考手册中的 BSLPINCFG0 寄存器。 它是 NONMAIN 的字段、BSL 将扫描此寄存器定义的 UART 引脚。 因此、如果要更改 UART 引脚、可能需要更改该字段。 它可以在 SysConfig 中进行配置。

     

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

    嗨、Pengfei、

    UART GPIO 的更改正常工作。 这不是我的问题。 问题是我要使用的其他三个 GPIO。

    我在 bsl_pi_uart_init ()`ve 初始化它们:

    uint16_t BSL_PI_UART_init(uint8_t *buffer, uint16_t bufferSize) {
    
      DL_GPIO_reset(GPIOA);
      DL_GPIO_enablePower(GPIOA);
    
      BSL_initBuffers(buffer, bufferSize);
    
      /* Reset and enable power to peripheral */
      DL_UART_Main_reset(BSL_UART);
      DL_UART_Main_enablePower(BSL_UART);
    
      /* Initialize GPIOs */
      DL_GPIO_initPeripheralInputFunction(BSL_GPIO_UART_RX_PIN, BSL_GPIO_UART_RX);
      DL_GPIO_initPeripheralOutputFunction(BSL_GPIO_UART_TX_PIN, BSL_GPIO_UART_TX);
    
      DL_GPIO_initDigitalOutput(BSL_RE_IOMUX);
      DL_GPIO_clearPins(BSL_RE_PORT, BSL_RE_PIN);
    
      DL_GPIO_initDigitalOutput(LED_GREEN_IOMUX);
      // DL_GPIO_initDigitalOutput(LED_RED_IOMUX);
      // DL_GPIO_setPins(LED_PORT, LED_GREEN_PIN | LED_RED_PIN);
      DL_GPIO_setPins(LED_PORT, LED_GREEN_PIN);
      /* UART configuration */
      
      //skipped the rest of the code -> same as example
      
      /* Return the Plugin version info to the ROM BSL core */
      return FLASH_PLUGIN_VERSION_UART;
    }

    我´ve 称为 GPIO_reset () 和 enablePower ()。 然后我将它们初始化为数字输出、并将一个设置为低电平、将另一个设置为高电平。 两者都无法正常工作。 设置为低电平的引脚有一个上拉电阻器、它将保持高电平

    问题不在于 UART 引脚、而是 PA3、11 和 15 作为正常的 GPIO。

    相应的标头:

    #ifndef ti_msp_dl_config_h
    #define ti_msp_dl_config_h
    
    #include <ti/devices/msp/msp.h>
    #include <ti/driverlib/dl_common.h>
    #include <ti/driverlib/driverlib.h>
    #include <ti/driverlib/m0p/dl_core.h>
    
    /* GPIO configuration - UART */
    #define BSL_GPIO_UART_TX_PIN (IOMUX_PINCM1)
    #define BSL_GPIO_UART_RX_PIN (IOMUX_PINCM2)
    #define BSL_GPIO_UART_TX (IOMUX_PINCM1_PF_UART0_TX)
    #define BSL_GPIO_UART_RX (IOMUX_PINCM2_PF_UART0_RX)
    
    /* Definitions for UART */
    #define BSL_UART (UART0)
    #define BSL_UART_INTERRUPT_NUM (UART0_INT_IRQn)
    #define BSL_UART_CLOCK_SOURCE (DL_UART_MAIN_CLOCK_BUSCLK)
    #define BSL_UART_DEFAULT_BAUD ((uint32_t)9600U)
    #define BSL_UART_CLOCK ((uint32_t)32000000U)
    
    #define BSL_RE_PORT (GPIOA)
    #define BSL_RE_PIN (DL_GPIO_PIN_3)
    #define BSL_RE_IOMUX (IOMUX_PINCM8)
    
    /* Definitions for CRC */
    #define BSL_CRC (CRC)
    #define BSL_CRC_SEED ((uint32_t)0xFFFFFFFFU)
    
    #define LED_PORT (GPIOA)
    #define LED_GREEN_PIN (DL_GPIO_PIN_15)
    #define LED_GREEN_IOMUX (IOMUX_PINCM37)
    #define LED_RED_PIN (DL_GPIO_PIN_11)
    #define LED_RED_IOMUX (IOMUX_PINCM22)
    
    #endif /* ti_msp_dl_config_h */
    

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

    我尝试了 “无工程调试“、以便连接到正在运行的目标以读取寄存器、但我始终会得到  “禁用或使用密码启用 NONMAIN 内的调试访问“。  

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

    您似乎没有 为 GPIO 输出添加 DL_GPIO_enableOutput ()。

    实际上、您可以从 SDK 导入 GPIO goggle 示例、看看 SysConfig 生成的 GPIO 的初始过程是什么。

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

    这是一个简单的解决方案。 抱歉。 我n`t 看到...