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.

[参考译文] MSP430F5358:使用 MSPBoot 模板使用基于主存储器的引导加载程序时出现问题

Guru**** 2392445 points
Other Parts Discussed in Thread: MSP430F5358

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1118245/msp430f5358-issue-in-using-main-memory-based-bootloader-using-mspboot-templates

器件型号:MSP430F5358

大家好、团队、

我们正在尝试 开发主存储器引导加载程序、以便 使用 UART (不带 FET)对我们的控制器进行现场编程。 为此、我们遵循了 SLAA600d 中定义的过程。 我们下载了 MSPBoot 模板、并根据文档为双映像 UART 模式20位创建了引导和应用项目。

我能够 使用 UART 将映像发送到控制器、并且可以看到已在存储器中下载映像、经过 CRC 验证、已将下载的映像复制到主应用程序区域。 但是、一旦控制器重新启动、应用程序就不会运行。 为此、我们检查了主应用程序区域、可以看到前4个字节被0xFF 擦除/覆盖。

我们无法确定前4个字节被覆盖的原因。

XT2 32MHz、MCLK = ACLK = 16MHz、SMCLK = 8MHz、UART = USCI1、波特= 115200。

以供参考、连接引导和应用程序项目。

谢谢

Ashish

e2e.ti.com/.../MSPBoot_5F00_Project.zip

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

    Ashish、您好!

    您是不是说位于0x8002~0x8006处的数据 将更改为0xFF?

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

    您好、Gary、

    从0x8000到0x8003的数据将更改为 FF

    Ashish

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

    Ashish、您好!

    首先、0x8000~0x8001用于由主机器件计算和写入的应用程序的 CRC 值。 应用程序代码从0x8002开始、当我构建您在上面提供的项目时、其地址为0x8002~8003处的数据为0x8100、如下所示

    我认为您的主机端存在一些问题。

    此致

    Gary

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

    您是指发送数据的脚本?

    我已验证从主机传输完成后下载的数据是否正确。 还验证了 CRC 是否已验证、引导加载程序代码是否已将数据正确复制到所需位置。 但在复位后、数据损坏。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="437399" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontrollers-forum/1118245/msp430f5358问题-使用主内存-引导加载程序-使用 mspboot-templates/4146471"[引用的脚本]

    否、因为  SLAA600d 中的演示使用主机 MCU 来处理此问题、如下所示。

      

    [引用 userid="437399" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1118245/msp430f5358问题-使用主存储器-引导加载程序-使用 mspboot-templates/4146471"引用已从主机完成数据传输后下载的正确数据。]

    下载区域为 385FC-67FF7、请确保。

    [引用 userid="437399" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1118245/msp430f5358问题使用主存储器引导加载程序-使用 mspbootboot-templates/4146471#4146471]正确地引用了引导加载程序位置所需的数据[引用]

    实际应用领域位于 8000F3FF 和10000-385FB (前两个字节是 CRC 值)、完成后您能帮您捕获数据吗?

    [引用 userid="437399" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontrollers-forum/1118245/msp430f5358问题-使用主内存-引导加载程序-使用 mspboot-templates/4146471"、但在数据重置后报价已损坏[#4146471]

    如何执行复位?

    我很好奇扇区大小是512字节、如果发生擦除、它应该擦除8000~8200。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="319723" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontrollers-forum/1118245/msp430f5358问题-使用主内存-引导加载程序-使用 mspboot-templates/4146537#4AA6537] 、因为在下面的主机中、不使用此例中引用 SL6537#4600d[引用此例]。

    因此、我们基本上 是使用 PC COM 端口将数据发送到主存储器引导。 我们有一些 C 代码、这些代码模拟发送数据的命令。

    [引用 userid="319723" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontrollers-forum/1118245/msp430f5358问题使用主存储器引导加载程序使用 mspbootboot-templates/4146537#465387]] 请确保下载区域为 fc#465387[#fc]。

    是的、我们将确保传输的数据仅进入此位置。

    [引用 userid="319723" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontrollers-forum/1118245/msp430f5358问题使用主内存引导加载程序使用 mspbootboot-templates/4146537#46537] 当您在第一个应用程序区域捕获实际数据时,可以引用两个数据[46537#410000],以获取数据。

    当数据从下载区域复制到主应用程序区域时、我将尝试获取转储。

    [引用 userid="319723" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1118245/msp430f5358问题-使用主存储器-引导加载程序-使用 mspboot-templates/4146537#4146537]如何复位报价单[?]

    主存储器引导加载程序在验证下载的二进制文件并将其复制到应用程序区域后、具有重置控制器的代码。

    #if 已定义(HW_RESET_BOR)
      //强制执行软件 BOR
      PMMCTL0 = PMMPW | PMMSWBOR;
    其他
      //通过写入不正确的看门狗密码来强制 PUC 复位
      WDTCTL = 0xDEAD;
    #endif

    谢谢

    Ashish

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

    当您完成应用程序更新后、当重置器件时、它将检查应用程序重置矢量是否存在、如下所示

    然后它将启动应用程序代码。 因此、不知道是否发生擦除事件。

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

    更新:

    刚刚检查并意识到、当下载完成且引导加载程序验证 CRC 时、会为应用程序区域发出擦除命令。 在这里、它会擦除从位置0x385FC 到0x385FF 的前四个字节。

    努力重新定位该区域、使其不会落入某个段边界中。

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

    我已修改引导加载程序的链接器文件。 现在擦除未发生。 但现在的问题是、尽管一切都正常、但它仍然不能跳转到应用程序。 如果我手动重新运行引导加载程序、以下代码段将失败

    //验证应用程序并在需要时跳转
    if (TI_MSPBoot_AppMgr_ValidateApp ()=true)
      TI_MSPBoot_APPMGR_JUMPTOAPP ();

    基本上、为了强制设置引导加载程序模式、硬件进入条件会一直保留在引导加载程序中。

    HW_ENTRY_Condition   (!(P1IN 和 BIT1)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="437399" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1118245/msp430f5358问题-使用主存储器引导加载程序-使用 mspbootboot-temples/4146720#4146720]已修改链接器文件引用。

    如何进行修改?  

    您可以添加 GPIO 切换事件以显示函数  TI_MSPBoot_APPMGR_JUMPTOAPP()是否已执行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~用户名="319723" url="支持/微控制器/MSP-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1118245/msp430f5358问题使用主存储器引导加载程序使用 mspboot-templates/4148033#4148033]如何修改?  [/报价]

    由于地址0x395FC-0x395FF 与擦除期间应用程序区域的最后一个段位于同一段中、因此我们修改了下载区域、从0x39600开始、并相应地减小了主应用程序的大小。 这样、我就能避免擦除。

    [引用 userid="319723" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontrollers-forum/1118245/msp430f5358问题-使用主存储器引导加载程序-使用 mspspboot-templates/4148033#msp4gpio]  如果已经执行了 tog_msp4gpio/PM4gp[_event]、则可以将其添加到"msp4gpio/PM4gp[_event]。

    加载应用程序后、我们的应用程序将切换 GPIO。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="437399" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1118245/msp430f5358问题使用主存储器引导加载程序使用 mspboot-templates/4148115#4148115]
    您可以添加 GPIO 切换事件以显示函数  TI_MSPBoot_APPMGR_JUMPTOAPP()是否已执行。

    加载应用程序后、我们的应用程序将切换 GPIO。

    [/报价]

    我不想检查应用中的 GPIO 切换事件。 我想检查  TI_MSPBoot_APPMGR_JUMPTOAPP()是否已被执行。 您可以在此函数之前放置 GPIO 切换事件。

     我建议修改应用领域、如下所示

    /*应用程序区域:8000F3FF 和10000-38400*/
    //下载区域:385FC-67FF7*/
    /*引导区域:F400-FFF*/

    请同时修改引导和应用程序项目 CMD。

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

    您好、Gary、

    我能够摆脱由于硬件进入引脚而产生的强制启动。 由于该引脚强制执行引导、因此始终在硬件中设置该引脚。 将硬件入口引脚更改为 其他空闲的 GPIO 后 、它可以正常工作。

    [引用 userid="319723" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1118245/msp430f5358问题使用主存储器引导加载程序使用 mspboot-temples/41483658#4148365]"

    我建议修改应用领域、如下所示

    /*应用程序区域:8000F3FF 和10000-38400*/
    //下载区域:385FC-67FF7*/
    /*引导区域:F400-FFF*/

    请同时修改引导和应用程序项目 CMD。

    [/报价]

    我将尝试使用您建议的设置。

    谢谢

    Ashish