ZHCUBW5 April   2024

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 参考资料
    2. 1.2 函数清单格式
  5. 2TMS320F28P55x 闪存 API 概述
    1. 2.1 简介
    2. 2.2 API 概述
    3. 2.3 使用 API
      1. 2.3.1 初始化流程
        1. 2.3.1.1 器件上电后
        2. 2.3.1.2 闪存包装程序和存储体设置
        3. 2.3.1.3 关于系统频率变化
      2. 2.3.2 使用 API 进行构建
        1. 2.3.2.1 对象库文件
        2. 2.3.2.2 分布文件
        3. 2.3.2.3 闪存 API 使用的关键事实
  6. 3API 函数
    1. 3.1 初始化函数
      1. 3.1.1 Fapi_initializeAPI()
    2. 3.2 闪存状态机函数
      1. 3.2.1  Fapi_setActiveFlashBank()
      2. 3.2.2  Fapi_setupBankSectorEnable()
      3. 3.2.3  Fapi_issueAsyncCommandWithAddress()
      4. 3.2.4  Fapi_issueBankEraseCommand()
      5. 3.2.5  Fapi_issueProgrammingCommand()
      6. 3.2.6  Fapi_issueProgrammingCommandForEccAddresses()
      7. 3.2.7  Fapi_issueAutoEcc512ProgrammingCommand()
      8. 3.2.8  Fapi_issueDataAndEcc512ProgrammingCommand()
      9. 3.2.9  Fapi_issueDataOnly512ProgrammingCommand()
      10. 3.2.10 Fapi_issueEccOnly64ProgrammingCommand()
      11. 3.2.11 Fapi_issueAsyncCommand()
      12. 3.2.12 Fapi_checkFsmForReady()
      13. 3.2.13 Fapi_getFsmStatus()
    3. 3.3 读取函数
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
    4. 3.4 信息函数
      1. 3.4.1 Fapi_getLibraryInfo()
    5. 3.5 实用功能
      1. 3.5.1 Fapi_flushPipeline()
      2. 3.5.2 Fapi_calculateEcc()
      3. 3.5.3 Fapi_isAddressEcc()
      4. 3.5.4 Fapi_remapEccAddress()
      5. 3.5.5 Fapi_calculateFletcherChecksum()
  7. 4推荐的 FSM 流程
    1. 4.1 新出厂器件
    2. 4.2 推荐的擦除流程
    3. 4.3 推荐的存储体擦除流程
    4. 4.4 推荐的编程流程
  8. 5与安全相关的软件应用程序使用假设
  9.   A 闪存状态机命令
  10.   B typedef、定义、枚举和结构
    1.     B.1 类型定义
    2.     B.2 定义
    3.     B.3 枚举
      1.      B.3.1 Fapi_FlashProgrammingCommandsType
      2.      B.3.2 Fapi_FlashBankType
      3.      B.3.3 Fapi_FlashStateCommandsType
      4.      B.3.4 Fapi_StatusType
      5.      B.3.5 Fapi_ApiProductionStatusType
    4.     B.4 结构
      1.      B.4.1 Fapi_FlashStatusWordType
      2.      B.4.2 Fapi_LibraryInfoType
  11.   参考资料

与安全相关的软件应用程序使用假设

  1. 在使用任何其他闪存 API 函数之前,必须执行 Fapi_initializeAPI() 函数一次。无需多次调用该函数。但是,只要用户应用程序在运行时更新系统频率或闪存等待状态配置(这种情况很少见),就必须调用该函数。

  2. 在执行 Fapi_initializeAPI() 之前,用户应用程序必须确保为所需的输出频率正确配置 PLL。请注意,driverlib 中提供的 SysCtl_setClock() 通过使用 DCC 模块实现了这一点。SysCtl_setClock() 调用的 SysCtl_isPLLValid() 使用 DCC 模块来确保 PLL 输出处于预期范围内。有关 DCC 模块的更多详细信息,请参阅器件特定技术参考手册。

  3. 如果用户应用程序需要保护闪存寄存器空间免受因代码失控等原因造成的任何损坏,则可以通过使用 ERAD 模块来实现。有关 ERAD 使用的详细信息,请参阅器件特定技术参考手册。

  4. 当将 Fapi_BlankCheck() 用于闪存主阵列地址范围时,建议同时检查相应的 ECC 阵列地址范围。每个扇区的 ECC 地址范围在器件专用数据表的存储器映射 表中给出。

  5. 用户应用程序软件必须根据需要使用 ECC_ENABLE 寄存器为闪存读取/获取路径启用 ECC 评估功能。闪存 API 不启用/禁用该寄存器。请注意,ECC_ENABLE 在上电时默认启用。因此,用户应用程序软件定义 NMI ISR 和闪存 single-bit 错误 ISR,以便能够响应单个和不可纠正的闪存错误。有关 FLASH_ECC_REGS 寄存器的更多详细信息,请参阅器件特定技术参考手册。

  6. 如果用户应用程序的安全标准要求其定期读取整个闪存范围,从而确保数据的完整性,用户应用程序可以这样做,并计算整个闪存范围的校验和/CRC。VCU CRC 模块可用于实现这一点。有关 VCU CRC 模块的更多详细信息,请参阅器件特定技术参考手册。

  7. 如果用户应用程序的安全标准要求其定期读取闪存寄存器空间,从而确保寄存器配置的完整性,应用程序可以这样做,并计算闪存寄存器存储范围的校验和/CRC。

  8. 如果用户应用程序的安全标准要求其在进行编程和擦除操作后验证(使用 CPU 读取)闪存内容,它可以分别使用 Fapi_doVerify() 和 Fapi_doBlankCheck() 来验证闪存内容。

  9. 闪存 API 不对看门狗进行配置/维护。用户应用程序可以配置看门狗并根据需要对其进行维护(在闪存 API 函数调用之间进行串行或使用 CPU 计时器 ISR)。

  10. 如果 RAM 或闪存中的闪存 API 代码由于应用程序设计不当(例如,堆栈溢出问题)而被覆盖,则当 CPU 尝试执行闪存 API 函数时,可能会出现非法指令陷阱 (ITRAP)。因此,用户应用程序定义 ITRAP ISR 来响应此类事件。