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.

[参考译文] MSP430F1232:释放模式中的问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1520335/msp430f1232-problems-in-release-mode

器件型号:MSP430F1232
Thread 中讨论的其他器件:UNIFLASH

工具/软件:

您好、

有人可以指导我如何解决这个问题吗? 在调试模式下编译代码并将其编程到芯片后,它在调试模式下工作,但在释放模式下编译并在芯片上编程代码后,它不起作用。 它似乎停止了。 我无法理解发生了什么。 应该对设置进行一些更改吗? 代码执行的速度是否可能会以这种方式改变?

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

    可以检查 RESET 引脚电压吗?

    您能否尝试对代码示例进行编程以查看它是否与软件有关?

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

    Debug 和 Release 之间最显著的区别可能是优化级别--在 Debug 中通常没有优化 (-O0)、而对于 Release、CCS 从全局优化 (-O2) 开始。

    当代码运行速度变慢时、优化器会产生不可见的细微竞态条件。

    尝试在 Release Build 中关闭优化(将“Project->Properties"->"CCS Build"->"Compiler"->"Optimization"->"Optimization“ Build"->"Compiler"->"Optimization"->"Optimization Level"“ Level"设置“设置为“为"off"“"off")“)。“。</s>“ “““

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

    尊敬的 Eason:

    感谢您的答复。 我检查了 3.2 伏相同的电压。如何写一个代码样本,你能解释更多吗?! 原因是什么?

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

    您好 Bruce、感谢您的回复。

    是的、您是对的。 但我关闭了优化。 即使在另一个测试中、我的优化设置与调试 模式相同、但结果仍然相同!

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

    这可能是程序性的:您是使用调试器加载代码(在每种情况下)、还是为每个映像执行不同的操作?

    若要隔离这一点(如 EASON 所示)、请尝试加载一个非常简单的程序、例如 fet120_1.c、如下所示:

    https://dev.ti.com/tirex/explore/node?node=A__AALMRB-xagV6Pr0Cn25PCQ__msp430ware__IOGqZri__LATEST

    但遵循相同的步骤。

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

    是的、Bruce。 首先、我在调试模式下编译代码、然后使用 FET_pro430 应用程序将十六进制文件上传到芯片中。 我还在释放模式下执行相同的过程。 关于简单的代码、我编写了该代码、但有趣的是它无法在调试和释放模式下同时工作。 只要我将调试器连接到电路板、然后在调试环境中激励它就可以工作、我可以看到引脚正在切换、但在芯片中上传这个简单的代码后、它根本不工作。 太奇怪了! 我正在使用 CCS12、但它不应该有任何问题、我也会尝试使用 CCS20、然后分享结果  

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

    仍然相同。 到底发生了什么事?

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

    您能分享一下原理图吗?

    您可以在自由运行后再次连接 MCU 以检查 MCU 的位置吗?

    1.无需编程即可启动设备

    2.点击“连接“,然后查看 PC 现在的位置。

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

    我记得 Elprotronic GUI 中有一个复选框、用于“下载后重置目标“或类似的内容。

    如果您的测试包括(单独)重置或下电上电、那么当然不需要这样做、但如果您希望 MCU 立即“亮起“、您可以尝试一下。

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

    尊敬的 Eason:

    当然、我附上了与芯片和  PC 点屏幕截图相关的原理图。 请查找附件。 我还分享了 Bruce 建议的简单测试代码、并做了一些修改。 在原理图中、我 移除了连接到 P1.0 和 P2.4 的电阻器以更准确地测试引脚。  

    这是代码

    #include

    内部 main (void)

    WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器

    无符号字符 I;
    BCSCTL1 |= XT2OFF;// XT2 = HF XTAL
    BCSCTL1 |= XTS | DIVA_3;// DIVA_3 将产生 500kHz 的 ACLK 频率  


    应该做

    IFG1 且=~OFIFG;//清除 OSCFault 标志
    for (I = 0xFF;I > 0;I--);//设置标志的时间
    }
    while ((IFG1 和 OFIFG)!= 0);//仍设置 OSCFault 标志?

    BCSCTL2 = SELM1 + SELM0 + SSEL;//LFXT1CLK 选择用于 SMCLK 和 MCLK

    disable_interrupts();
    P1IE 且=~0xFF;
    P2IE 且=~0xFF;

    P1SEL 且=~0xFF;//设置为 GPIO
    P2SEL 且=~0xFF;

    P1DIR |= 0x01;
    P2DIR |= 0x10;

    P1OUT |=0x01;
    P2OUT |=0x10;


    对于(;;)

    Volatile unsigned int I;

    P2OUT ^= 0x10;//使用异或切换 P1.0
    P1OUT ^= 0x01;
    I = 65000;//延迟
    执行(I-);
    while (i!= 0);
    }
    }

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

    只需考虑连接调试器时代码在调试环境中正常工作。 但是、在调试或释放模式下进行编程后、它不起作用。 但我已经提到的主代码在调试模式下工作(在不带调试器的闪存编程之后)、但在释放模式下根本不工作!! 不有趣吗?!!!

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

    您是说、在自由运行模式下重新连接器件后、它会在 c_int00 停止吗?

    但在调试或发布模式下进行编程后、它不起作用。 但我已经提到的主代码在调试模式下工作(在不带调试器的闪存编程之后)、但在释放模式下根本不工作!! 不有趣?!!

    您能帮助制作一个表格来展示测试条件和结果吗? 我在调试或释放模式下完成的工程中有点迷路、并且器件处于调试模式或自由运行/释放模式。 我也被“在不使用调试器的情况下编程闪存之后“所混淆。 如何进行编程?

    老实说、我们以前在 MSP430 上没有遇到这个问题。 您是否可以帮助使用示波器捕获引脚信号和 Vcc 信号、以查看是否存在任何超出规格的情况。

    我会订购一些 F1232 样本来检查我。 发货需要大约 1 周时间。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的意思是、在自由运行模式下重新连接器件后、它会在 c_int00 停止吗?

    不、我认为它 在 c_int00 停止。 我刚刚展示了调试环境的屏幕截图、说它在那里正确地完成了工作、但在闪存编程后它无法正常工作!   

    [引述 userid=“372580" url="“ url="~“~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1520335/msp430f1232-problems-in-release-mode/5848595 #5848595“]我也被“在没有调试器的情况下进行程序闪存之后“所混淆。 您如何编程?

    我的意思是、将编译的代码(在调试模式或释放模式下)发送到芯片、然后重新启动电路板。 此代码不起作用。 请看一下这两张图片。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我也被“在没有调试器的程序闪存之后“所混淆。 您如何编程?

    我是指在其中一种模式下使用调试器编程后、然后断开调试器...

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

    正如 我在映射文件中注意到的、入口点符号:“_c_int00 _noinit_noargs“ 地址:0000e026 。 是否必须在 _c_int00 中设置它? 还是没关系? 如果是、如何进行修改?

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

    以下是在不进行编程和复位的情况下检查 MCU 运行时状态的步骤:

    1.打开配置

    2.打开项目中.ccml 文件的属性

    3.禁用停机和复位功能

    4.启动配置

    5.按连接

    6.加载符号

    7.按 STOP。 现在、您将看到代码现在所在的位置。

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

    根据我的经验、器件应该不会出现这个问题。 可能器件在自由运行中保持复位。

    我建议您在连接后检查这些寄存器。

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

    感谢 Eason 提供此信息。 我按了“暂停“、然后发送了屏幕截图。 还 包括这些标志。  

    FET_pro430 是否可能无法正确执行该工作?!!

    如果 我通过闪存底部加载代码(参见下图)、则编码将 加载到芯片中并正常工作、但 我不确定代码将在调试  模式或释放模式下加载到芯片中。您是否知道代码在哪种模式下编程到芯片中?

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

    如果您选择加载符号、它不会对器件进行编程。

    如果您选择加载程序、它将对器件进行编程。

    从您的第一张图片中可以看到、MCU 似乎可以正常工作。 您可以检查寄存器吗?

    如果在主代码中添加 GPIO 切换操作、会发生什么情况。

    我想到的另一件事是、您可能对器件执行完全重新加电、软件将正常工作。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您选择加载程序、它将对器件进行编程。

    我的主要关注点就在这里。 如果我选择加载程序、它会在调试模式或释放模式下对芯片进行编程? 我想知道的是、 当我们在其中一种模式下编译代码、然后对芯片进行编程时、芯片操作是否有任何区别?  

    关于加载芯片,我发现,在按下自动底部的软件 ( FET_PRO430) 它正在做这个过程,并向我显示编程是成功的,但在现实中它没有 做的工作!! 这就是为什么在使用此软件进行更改和加载代码后,代码没有完成工作的原因。  

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

    与性能水平相差不大。

    您的意思是、问题在于 FET-PRO430 不将代码编程到 MSP430 中? 如果是、您可以尝试改用 Uniflash。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的意思是问题在于 FET-PRO430 不将代码编程到 MSP430 中? 如果是、您可以尝试改用 Uniflash。

    好的酒店 感谢您的指导。 是的,我安装了 UniFlash ,它不能找到目标在所有一次它可以编程芯片. 我想在属于 MSPFlasher.exe 或我的计算机的 DLL 文件中有一些问题。 总而言之、解决此问题后、我将再次测试代码、以查看两种模式下的代码性能是否相同。 感谢您的支持Pray

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

    另一种可能性是 FET-PRO430 不受 TI 污染。 FET-PRO430 可能来自第三方。

    我建议您订购像这一个 (MSP-EXP430G2ET) 这样的 MSP430 LaunchPad、以使用板载调试器。

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

    感谢 Eason 的建议。 现在、我安装了 CCS V20 并将引脚配置为输出、然后将计时器配置为在 500kHz 频率下工作。 最后的结果是每 100 μ s 标记一次正确工作。  我在释放和调试模式下进行了测试、得到了相同的结果。 由于您在这一 领域有更多的经验、因此您认为在将代码加载到芯片时、这两种模式之间是否存在一些差异?  

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

    不可以、MCU 性能将相同。 唯一的区别是、调试模式下的代码可能比释放模式下的代码大一点、因为调试模式下的代码会添加一些调试信息。 这取决于卓越的性能。

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

    好的。 只是一个问题。 是否有方法可以 衡量从执行到  完成函数所需的时间?  

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

    一种方法是启用时钟。 然后您将在触发断点后看到不同的时钟计数器。 但我不确定这是否适用于该器件。

    另一种方法是使用 GPIO 切换操作并在外部进行测量。

    最后一种方法是使用计时器作为时钟。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    然后您将在触发断点后看到不同的时钟计数器。

    在哪里可以看到时钟计数器?