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.

[参考译文] CCS/TMS570LS0714:F021库、用于 TMS570LS0714

Guru**** 2524550 points
Other Parts Discussed in Thread: TMS570LS1224, TMS570LS0714

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/878780/ccs-tms570ls0714-f021-library-for-use-with-tms570ls0714

器件型号:TMS570LS0714
主题中讨论的其他器件:TMS570LS1224

工具/软件:Code Composer Studio

您好!

我们目前有一个使用 TMS570LS1224的开发项目、其中涉及 F021闪存的一些方面、该项目在几年来一直运行良好、没有任何问题。

我们最近使用 TMS570LS0714将项目的各个部分移植到一个新项目、并且 F021 API 出现问题、导致错误。

第一个问题、我们应该将哪个 F021库用于714?  我们一直在1224上使用 F021_API_CortexR4_be_V3D16.lib、并通读 F021的文档(SPNU501G.pdf)、对于714、似乎不会对该库产生任何担忧。  我们应该使用不同的 F021库吗?

从这里可以看出、当我们使用 F021 API 执行写入或擦除操作时、我们在 fmstat 中接收到0x30000 (STATUS = 48)、这意味着即使通过擦除检查、内存位置也只有0。

但是、我想确保我不会因为同一系列中的不同部件而遗漏任何容易或明显的东西。

提前感谢、

