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.

[参考译文] TMS320F28377D:有关 FlashAPI 的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1130312/tms320f28377d-question-about-flashapi

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

您好的团队:

客户的项目分为引导加载程序和应用程序、  闪存 A-D 中的引导加载程序以及 闪存 E-K 中的应用程序

当使用 JTAG 进行调试时、程序可以正常工作、但是在将程序加载到闪存并运行后、程序无法正常运行。

客户似乎已将代码从闪存复制到 RAM:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
memcpy(&RamfuncsFapiRunStart, &RamfuncsFapiLoadStart, (size_t)&RamfuncsFapiLoadSize);
CMD
.TI.ramfuncFapi : {
--library=../F2837xD_flashapi/lib/F021_API_F2837xD_FPU32.lib
}
LOAD = FLASHG,
RUN = RAMD1,
RUN_START(_RamfuncsFapiRunStart),
LOAD_START(_RamfuncsFapiLoadStart),
LOAD_SIZE(_RamfuncsFapiLoadSize),
PAGE = 0, ALIGN(4)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但项目仍然有这个问题。

此致、

绿色

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

    其他:

    CCS  版本:11.0.0.00012、SDK 版本: C2000Ware_4_00_00_00

    memcpy 代码

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifdef _FLASH
    //
    // Copy time critical code and flash setup code to RAM. This includes the
    // following functions: InitFlash();
    //
    // The RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart symbols
    // are created by the linker. Refer to the device .cmd file.
    //
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    memcpy(&RamfuncsFapiRunStart, &RamfuncsFapiLoadStart, (size_t)&RamfuncsFapiLoadSize);
    memcpy(&RamfuncsFpuRunStart, &RamfuncsFpuLoadStart, (size_t)&RamfuncsFpuLoadSize);
    memcpy(&RamfuncsUserRunStart, &RamfuncsUserLoadStart, (size_t)&RamfuncsUserLoadSize);
    //
    // Call Flash Initialization to setup flash waitstates. This function must
    // reside in RAM.
    //
    Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);
    #endif
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    闪存初始化并调用 Eras\Write 函数:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*
    * BswEep.c
    *
    * Created on: 2022��4��5��
    * Author: Thinkpad-T14
    */
    #include "Includes.h"
    #pragma CODE_SECTION(BswEep_init, ".User.ramfunc");
    uint16_t BswEep_init(void)
    {
    uint16_t ReturnValue=0;
    Fapi_StatusType oFapi_Status1,oFapi_Status2;
    Flash_claimPumpSemaphore(FLASHPUMPSEMAPHORE_BASE, FLASH_CPU1_WRAPPER);
    EALLOW;
    oFapi_Status1 = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, DEVICE_SYSCLK_FREQ/1000000);
    Flash_disableECC(FLASH0ECC_BASE);
    oFapi_Status2 = Fapi_setActiveFlashBank(Fapi_FlashBank0);
    Flash_enableECC(FLASH0ECC_BASE);
    EDIS;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    绿色环保、

    我将在几天内回顾并返回给您。

    谢谢、此致、

    Vamsi

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

    绿色环保、

    请 提供 有关您的陈述的更多详细信息、"但在将程序加载到闪存并运行后、它无法正常运行"。

    您是否可以提供任何特定的错误/状态来进行分析?

    谢谢、此致、
    Vamsi

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

    其余程序正常运行、与 Fapi 相关的函数将返回错误值。

    例如执行:

    oFapi_Status = Fapi_issueProgrammingCommand (x、x、4、0、0、Fapi_AutoEccGeneration)

    返回值状态为:

    Fapi_Error_Fail=500

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    typedef enum
    {
    Fapi_Status_Success=0, /* Function completed successfully */
    Fapi_Status_FsmBusy, /* FSM is Busy */
    Fapi_Status_FsmReady, /* FSM is Ready */
    Fapi_Status_AsyncBusy, /* Async function operation is Busy */
    Fapi_Status_AsyncComplete, /* Async function operation is Complete */
    Fapi_Error_Fail=500, /* Generic Function Fail code */
    Fapi_Error_StateMachineTimeout, /* State machine polling never returned ready and timed out */
    Fapi_Error_OtpChecksumMismatch, /* Returned if OTP checksum does not match expected value */
    Fapi_Error_InvalidDelayValue, /* Returned if the Calculated RWAIT value exceeds 15 - Legacy Error */
    Fapi_Error_InvalidHclkValue, /* Returned if FClk is above max FClk value - FClk is a calculated from HClk and RWAIT/EWAIT */
    Fapi_Error_InvalidCpu, /* Returned if the specified Cpu does not exist */
    Fapi_Error_InvalidBank, /* Returned if the specified bank does not exist */
    Fapi_Error_InvalidAddress, /* Returned if the specified Address does not exist in Flash or OTP */
    Fapi_Error_InvalidReadMode, /* Returned if the specified read mode does not exist */
    Fapi_Error_AsyncIncorrectDataBufferLength,
    Fapi_Error_AsyncIncorrectEccBufferLength,
    Fapi_Error_AsyncDataEccBufferLengthMismatch,
    Fapi_Error_FeatureNotAvailable /* FMC feature is not available on this device */
    } ATTRIBUTE_PACKED Fapi_StatusType;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    绿色环保、

    他们是否能够成功执行 C2000Ware 中的闪存编程示例?

    谢谢、此致、
    Vamsi