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.

[参考译文] MSP432P401M:在 BSL 下载代码时执行的位置

Guru**** 2589265 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/625689/msp432p401m-where-to-execute-while-bsl-downloading-code

器件型号:MSP432P401M

您好!  

我的客户询问:

我正在使用 MSP432引导加载程序。  现在、我有一个可以使用 TI BSL 脚本程序成功引导加载的项目。  我已‘此脚本,因此我可以将代码映像下载到内存(0x00200000)中的“保存位置”,以验证我是否可以将映像放置在我想要的位置。

最后、我希望创建一个系统、该系统将下载映像(可能通过无线方式)并将其写入闪存、然后在映像加载并验证后、执行脚本以将此新映像复制到实际的可执行区域。  我已经编写了驱动程序库代码来执行此验证并将代码从一个区域移动到另一个区域。

虽然 driverlib 代码可以从 ROM 中运行、但在写入闪存的过程中、我仍然需要我的小引导加载脚本在某个位置运行、因此我需要将存储器分区到三个区域: 最后一个代码图像区域为0、我新下载的图像为0x200000、我的脚本代码位于其他地方。  我想知道、您是否可以向我指出一些执行类似函数的示例代码、以便我可以看到构建和定位存储器中各种片段的最佳方法、以及如何最好地将片段从一个片段传递到另一个片段?

此外、我还查看了资源浏览器(来自 FLASH_program_memory 示例)上提供的示例代码、我复制了这些代码、但仍然无法使内部复制函数正常工作。  我所做的与示例不同的一件事是不设置编程速度–我将其保留为默认值。  是否需要该代码(如下所示)?

  /*将 MCLK 设置为48MHz 以加快编程速度*/

   MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);

   FlashCtl_setWaitState (FLASH_BANK0、2);

   FlashCtl_setWaitState (FLASH_BANK1、2);

   MAP_CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 48);

感谢您的建议!

Blake

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

    Blake、

     您可以在此处找到一个无线下载示例:

    我需要研究这个具体的例子。  设置 Vcore 和等待状态很重要。   

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

    尊敬的 Chris:

    这是在您发布前一封电子邮件后不久出现的(我向他发出 了上面的数据/链接、我等待他的回复):

    我已经解决了我的一些问题。  我现在可以使用自己版本的 FLASH_program_memory 示例。  我未正确解锁/锁定–我在组/扇区和绝对地址之间感到困惑。  我无法想象为什么在同一驱动程序库中使用两种完全不同的寻址方式的 API。  我仍然无法完全确定是否正确,但我的示例版本现在可以正常工作。  如果我可以指向一个完整的存储器映射、此映射显示了完整的闪存区域、显示了地址和组/扇区、这将会很有帮助。

     

    此外、使示例正常工作不需要等待状态和速度控制代码。

     

    我还“发现”地址0x200000映射到“信息内存”,我实际上是要将代码映像加载到0x20000,而不是0x200000。  这就是我现在所在的位置–移动我的引导加载映像、然后查看我是否可以通过代码片段移动它。  

     

    此致、

     

    Blake