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.

[参考译文] TMS320F2.8377万S:使用FLASH_PROGRAMM_cpu01.c示例使用F021 API的闪存编程

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/621171/tms320f28377s-flash-programming-using-the-flash_programming_cpu01-c-example-using-f021-api

部件号:TMS320F2.8377万S
主题中讨论的其他部件:controlSUITEC2000WARE

我需要将一些校准数据永久保存到闪存中,我目前正在使用Launchpad LAUNCHXL-F2.8377万S。 我加载  了控制滑槽中的示例flash_programming_cpu01.c。 如果我理解正确,该示例将使用F021API在闪存中对从 地址0x8.4万和0x8.2万开始的FF字节进行编程。

现在,如果我评论 example_don()函数(停止处理器),并在  example_CallFlashAPI()(该函数将对闪存进行编程)之后用断点暂停处理器,然后使用内存浏览器工具检查闪存, 我找到所有数据的相应地址的值为0xFFFF。 出于这个原因,我认为闪存根本没有编程,所以示例似乎不起作用。

我需要帮助。 非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我写这封信是为了让您知道,一位C2000小组成员已被指派担任此职位。 我们将尽力解答您的疑问。 但是,由于我们的其中一个站点受到恶劣天气的影响,因此可能会延迟响应。

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

    Andrea,

    可能是您在内存窗口中检查的地址不正确。  我记得正是Bank1的扇区P被示例擦除/编程-它是0xC2000 (而不是0x8.2万)。  请检查。

    您是否更改了示例中的代码或链接程序cmd文件中的任何内容?  确保将泵信号灯分配给正在使用的FMC。  另外,请注意 ,每当 您在FMC0和FMC1之间切换时,Fapi_initializeAPI()和Fapi_setActiveFlashBank()函数都必须使用适当的参数调用。

    如果您需要有关这些功能的更多详细信息,请查看: http://www.ti.com/litv/pdf/spnu630 

    我们的回答可能会延迟。

    谢谢,此致,

    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Vamsi:
    我使用了在控制套件中找到的示例,在没有任何更改的情况下对其进行了测试,因此我认为它应该起作用。
    正如您在函数实现void example_CallFlashAPI(void)的注释中所看到的那样,该示例应开始对来自自动生成的ECC的Bzero_sectorb_start (0x8.4万)中的0xFF字进行编程,并从不带ECC的Bzero_sectorb_start (0x8.2万)中编程。 这些地址可在头文件flash_programming_c28.h中找到
    使用内存浏览器检查这些地址只返回0xFFFF。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Andrea,

    您是否可以尝试最新C2000Ware - www.ti.com/.../c2000ware的闪存编程示例而不是controlSUITE

    我不确定controlSUITE中的示例是否有任何问题,现在无法测试(由于飓风而关闭办公室)。

    在您的回复中,您最初提到的Bzero_sectorb_start是0x8.4万,但后来提到的是0x8.2万。 请确保您引用的地址正确无误。 无论如何,我建议您开始使用C2000Ware。

    请尝试并告诉我。

    谢谢,此致,
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我对此深感抱歉,希望您,您的家人和您的朋友都可以。
    感谢你们的帮助

    关于flasgh内存扇区,我写地址时出错:
    从Bzero_sectorb_start (0x8.2万)->不带ECC
    从Bzero_SectorC_START (0x8.4万)->使用ECC

    我尝试从C2000ware导入相同的项目,但在加载文件"F2837xS_GlobalVariableDefs.c"时失败
    ->检索资源'/flash_programming_cpu01/F2837xS_GlobalVariableDefs.c'的内容说明时出错。
    所以,我在c2000ware文件夹中找到了它,我在项目中创建了一个名为F2837xS_GlobalVariableDefs.c的新c文件,复制并粘贴了原始文件的代码。
    TRY CTO编译:
    ./F2837xS_GlobalVariableDefs.c",第595行:错误#237:变量"FlashPumpSemaphoreRegs"被声明为从未完成的类型
    "../F2837xS_GlobalVariableDefs.c",第772行:错误#237:变量"SyncSocRegs"被声明为从未完成的类型

    我没有在代码中做任何更改。这是在c2000ware中发生的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不知道是什么问题,我从c2000ware重新加载了示例,现在它没有显示"declared with a never-completed type"错误,并且编译正确。 仍无法读取闪存上写入的数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Andrea,

    编程闪存扇区后,示例代码将擦除这些扇区。  可能是您在擦除闪存内容后正在进行检查。  

    谢谢,此致,
    Vamsi

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

    您对此有任何更新吗?

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

    是的,您肯定是对的, 示例代码首先对闪存扇区进行编程,然后将 它们擦除。 比你更感谢你的支持Vamsi!

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

    感谢您的确认。

    此致,
    Vamsi