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.

[参考译文] MSP430F2131:将程序计数器更改为从闪存运行不同的固件

Guru**** 2512775 points
Other Parts Discussed in Thread: MSP430F2131

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/988177/msp430f2131-change-program-counter-to-run-different-firmwares-from-flash-memory

器件型号:MSP430F2131

大家好,我是 SMH Technologies 的 Daniele Fingolo 软件开发商。

我们生产和销售一般用于微控制器和存储器的通用编程器。

 

我们有这个重要的客户、他们想要对 MSP430存储器中的2个固件进行编程、一个用于最终应用、另一个用于功能测试。

当电路板位于功能测试站中时、它应该在测试固件代码的开头移动到程序计数器并执行代码。 功能测试完成后、必须更换程序计数器、以便始终从此处执行最终应用的固件。

 

您能在这个主题上为我们提供帮助吗?

 

从编程过程和各种文档中、没有用于更改程序计数器和执行两个不同固件的程序。

不过、我们了解到初始程序计数器位于复位矢量中、即存储器0xFFFE-0xFFFF 的最终地址。 因此、我们更改程序计数器的想法是读取最后一个存储器扇区、将数据保存在缓冲区中、删除扇区并使用您需要的程序计数器重写扇区。

 

这可能是正确的解决方案吗?

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

    查看 MSP430F2131技术参考手册、闪存存储器的第7节、它看起来复位矢量位于段0中。  要对一个字位置进行重新编程、您需要首先将段0的内容复制到 RAM 中、然后对该段执行擦除(段是可擦除的存储器的最小部分)、然后使用复位矢量的替换地址重写段。

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

    感谢您的回答!

    我尚未尝试采用这项建议的解决办法,但我认为这是一条无问题的可行道路。 但是、我想了解还有没有其他方法、那就是使用调试设置更改程序计数器、在这里可以设置 PC。 因此、我想知道、如果能够以易失性和非永久方式修改程序计数器并使用 slau320ai 中显示的函数执行主存储器中存在的代码(如"SetPC_430Xv2 (unsigned)")、则不必在我想要的最后一个存储器位置写入程序计数器 long Addr)"。

    此致

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

    Daniele、您好!

    我想、如果您同时具有使用0xFFFE 处的复位矢量的应用代码和已编程到器件中的测试代码、则可以使用 JTAG 设置 PC 以开始运行功能测试代码。  测试完成后、器件复位就是运行应用程序代码所需的全部。  您可以使用 JTAG 将 PC 设置为0xFFFE、但您的应用代码将负责清理功能期间配置的任何外设。  复位的作用与它的含义相同。  它将重置所有内容。

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

    Daniele、您好!

    我们已经听过您的介绍、现在已经有一段时间了、因此我将假定您能够继续推进您的项目。
    我将此帖子标记为已解决,但如果不是这种情况,请单击“这不能解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题已锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。