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.

[参考译文] AM263P4-Q1:当闪存存储器擦除大小设置为 64KB(块擦除)时、RBL 不会将 SBL 复制到 RAM

Guru**** 2431820 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1541619/am263p4-q1-rbl-is-not-copying-sbl-to-ram-when-flash-memory-erase-size-set-to-64kb-block-erase

器件型号:AM263P4-Q1


工具/软件:

您好团队:

我们正在研究 Bootmanager (BM ->适用于 TI RBL 的 SBL)、引导加载程序 (BL) 和引导加载程序更新器 (BLU)。

为了缩短闪存擦除时间、我们尝试将闪存擦除大小从 4KB 更改为 64KB

根据我的理解、在 Flash_sfdpParams_init () 中、TI 硬代码默认擦除大小为 4KB、块大小为 64KB。

在闪存器件支持下、无法将擦除大小设置为 32KB 的选项。

RBL -> BM -> BL -> BLU

存储器映射

  • Bm 位于 0x60000000
  • BL 位于 0x60030000
  • APP/0x60100000 BLU 处进行编程

工作->   在 BL 更新和热复位后、当闪存擦除大小设置为 4KB(子扇区)时、RBL 将 BM 复制到 RAM。

不工作->、但当 闪存擦除大小设置为 64KB(块擦除)时、BL 更新和热复位后 BM 将通过 RBL 复制到 RAM。

问:此问题的可能原因是什么?

问:BM 内存损坏的可能性是什么?BM 内存区域是否不受 BL 更新的影响?  

此致、