Joe

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

    你好 Joe、

    TMS570LS0714和 TMS570LS1224使用相同的 F021 API 库: F021_API_CortexR4_BE_V3D16.lib

    TMS570LS0714闪存只有11个扇区、但 LS1224上的闪存有15个扇区。  

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

    QJ;

    感谢您的回答。

    我们似乎遇到的问题是,当我们调用 fapi_issueProgrammingCommand() API 命令时,结果为48 (0x3000),即 fmstat.inVDAT,无效数据。

    INVDAT 状态:"该位置位时表明用户尝试对1进行编程、其中0已经存在。"  但是、在发出此命令之前、我们进行空白检查、该检查显示我们要编程的区域全部为1。

    此外,如果我们在使用 CCS 进行调试期间单步执行代码,则 Fapi_issueProgrammingCommand()会在714上成功。

    此外、如前所述、多年来、此代码一直在1224 (有或无调试模式)上完美运行。

    此处是相关代码的清除版本。

    //对于此操作,dst = 0x10000
    
    Flash_Erase_Check (dst,0x10);//起始地址、长度,检查每个字节
    
    中的0xFF Fapi_initiataleFlashBanks (SYS_CLK_SecQ);
    
    Fming_setFlashBank( Fapi_FlashBankType)0;Fapi_enableFlashBanks (SYS_INT8
    
    
    
    );Ft_Intainapi_Inmain.t (*命令(0x32) (uint32_t)大小、0、0、Fapi_AutoEccGeneration);
    
    //此时我们读取 FAPI 状态并在714上获得48 

    如果您对该问题有任何其他见解、我们将不胜感激。

    提前感谢、
    Joe Shidle

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

    Joe、

    由于 LS0714只有1个闪存组、因此您需要从 SRAM 而不是闪存运行闪存 AI 库。 您是否将代码复制到 SRAM 并从 SRAM 执行代码?

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

    [编辑]

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

    QJ;

    再次感谢您的回答。

    所讨论的代码是 TI 的 SafetyMCU_Bootloader 代码、在 sys_startup.c 函数_c_int00 ()中、有一个对_copyAPI 2RAM_()的调用、在 sys_core.asm 中、该调用显示为"将闪存 API 从闪存复制到 SRAM"

    是的、我们似乎正在从 SRAM 复制和执行 FAPI 代码。

    还有事吗?

    提前感谢、
    Joe Shidle

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

    你好 Joe、

    当您初始化闪存组时、您是否检查闪存组是否已成功初始化?

    if (((fapi_initiatalizeFlashBanks ((uint32_t) SYS_CLK_FREQ))= fapi_Status_Success){

        (空) Fapi_setActiveFlashBank (((Fapi_FlashBankType) 0);
        (空) Fapi_enableMainBankSectors (0xFFFF);  
    }否则{
        返回(1);

    如果在对数据进行编程之前使用 F021闪存 API 再次擦除扇区、会发生什么情况?

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

    您好 QJ;

    感谢您的回答。

    [引用用户="QJ Wang "]

    当您初始化闪存组时、您是否检查闪存组是否已成功初始化?

    [/报价]

    我们不会在原始 F021 API 软件捆绑包中复制 TI 示例中的代码、也不会在此处检查返回值。  

    当我添加代码来检查 Fapi_initiataleFlashBanks()的返回值时,我会收到返回值8,根据参考手册,返回值为 fmstat.VOLTSTAT,它是一个内核电压状态。

    但是、请注意两点:

    1) 1)当我通过调试器运行相同的代码时、我会收到相同的 fmstat.VOLTSTAT、并且后续的闪存程序成功。

    2) 2)我添加了对 Fapi_setActiveFlashBank()和 Fapi_enableMainBankSectors ()返回值的检查、对于闪存写入成功时在调试器中运行以及闪存写入失败时在处理器上运行的两种情况、这两种返回状态都是成功的。

    因此,我怀疑 VOLTSTAT 是一个令人担忧的问题,但我愿意接受建议。

    [引用用户="QJ Wang "]

    如果在对数据进行编程之前使用 F021闪存 API 再次擦除扇区、会发生什么情况?

    [/报价]

    当我在对数据进行编程之前擦除扇区时:

    1) 1)当我通过调试器运行时、一切都是成功的(擦除、编程)。

    2) 2)当我在器件上正常运行时、芯片在擦除扇区期间复位。

    提前感谢您的进一步帮助、

    Joe Shidle

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

    还有人对此问题有什么想法吗?  这对我们来说仍然是一个问题。

    提前感谢、

    Joe Shidle

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

    你好 Joe、

    设置"VOLTSTAT"通常意味着泵电源(VCCP)降至数据表中定义的最小阈值以下。 您可以在编程/擦除操作期间捕获 VCCP 波形、以查看它是否确实降至3.0V 以下。 您在 VCCP 引脚上是否有一个非常靠近微控制器的电容器?

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

    QJ;

    感谢您的回答。

    我们在非常靠近 VCCP 引脚的位置有一个1uF 电容器。  就布局工程师而言、它"尽可能靠近引脚134。"

    我今天不能测量该引脚上的电压、但我应该能够在明天执行该操作。

    同时,我想重复我先前所说的话:


    1) 1)我们能够使用调试器单步执行代码

    2) 2)当我们以这种方式单步执行代码时、闪存写入操作成功

    3) 3)当我们以这种方式单步执行代码时、我们还会看到 VOLTSTAT 位被触发

    因此、当我们不使用调试器时、VOLTSTAT 不是闪存写入失败的原因、或者调试过程中有一些东西阻止 VOLTSTAT 中断闪存写入过程。

    我将观察 VCCP 管脚并返回给您。

    感谢您的响应和关注、

    Joe Shidle

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

    [引用用户="QJ Wang "]

    您可以在编程/擦除操作期间捕获 VCCP 波形、以查看它是否确实降至3.0V 以下。 您在 VCCP 引脚上是否有一个非常靠近微控制器的电容器?

    [/报价]

    QJ;

    我能够找到时间来测量 VCCP 管脚上的电压。  在闪存运行期间的任何时候、VCCP 电压都没有下降到3.0V 以下。  实际上、它在整个过程中保持非常非常稳定的3.3V 电压。

    无论我是单步执行代码(闪存写入成功)还是独立运行(闪存写入失败)、VCCP 都是非常稳定的3.3V 电压。

    请告诉我您还有什么想法。

    提前感谢、

    Joe Shidle