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.

[参考译文] MSP430FR5962:断开 FET 后进行调试配置构建

Guru**** 2440710 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/980153/msp430fr5962-debug-config-build-bricking-after-disconnecting-fet

器件型号:MSP430FR5962

我有一些非常奇怪的行为发生了、我无法准确地确定发生这种情况的原因。  在连接了 FET 的情况下、在发布和调试配置中、所有器件均按预期运行。  然而、在调试负载上、将其从 FET 工具上断开会使其完全砖型。  在没有调试器的情况下执行简单的加载和编程时、器件将不会引导(同样、仅在调试中)。

我将我的代码分开、并逐个添加所有内容、直到在开关外壳内将其缩小为一个函数。  有趣的是、它似乎不是能够打破它的特定线路或函数-如我所解释的那样、取消注释该开关情况内的任何内容都将导致器件变成砖型。  这个代码甚至在运行时也不会被调用-它存在于.code 段中会中断器件-并且只有在 FET 工具断开连接时才会被调用。

// Works
case (case_1):
if (!exparation_string){
return IBL_error_LEX;
}
// taged_code1
// taged_Code2
break;

//拔下 FET 工具时的设备模块(即使从未达到此代码)
case (case_1):
if (!exparation_string){
return IBL_error_code_2 break;

taged code2;tage-coun_codested}

我认为这可能是堆栈大小的问题、但同样、无论如何也不会调用代码。  不管怎样、我尝试将堆栈大小加倍(160 -> 1024)以上、但这并没有什么不同。  我认为这是编译器的问题、但编译设置在发布和调试之间几乎是相同的-包括优化级别。

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

    大家好、Brett、  

    我以前从未遇到过这个问题。 什么是未注释的代码? 如何按以下方式对 if (){}进行注释?  

    case(CASE_1):
        //if(!parsing_string) {
        //    returnIBL_ERROR_LEX;
        //}
        un-commented_code1
        un-commented_code2
        break;
    谢谢、
    Lixin  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    char * IBL_strchr (const char * s、const char c){
    while (* s!=(char) c
    ) if (!* s++)
    return NULL;
    return (char *) s;
    }
    
    //示例1:Works
    case (case_1):
    if (!string_string){
    返回 IBL_ERROR_LEX;
    }
    // string_string = IBL_strchr (string_string、'x');
    中断;
    
    //示例2:拔下 FET 工具时的器件模块(即使从未达到此代码)
    情况(case_1):
    if (!string_string){
    返回 IBL_ERROR_LEX;
    }
    string_string = IBL_strchr (string_string、"x");
    break;
    
    //示例3:砖型也是如此,尽管它只是添加了"exparation_string += 1;"而不是其他内容...
    案例(case_1):
    if (!string_string){
    返回 IBL_ERROR_LEX;
    }
    正在解析_string += 1;
    中断; 

    这个函数在很多地方使用、所以我认为这不是问题。  我确实尝试内联它、以防函数调用出现问题、但它没有影响。

    对 if 语句的评论没有什么不同。  if 语句实际上是我在切换情况下可以保留的唯一内容、而不会使其闪烁。  您可以看到、在示例3中、我尝试添加一个简单的内容、如"struing_string += 1;"和 IT 砖型。

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

    1.您使用的是 IDE 工具? CCS 还是 IAR? 您能否将其更新为最新版本并查看是否有任何改进?  

    2.能否检查 MSP430FR5962勘误 表错误 CPU47? 并尝试解决方法以查看是否有任何改进?  

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

    您是一名救生员!

    FRAM2 :origin = 0x10000、length = 0x13FF8 // 0x14000 -> 0x13FF8已针对 CPU47器件勘误表进行更改 

    就是这样。