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.

[参考译文] F28M35H52C:闪存程序 API 有问题

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/677025/f28m35h52c-problem-with-flash-program-api

器件型号:F28M35H52C

大家好、

就在我上一篇文章中、在几位器件专家的帮助下、我能够解决 M3引导加载程序设计中的问题。 下面是我的上一个主题。  

但是现在我的代码没有任何更改,当我再次尝试运行应用程序时,我感到惊讶的是,应用程序根本不会在闪存上进行擦除或编程!! 这是以前未见过的。  

我一如既往地从 RAM 运行我的闪存 API,但不确定发生了什么??? 但是、我能够从 CCS 闪存插件进行编程或擦除。 有人能不能让我知道这里会发生什么。  

谢谢  

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

    我将回顾我所说的代码更改。 我确实做了一些更改、但这是为了实现 IPC 模块、将十六进制数据从 M3传输到 C28引导加载程序。

    但是、现在我没有引用以下用于 IPC 目的的函数、使 M3擦除和程序再次工作。

    void InitializeIPCsharedRAM (void){

    /*初始化 M3toC28消息 RAM 和 SX SARAM 并等待初始化*/
    RAMMReqSharedMemAccess (S1_ACCESS、SX_M3MASTER);
    RAMMReqSharedMemAccess (S0_ACCESS、SX_M3MASTER);

    /*
    *初始化 Sx RAM 和 MtoC MSG RAM (例如使用)
    *
    HWREG (RAM_CONFIG_BASE + RAM_O_MSXRTESTINIT1)|= 0x1;
    while ((HWREG (RAM_CONFIG_BASE + RAM_O_MSXRINITDONE1)&0x1)!= 0x1)



    HWREG (RAM_CONFIG_BASE + RAM_O_MTOCCRTESTINIT1)|= 0x1;
    while ((HWREG (RAM_CONFIG_BASE + RAM_O_MTOCRINITDONE)&0x1)!= 0x1)




    /*允许保护。 *
    HWREG (SYSCTL_MWRALLOW)= 0;

    /*
    *寄存器 M3中断处理程序。 使用 C28到 M3 IPC1中断。
    *
    IntRegister (INT_CTOMPIC1、CtoMIP1IntHandler);


    /*初始化 IPC 控制器*/
    IPCMInitialize (&g_sIpcController1、IPC_INT1、IPC_INT1);


    /*启用处理器中断。 *
    IntMasterEnable();

    /*启用 IPC 中断。 *
    IntEnable (INT_CTOMPIC1);



    当我在执行 M3应用程序更新之前调用 InitializeIPCsharedRAM 时、任何闪存内容都不会被擦除或编程。 但不引用它来工作!!

    我在这里要做的就是将共享 RAM Sx 的所有权索赔给主 M3。 而我在哪里使用 Sx RAM 执行 M3闪存擦除或写入操作。

    那么,有人能告诉我调用此函数会如何影响闪存功能吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pretham、

    在此函数中、您已通过 HWREG (SYSCTL_MWRALLOW)= 0启用保护;

    在这个函数调用之后、请禁用保护(HWREG (SYSCTL_MWRALLOW)= 0xA5A5A5A5;)

    在闪存 API 指南 - www.ti.com/.../spnu595a.pdf 中提到了这一点
    "对于 M3:在调用闪存 API 函数之前、应将 MWRALLOW 配置为允许 API 写入
    受保护的寄存器写入。 在闪存 API 之后、可以根据需要禁用受保护的寄存器写入
    用法。"

    如果您遇到任何问题、请告知我们。

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