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.

[参考译文] 编译器/TMS320F28379D:FLASH_API 理解或说明

Guru**** 2535440 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/603254/compiler-tms320f28379d-flash_api-understanding-or-clarifications

器件型号:TMS320F28379D
Thread 中讨论的其他器件:controlSUITEC2000WARE

工具/软件:TI C/C++编译器

大家好、

请在下面澄清问题。

FLASH_API/include/Types.h

/*!
\brief 这用于指示正在使用哪个闪存组。
*
typedef 枚举

Fapi_FlashBank0、
Fapi_FlashBank1、
Fapi_FlashBank2、
Fapi_FlashBank3、
Fapi_FlashBank4、
Fapi_FlashBank5、
Fapi_FlashBank6、
Fapi_FlashBank7
}attribute_packed Fapi_FlashBankType;


这是否意味着闪存 D 被分成组、它是否刚性?

(可能是名称与 TRM 冲突、f28379d 有两个组、每个 CPU 每个组为256k)

是否不了解以下类型? CPU 256K 具有扇区 A、B C D E 等

/*!

\brief 这用于指示正在使用哪个闪存扇区。
*
typedef 枚举

Fapi_FlashSector0、
Fapi_FlashSector1、
Fapi_FlashSector2、
Fapi_FlashSector3、
Fapi_FlashSector4、
Fapi_FlashSector5、
Fapi_FlashSector6、
Fapi_FlashSector7、
Fapi_FlashSector8、
Fapi_FlashSector9、
Fapi_FlashSector10、
Fapi_FlashSector11、
Fapi_FlashSector12、
Fapi_FlashSector13、
Fapi_FlashSector14、
Fapi_FlashSector15、
Fapi_FlashSector16、
Fapi_FlashSector17、
Fapi_FlashSector18、
Fapi_FlashSector19、
Fapi_FlashSector20、
Fapi_FlashSector21、
Fapi_FlashSector22、
Fapi_FlashSector23、
Fapi_FlashSector24、
Fapi_FlashSector25、
Fapi_FlashSector26、
Fapi_FlashSector27、
Fapi_FlashSector28、
Fapi_FlashSector29、
Fapi_FlashSector30、
Fapi_FlashSector31、
Fapi_FlashSector32、
Fapi_FlashSector33、
Fapi_FlashSector34、
Fapi_FlashSector35、
Fapi_FlashSector36、
Fapi_FlashSector37、
Fapi_FlashSector38、
Fapi_FlashSector39、
Fapi_FlashSector40、
Fapi_FlashSector41、
Fapi_FlashSector42、
Fapi_FlashSector43、
Fapi_FlashSector44、
Fapi_FlashSector45、
Fapi_FlashSector46、
Fapi_FlashSector47、
Fapi_FlashSector48、
Fapi_FlashSector49、
Fapi_FlashSector50、
Fapi_FlashSector51、
Fapi_FlashSector52、
Fapi_FlashSector53、
Fapi_FlashSector54、
Fapi_FlashSector55、
Fapi_FlashSector56、
Fapi_FlashSector57、
Fapi_FlashSector58、
Fapi_FlashSector59、
Fapi_FlashSector60、
Fapi_FlashSector61、
Fapi_FlashSector62、
Fapi_FlashSector63.
}attribute_packed Fapi_FlashSectorType;

根据示例工程(flash_programming_cpu1_flash.cmd)、链接到闪存 D 的所有 flash_API (ramfunc)是否有任何特定原因?
用户可以将 FLASH_API 链接到任何扇区(A、B、C、D 等)、对吧?

谢谢

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

    Ashok、

    Types.h 文件是为与所有使用相似闪存技术的器件一起使用而开发的、因此您可以看到更多定义。  SPNU629中的附录 C.3列出了可用于 F2837xD 器件的枚举。  

    如 SPNU629文档的"第 C.3.4节 Fapi_FlashBankType "中所述、仅 F2837xD 器件使用 Fapi_FlashBank0。  定义 REST 是因为 FMC 本身可以处理许多组、但 F2837xD 每个内核只有一个组。  

    与扇区相关的东西也一样:最多只需要 SPNU629中描述的枚举。  如示例项目中所示、您可以将 flash_programming_c28.h 文件中提供的#defines 用于扇区地址(与闪存 API 函数一起使用)。  在此文件中、您将看到字母命名约定。  您可以在 Types.h 中看到大量的扇区列表、因为这项技术中的银行最多可以拥有64个扇区。  但是、F2837xD 中使用的组最多只有14个扇区、如器件存储器映射表中所示。    

    谢谢、此致、

    Vamsi  

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

    您好、Vamsi、

    感谢您的清晰解释。  

    (二

     您可以在 Types.h 中看到大量的扇区列表、因为这项技术中的银行最多可以拥有64个扇区。  但是、F2837xD 中使用的组最多只有14个扇区、如器件存储器映射表中所示。    

    (二


    在 f28379d TRM 的第180页中、有一个闪存存储器映射、除了14个扇区外、还有5个扇区、例如 TI OTP、TI OTP ECC、 用户 XXX、闪存 ECC。

    这是什么呢? (或者刷写到这些部分使用案例将不适用??)

    但我可以在_c28.h 中看到以下两个章节、以及任何注释。

    #define Bzero_16KSector _u32length 0x1000
    #define Bzero_64KSector _u32length 0x4000

    谢谢。

     

     

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

    Ashok、

    1)

    我想您是指数据表的第180页、而不是 TRM 的第180页。

    用户不能擦除或编程 TI-OTP (和 TI-OTP ECC)。  它由 TI 编程。  用户可以使用的字段很少(只读)。

    用户不能擦除"用户可配置的 DCSM OTP"、但可以对其进行编程。  它具有与安全性相关的字段。  有关更多详细信息、请阅读 TRM 的"2.13双代码安全模块(DCSM)"部分。

    ECC 存储器(用户可配置的 DCSM OTP ECC、闪存 ECC): 请阅读 TRM 的"2.12.10错误校正代码(ECC)保护"部分以了解 ECC。  用户必须将 ECC 与主阵列或 DCSM OTP 一起编程。  当您使用 Fapi_AutoEccGeneration 模式进行编程时、API 也会计算 ECC 并对其进行编程。  有关 ECC 编程的更多详细信息、请阅读 SPNU629的"3.2.3 Fapi_issueProgrammingCommand()"部分。

    2)

    下面的定义是32位字中扇区的长度。  这些函 数可与 Fapi_doBlankCheck()和 Fapi_doVerify()等函数一起使用,以指定示例项目中所示的长度。

    #define Bzero_16KSector _u32length 0x1000
    #define Bzero_64KSector _u32length 0x4000   

    谢谢、此致、
    Vamsi

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

    Ashok、

    关于您在示例中将闪存 API 分配给特定扇区的问题: 我可能已经选择了扇区 D、因为它存在于所有 F2837xD 器件变体中(某些器件变体的大小只有闪存组的一半)。  我确保不会擦除扇区 D、因为它中包含闪存 API。

    谢谢、此致、
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Vamsi
    我必须擦除完整的片上闪存并使用 CAN 接口加载新固件/应用。
    完整擦除- Fapi_issueODICO主机 命令 API 将擦除完整的闪存、是否写入?
    需要添加具有适当扇区地址逻辑的加载新固件- fapi_issueProgrammingCommand()。 它是写入吗?

    对于 F28335、
    加载具有正确扇区地址逻辑的新固件- fapi_issueProgrammingCommand()看起来不是必需的。 它是写入吗?
    在这里,我们必须指定唯一的起始地址。
    Flash28335_Program (a、b、c、d)

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

    Ashok、

    对于完整擦除:您需要针对每个扇区地址(在循环中)调用 Fapi_issueAppelandCommandWithAddress (Fapi_EraseSector、SectorAddress)函数。

    关于 F2837xD 中的程序:调用 Fapi_issueProgrammingCommand()时,一次最多只能对128位(8个16位字)进行编程。 如果需要对更多字进行编程、则需要循环调用此函数。  请在 SPNU629中检查此函数的描述。

    希望您了解了 C2000Ware 或 controlSUITE 中的闪存编程示例。

    此外、请访问 e2e.ti.com/.../491151。

    谢谢、此致、
    Vamsi