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.

[参考译文] MSP430FR6989:写入堆栈上的某些地址时出现问题

Guru**** 2611385 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/658553/msp430fr6989-problem-writing-to-certain-addresses-on-stack

部件号:MSP430FR6989

我目前正在测试远程固件更新,首先将映像复制到外部存储器(EEPROM),然后在自定义引导加载程序(从RAM (堆栈)启动)的帮助下,从EEPROM复制数据并对MSP430 FRAM或主存储器进行编程。 问题是,在引导加载程序将数据从FRAM区域复制到RAM(stack)时,RAM上似乎有特定的地址,而这些地址没有被复制到其中,从而导致指令损坏。 通过反复尝试,我后来发现了其中一些地址,并尝试直接将数据写入相同地址。 很明显,数据没有被写入,或者至少内存浏览器显示的是这种情况。 可能是什么问题?

一个多星期以来,我一直在思考这个问题,但我没有取得什么进展。

感谢您的任何帮助。

附注:我已验证我正在访问的地址是否在RAM地址范围内(在链接器和.map文件中均指定)。 我亦曾调查过MPU,怀疑可能是罪魁祸首,但事实并非如此。

Deksios

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

    您好,Deksios,

    哪些特定地址未正确写入? 您能否解释一下自定义bootloader从堆栈启动时的含义?

    最后,您是否考虑过 MSP430FRBoot?这是一个高度可自定义的主内存引导加载程序,专为与我们基于FRAM的设备配合使用而设计。 我建议您通读,您可以在该文档中找到问题的答案。

    此致,

    Caleb Overbay

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

    您好,Caleb,

    感谢您的快速回复,

    哪些特定地址未正确写入?

    但是,对我来说,一些随机地址没有被写入是没有意义的,我昨天做了进一步的测试,很显然,是CCS内存浏览器误导了我的想法。 当我尝试写入这些有问题的地址时,内存浏览器不会显示正确的值,但我尝试读取变量的值,结果是。 因此,我假设内存浏览器存在一些问题,或者如何读取正确的值? 但是,即使我发现了这一点,在拆卸程序中仍然有一些损坏的说明,我仍然被骗了。

    您还可以解释自定义bootloader从堆栈启动时的含义。

    我的意思是,在固件更新过程中,我将所有例程复制到RAM,以便以后可以在正常操作开始时收回空间。 即,我首先将i2c读取器,然后将闪存编程器,最后将引导加载程序本身复制到RAM中。 最后,bootloader开始相应地调用i2c读取器和闪存编程器。 从RAM执行时,我还确保返回地址在16位寻址范围内,因为MSP40FRxx6xx也支持CPUx体系结构。

    最后,您是否考虑过 MSP430FRBoot?

    我在一段时间前已经简要地了解了这一点,因此我可能也需要深入探讨一下。 谢谢。

    此致,

    Deksios

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这里唯一合乎逻辑的原因是MPU。 当您查看MPU时,您是否在代码中完全禁用了MPU (类似于:MPUCTL0 = MPUPW &~MPUENA)? 如果没有,请尝试禁用它并查看发生的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Deksios,

    我同意Mike的说法。 您应验证您尝试写入的区域是否未受MPU保护。 此外,您是否可以发布应该位于内存位置的内容以及您实际在那里看到的内容? 可能存在损坏的内存位置的模式,这可能有助于找出问题的根源。

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

    由于不活动,我正在关闭此线程。 如果您仍需要帮助,请随时回复此帖子,该主题将重新打开。

    此致,
    Caleb Overbay