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.

[参考译文] TMS320F280039:有关验证过程的问题

Guru**** 2398085 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1232469/tms320f280039-questions-about-the-verification-process

器件型号:TMS320F280039

大家好、

关于 ROM 重写处理后的验证处理,如果 Fapi_doVerify ()的一些参数是局部变量,则返回 NG。

原因。 在手册中它是一个本地声明。

我在下面附上了源代码、请检查是否正确。

************************************************μ A
unsigned int program_data_uh[256];←如果您在此处声明它、它将无法正常工作(验证 NG)

void write_state (REP_CTRL* CTRL_rep)

unsigned long int* program_data32_uw;
// unsigned int program_data_uh[256];←如果您在此处声明它,它将无法正常工作(验证 NG)
unsigned int data_len_uh = 0;
unsigned int flg_error_UB = 0;
无符号长整型 int Index_UW = 0;
无符号 int i = 0;
无符号 int j = 0;
unsigned int flg_error_ub;


Fapi_StatusType oReturnCheck;
Fapi_FlashStatusType oFlashStatus;
Fapi_FlashStatusWordType oFlashStatusWord;

program_data32_uw =(unsigned long int*) program_data_uh;

FLG_ERROR_UB = 0;

data_len_uh = 128;
用于(I=0;I<(256);I++){
program_data_uh[i]= 0x0000;
}

用于(i=0;i<data_len_uh;i++){
program_data_uh[i]= i;
}

oReturnCheck = Fapi_initializeAPI (F021_CPU0_BASE_ADDRESS、120);
if (oReturnCheck!= Fapi_Status_Success){
FLG_ERROR_UB =开启;
}

oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank0);
if (oReturnCheck!= Fapi_Status_Success){
FLG_ERROR_UB =开启;
}

index_uW = 0x86000;
while (((Index_uW < f_start_address_data_uW + data_len_uH)&&
oReturnCheck == Fapi_Status_Success){

oReturnCheck = Fapi_issueProgrammingCommand ((unsigned long int*) Index_uW、(unsigned int*) program_data32_uW、8、0、0、 Fapi_AutoEccGeneration);

while (Fapi_checkFsmForReady ()== Fapi_Status_FsmBusy);

如果(oReturnCheck!= Fapi_Status_Success){
FLG_ERROR_UB =开启;
}

oFlashStatus = Fapi_getFsmStatus ();
如果(oFlashStatus!= Fapi_Status_Success){
FLG_ERROR_UB =开启;
}

oReturnCheck = Fapi_doVerify ((unsigned long int*) Index_uW、4、program_data32_uW、&oFlashStatusWord);
if (oReturnCheck!= Fapi_Status_Success){
FLG_ERROR_UB =开启;
}

index_uw += 8;
program_data32_uW += 4;
}

}

************************************************μ A

此致、

SAI

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    unsigned int program_data_uh[256];←如果您在此处声明、它将无法正常工作(验证 NG)

    这是代码的第一行。 您是说它工作正常吗(验证正常)?

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

    此外、请使用"插入->代码"选项。 查看代码的结构会更容易。

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

    你好,Kier

    全局声明没有问题。 如果这是一个局部声明,它是 NG。

    此致、

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

    可能问题在于对齐。 program_data_uh []的对齐方式应为128位对齐。 也许它在全局声明时正确对齐、而在使用栈(局部)时不正确对齐。 或许您可以在调试器中检查它。

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

    你好,Kier

    我了解对齐。
    然而、应该如何处理局部变量的对齐?

    您能告诉我如何检查吗?

    此致、