Hari

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

    尊敬的 Hari:

    请帮助我了解这种情况、

    整个软件流程 RBL →BM →BL →BLU。 RBL 加载 BM、BM 加载 BL、BL 加载应用程序

    1.你什么时候看到这个问题? 您是否在 RBL →BM 阶段之间更新应用程序和热复位后看到了问题?

    2.  引导管理器 (BM) 指的是 SBL 是正确的? 是 基于 MCAL 或 TI 提供的基于 MCU_PLUS_SDK 的 SBL/BM。

    3.在哪里更改擦除大小? 是否已完成应用程序更新?

    此致、

    Aswin

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

    尊敬的 Hari:  

    您还能告诉我哪个区域正在从闪存(区域的地址)中擦除吗?

    此致、

    Aswin

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

    您好、Aswin、

    整个软件流程 RBL →BM →BL →BLU。 RBL 加载 BM、BM 加载 BL、BL 加载应用程序

    ->正确

    1.你什么时候看到这个问题? 您是否在 RBL →BM 阶段之间更新应用程序和热复位后看到了问题?

    ->是的、RBL -> BM

    2.  引导管理器 (BM) 指的是 SBL 是正确的? 是 基于 MCAL 或 TI 提供的基于 MCU_PLUS_SDK 的 SBL/BM。

    -> MCAL AM263Px_10_02_01_04

    3.在哪里更改擦除大小? 是否已完成应用程序更新?

    ->擦除 Tresos 配置中的大小更改、将生成该文件。

    4.从闪存中擦除(区域地址)?

    ->在更新过程中  

    • BL 大小为 0x60000 (0x60030000 - 0x60090000)
    • 0x60030000 处的 BL 将被擦除、并 从  0x60100000 处的 BLU 复制相同长度的新数据。  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Hari:

    我怀疑以下情况:

    对于闪存、块大小为 128KB。 因此、当您 执行块擦除时、128KB 将从闪存中被擦除。

    因此、当给出 0x6003 0000 作为擦除大小时、具有此地址的块将被擦除。 在这种情况下、它是块 0x6002 0000 至 0x6004 0000 块。  

    因此、如果您的 SBL 超过 128KB、那么它也可能会跨越到这个块、其中的一部分会被擦除。

    您可以尝试以下方法吗?

    1.将 BM/SBL 和 BL 放在一个单独的块中。 假设 BM 大小为 130KB、则给出从地址 0x6000 0000 到 0x6004 0000 的块 1 和块 2。  

    2、为了安全起见、让我们在 (0x6004 0000 - 0x6006 0000) 之间留下一个空的块。 现在不要使用这个块。

    3.让 BL 从下一个块 (0x6006 0000) 开始。

    您现在可以尝试相同的块擦除吗?

    步骤 2 是可选的。 您可以将 BL 放在 BM 旁边的块中。

    此致、

    Aswin

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

    尊敬的 Hari:

    请告诉我、我们是否需要安排今天的会议?

    此致、

    Aswin

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

    尊敬的 Aswin:

    我会测试您的输入并对您进行更新。

    如果问题未解决、我们可以在星期一上进行调试会话吗?

    q) 上述输入是否基于闪存器件?

    在中、MCAL 块大小设置为 64KB 而不是 128KB

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

    尊敬的 Hari:  

    第二个片段来自 Fls_Nor_Config.c 文件。

    我想您参考的是 V0 或 V1 文件夹。 对于 AM263P、它是 V2 文件夹。

    请查看 V2 文件夹中的配置文件。

    您可以看到块大小为 128KB(131072 字节)。

    此致、

    Aswin

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

    尊敬的 Hari:

    是的、我们可以相应召开会议

    此致、

    Aswin

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

    您好、Aswin、

    将 BM、BL 和 BLU 与 128KB (0x20000) 地址对齐后。

    现在、RBL 正确复制 SBL。

    以下几个问题、如下图所示、FLS 驱动程序支持 4KB 或 128KB 擦除大小

    q) 如果我将擦除大小配置为 64KB、是否 没问题?

    q) FLS 驱动程序是否支持 4kB/32KB 子扇区和 64kB/128KB 扇区大小?

    q) 我是否应该使用 Fls_Set EraseType (FLS_BLOCK_ERASE);擦除  64kB/128KB  扇区 大小?

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

    尊敬的 Hari:

    q) 如果我将擦除大小配置为 64KB、 对吗?

    此功能取决于 ISSI 的变体。 在数据表中、提到了 ISLX256/128 B 型号的闪存支持这一点。 OOB 闪存没有此功能。

    FLS 驱动程序是否支持 4kB/32KB 子扇区和 64kB/128KB 扇区大小?

    FLS 驱动程序支持 4KB 子扇区擦除和 128KB 扇区擦除。

    我是否应该使用 Fls_Set EraseType (FLS_BLOCK_ERASE);擦除 64kB/128KB   扇区 大小?

    是的、您需要将擦除类型设置为块擦除才能执行 128KB 擦除。

    此致、

    Aswin

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

    尊敬的 Aswin:

    感谢您的支持和澄清。

    FLS 驱动程序支持 4KB 子扇区擦除和 128KB 扇区擦除。

    根据数据表、存储器器件支持 64KB 扇区擦除、但 FLS 驱动程序不支持

    如果存储器配置为 64KB、则不会使用它、如果我使用此函数  Fls_Set EraseType (FLS_BLOCK_ERASE);  然后、它将仅擦除 128KB 扇区/块。

    q) 如果我将擦除/扇区大小配置为 4kB/128kB 以外、则没有用途?

    此致、

    Hari

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

    尊敬的 Hari:

    您能告诉我您使用的是哪个闪存器件吗? 您能分享完整的器件型号吗?

    此致、

    Aswin

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

    尊敬的 Hari:

    如果我配置的擦除/扇区大小不是 4kB/128kB、则没有用处?

    ISSI 闪存支持 128KB 或 64KB 扇区擦除。 该属性取决于所使用的闪存变体、就像上面的屏幕截图中给出的方式一样。

    由于当前正在进行 128KB 擦除、因此无法在闪存上配置 64KB 擦除大小。 这意味着所考虑的 ISSI 闪存支持 128KB 扇区擦除。

    即使将 扇区大小更改为 64KB、也不可能实现、因为这是闪存的一个属性。

    此致、

    Aswin

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

    尊敬的 Aswin:

    以下硬件连接到我们的测试系统

    如用户指南所述

    OSPI 器件如下所示

    数据表中找到

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

    尊敬的 Hari:

    我检查了 SFDP 表、它表明闪存为 128KB 块。 这可以通过运行 OSPI 诊断示例进行检查。  

    示例和位于 MCU PLUS SDK 中:examples/drivers/ospi/ospi_flash_diag  

    数据表从不列出 64KB 擦除的标准器件型号、即使脚注中将其提到为可选器件。

    此致、

    Aswin