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.

[参考译文] TMS320F28P650DH:SYSCTL_DELAY ()将崩溃、并出现 ESTOP0

Guru**** 2468610 points
Other Parts Discussed in Thread: LAUNCHXL-F28P65X, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1478541/tms320f28p650dh-sysctl_delay-crashing-with-estop0

器件型号:TMS320F28P650DH
主题中讨论的其他器件:LAUNCHXL-F28P65XC2000WARE

工具与软件:

您好!

我的目标:  将"C2000 MCU 上带器件复位功能的实时固件更新"(spruiu8)示例移植 到 LAUNCHXL-F28P65X。

背景:  

我从工作示例项目"C2000微控制器的串行闪存编程"(sprabv4)开始

      F28P65x SCI 闪存内核 C2000Ware: driverlib\f28p65x\examples\c28x_dual\flash_kernel  

[CPU1_RAM]配置正常生成和运行。  然后 向其中添加了闪存构建配置(BANK0_LDFU、BANK1_LDFU)。  

本期:  当进入或超过 Device_init ()中的"SYSCTL_DELAY (23U)"时、BANK0_LDFU 和 BANK1_LDFU 都会因 ESTOP 而崩溃。

下面是图片和项目文件。  我发现这个帖子似乎是类似的、但到目前为止它并没有帮助我解决这个问题。

LAUNCHXL-F28379D:TMS320F28379D 项目中缺少 SYSCTL_DELAY ()函数时出现问题

如果有任何帮助、将不胜感激。

谢谢!

Rob McCullough

CPU1_RAM_works.png

BANK0_LDFU_before_stepping_into_SysCtl_delay.png

BANK0_LDFU_after_stepping_into_SysCtl_delay.png

项目:

e2e.ti.com/.../flash_5F00_kernel_5F00_c28x_5F00_dual_5F00_ex1_5F00_c28x1.zip

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

    Robert

    1.我还没有看过你的项目文件。 您能否解释闪存构建配置的设计? BANK0_LDFU 配置的入口点是什么-此后的一组预期步骤(器件初始化、检查有效应用、分支到应用)?

    2、那么实际行为是什么呢? RAM 与闪存配置的.map 文件中的 SYSCTL_DELAY 在哪里? 编译闪存编译配置项目时您是否收到任何编译警告?

    3.如何将闪存构建配置编程到器件中? CCS?

    谢谢!

    SIRA

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

    尊敬的  Sira:

    我解决了我的问题。

     将示例移植到 F28P55x 项目时、我忘记将_FLASH 添加到编译器预定义列表。  所以,下面的 memcpy()和  

    未调用 Flash_initModule()。

    void Device_init(void)
    {
        //
        // Disable the watchdog
        //
        SysCtl_disableWatchdog();
    #ifdef CMDTOOL
        CMD_init();
    #endif
    
    #ifdef _FLASH
    #ifndef CMDTOOL
        //
        // 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);
    #endif
        //
        // Call Flash Initialization to setup flash waitstates. This function must
        // reside in RAM.
        //
        Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);
    #endif
    
    #ifdef CPU1
    
        //
        // Set up PLL control and clock dividers
        //
        SysCtl_setClock(DEVICE_SETCLOCK_CFG);

    再次感谢您的帮助、

    Rob