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.

[参考译文] AM62A3:NorFlash S28HS512T 扇区擦除失败

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed

器件型号:AM62A3
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

工具/软件:

尊敬的 TI 专家

     现在、我们使用 norflash 存储器 S28HS512T       、通过定制电路板中的 AM62A3 OSPI 接口访问     、如果使用" int32_t Flash_eraseBlk (Flash_Handle handle、uint32_t blockNum)"  函数(ERASE 256k) 、 所用 闪  存块可以成功擦除且用户数据可正确写入 NOR 闪存器件;

      但如果 使用 "int32_t Flash_eraseSector (Flash_Handle 句柄、uint32_t sectorNum)(擦除4K)"  函数、则擦 除和 写入操作 将失败。

      实际上, 大多数时候我们只 修改  一个扇区中的几个字节数据; 在擦除闪存之前, 我们可以将一个扇区数据复制到全局缓冲区中, 然后 根据 数据修改一些字节数据

 在缓冲区中的位置偏移,最后 将存储 在缓冲区中的数据写入指定的扇   区区域,无需每次擦除块区;

    所以为什么 调用   "Flash_eraseSector ()" 函数  不能n`t   按预期擦除数据;

  

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

    您好:

    请允许我检查擦除扇区的实现。

    此致、

    Vaibhav

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

    您好:

    我请求您仔细阅读以下文件:flash_nor_ospi.c

    请参阅如何 使用 Flash_norOspiEraseSector。

    请参阅最新的 AM62A MCU PLUS SDK。
    仅供参考、我将向您介绍以下内容:

    如果这对我有帮助、请告诉我。

    此致、

    Vaibhav

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

    您好、 Kumar

        MCU SDK 安装在 Windows 操作系统中 、其版本为 V9.2;

       我 尝试安装 最新 版本 10.0.0.14的 MCU SDK ;

       但我n`t 找不到函数  Flash_norOspiEraseSector (...) 如 上所述;

      我 只能找到  " int32_t Flash_eraseBlk (Flash_Handle Handle、uint32_t blockNum)" 和 "int32_t Flash_eraseSector (Flash_Handle       handle、uint32_t sectorNum)"

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

    您好 Ming、

    请在最新 SDK 中浏览文件 flash_nor_ospi.c、以搜索名为 Flash_norOspiEraseSector ()的 API。

    此致、

    Vaibhav

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

    您好、 Kumar

               在我的项目中,我将闪存擦除函数替换为"Flash_norOspiEraseSector ()",但 擦除和写入 操作也 失败了。

        如 下面的屏幕截图所示、 "gFlashConfig" 参数由 CCS IDE 中的 syscfg 文件生成;

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

    Hell Ming、

    能否介绍一下 case 中的 offset、sector_val 和 page 值?

    我可以在 AM64x TI EVM 上试用、因为它包含您与 AM62A 一起使用的 NOR 闪存器件。

    此致、

    Vaibhav

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

    您好、 Kumar

          闪存偏移量为 0xf80000、 扇区 ID 为3968、页 ID 为0;

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

    您好 Ming、

    根据上述信息、您只想擦除4096个字节、而不是整个块?

    此致、

    Vaibhav

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

    您好、 Kumar

      我们 希望   最好的 选择 是  块擦除 和 扇区 擦除命令都可以 很有用, 在 大多数 情况下, 也许 扇区擦除 命令可以满足我们的 要求,

    但 在 软件 升级   场景中、、 块 擦除 可以 更有效

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

    尊敬的 Vaibhav:

    用户希望根据软件用户案例同时使用4K 擦除和块擦除、因此请提供支持。 感谢您的支持。

    BR、

    Biao

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

    您好 Ming 和 Bioa、

    非常感谢您对我所需的澄清。

    因此、作为我结束后的后续步骤的一部分:

    1.我将尝试擦除块,看看操作是否成功。

    2.我将尝试擦除一个扇区,看看操作是否成功。

    在任一种情况下、如果失败、我都会在 TI EVM 设置中进行调试、以确定故障发生的位置。

    你可以期待我的最后在某个时候得到回应。

    谢谢、

    Vaibhav

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

    您好 Ming、

    您能否计算扇区编号3968落入哪一个偏移量? 这样、我可以在"Memory Browser"中看到擦除操作是否正常执行。

    该偏移 F80000 = 3968 * 4096吗?

    仅供参考、擦除块工作正常。

    此致、

    Vaibhav

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

    您好 Ming、

    我已经在我这边进行了测试、结果表明 Flash_eraseSector 已断开、不会擦除所需的扇区。

    解决方法是从现在开始继续使用块擦除、作为下一步操作、我为此提交了一个 JIRA。

    已创建 JIRA、用于擦除扇区故障、因为它不成功。

    建议修复后、我将在此更新此主题。

    感谢您的耐心。

    此致、

    Vaibhav

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

    您好、 Kumar

      是否 有 任何 方法 可以解决 扇区擦除问题。

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

    尊敬的 Ming:

    我已要求软件团队对此进行更新、目前尚未更新 JIRA 票证。

    一旦我听到他们的声音,我就会回到你身边。

    此致、

    Vaibhav

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

    目前,当我们使用闪存的写功能时,我们只能使用256k 擦除接口,擦除时间约为2s ,这将导致 MCU 的所有任务都卡住,但程序将在闪存操作完成后继续运行。

    我希望您能提出一个解决方案。我们很赶时间。

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

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

    尊敬的 Vaibhav:

    是否有任何更新? 客户正在努力实现这一目标。 请帮助优先处理此问题。

    BR、

    Biao

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

    您好、Biao、Ming、

    与此同时、我从开发团队获得了最新的更新(他们忙于发布活动)、我希望您浏览: https://github.com/TexasInstruments/mcupsdk-core/commit/55af55fd09a#diff-682d5d5c94769777bf011fd29f77e33384dd6db6ef80db885d92645f10825248

    此致、

    Vaibhav

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

    你好,Vaibhav:

      

    我们使用的 MCU 版本是 MCU_PLUS_SDK_am62ax_09_02_00_38、无法找到上面标记的文件。

    您可以提供与我们的版本相对应的 MCU 修改

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

    尊敬的赵能:

    感谢您的耐心。

    我在"Sysconfig Flash"选项卡/部分中查看了此内容并找到了有关此说明的信息。

    因此在名为 Flash_quirkSpansionUNHYSADisable 的 API 内部、混合扇区被禁用。 您可以继续查看此 API 是否作为执行的一部分被调用?

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

          Flash_quirkSpansionUNHYSADisable () 方法  在我们的程序中被调用。 如果我们 尝试 将 S28HS512T 编程为混合顶部模式   ( 4K 扇区位于最高地址)在我们的工厂产品线( S28HS512CFG1   寄存器 bit2 :1, CFG3寄存器 bit3 :0; 请参阅用户手册), 但在 S28H512T 集成到我们的定制电路板 上电后,闪存 IC  也将配置为统一模式(寄存器 bit3更改为1)。

      我们也尝试 修改 Flash_quirkSpansionUNHYSADisable () 方法 ,以防止 将 闪存模式更改为 一致。 但是、如果 我们 更新 闪存 SBL 软件并下载到电路板上( 之前通过 MCU 映像将 CFG3寄存器位3更改为0)、那么  AM62可以`  t boot 成功、并且即使 我们 尝试关闭机器然后加电、也可以再次访问闪存`t。 因此、 我们 猜测   AM62 Rom 代码是否  将  闪存 寄存器 CFG1寄存器位2更 改为 0 (如果如此、 闪存模式配置为混合底部模式、位于低128k 地址的4K 扇区区域、请参阅闪存用户手册)

     CFG1寄存器地址:0x800002 (用于读取) 0x0000002 (用于写入)、 CFG3寄存器地址: 0x800004 (用于读取)、0x0000004 (用于写入)

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

    尊敬的 Ming:

    我已正确阅读闪存器件的数据表、并讲解了配置寄存器1和配置寄存器3的说明。

    在配置寄存器3中、提到如果位3设置为0、则它用作混合模式。

    这是配置寄存器的位2 1:

    这是配置寄存器的位6 1:

    好的、我已经阅读了您对出厂时特定闪存设置的评论、一旦集成、它就会更改/重置。

    因此、重置可能是该 API 的结果  

    FlashFixUpOspiBoot
    在 SBL 代码中调用。 您能否检查整个引导加载程序/应用程序代码组合在一起的实例(即此 API)  
    FlashFixUpOspiBoot 被称为?
    以下是 API 的说明:
    此致、
    Vaibhav
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vaibhav:

      FlashFixUpOspiBoot(...)    NOR 闪存 SBL stage1和 stage2 工程中存在 API。 每次 从闪存启动代码时、都会调用此 API。

    我们做了 测试, 如果 MCU 正常启动,然后调用测试 方法来 读取  闪存 CFG1 值,  打印的位2 为 1 ( CFG1:0x04 )。  与 工厂 产品 线配置相同。 似乎是  flashFixUpOspiBoot(...)  Dosen`t  将 NOR 闪存设置为 Infineon 供应商的 默认值(CFG1:0x00)。

    但  我不知道 为什么如果我们 禁用  Flash_quirkSpansionUNHYSADisable (.)  在           n`t 工程中并清除 CFG3位3、然后 AM62将类似于"石头"、无法 再启动。

      

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

    您好、

    然后调用测试 方法

    您是否可以发送在测试 API 中编写的代码、您可以自定义编写这些代码。

    我将尝试在我这边看看价值、但会在 AM62x TI EVM 上看到价值、因为此 EVM 具有客户已集成 AM62A 的 NOR 闪存器件。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

        

          测试代码和 打印日志 显示为以下屏幕截图、用于清除   CFG3寄存器(0x800004)的位3;

          

          

         

        如果我们 尝试修改  Flash_quirkSpansionUNHYSADisable (...)         n`t 下面的图片并重新编译 MCU SDK 9.2 &闪存 SBL stage1项目的库,然后下载 SBL 映像,结果是我们的定制电路板不能 再 从 NOR 闪存启动。

         

        

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

    您好、

    我已经完成了您的响应并读取了寄存器值。 我已经正确阅读了数据表。

    配置寄存器1的值为4、这意味着 TB4KBS 为1、SP4KBS 为0、因此属于以下类别。

    配置寄存器2的值为8、这意味着 MEMLAT[3:0]为8。 Dummy Cycles 值为8。

    配置寄存器3的值为0、这意味着 UNHYSA 为0、因此启用了混合扇区架构(4KB 和256KB 扇区的组合、但4KB 扇区应该位于顶部)。

    结果是 我们的定制电路板无法  从 NOR FLASHn`t 启动。

    我想了解这里的流程。 您已经将引导加载程序和应用程序映像等映像刷写到闪存中、然后尝试引导。

    或者闪存器件没有发生刷写?

    此外、应用混合模式的逻辑是在 UART uniflash 应用程序或引导加载程序上?

    此致、

    Vaibhav

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

    此外,我与开发团队经常会谈,并试图找到解决办法。

    有一点很明显、驱动程序是在所有 SoC 上编写的、以便在统一模式下运行闪存。

    在本手册中、您能否请咨询闪存供应商、了解需要设置哪些所有位才能启用混合模式。

    就您的寄存器值而言、CFG 寄存器1、2和3看起来都可以启用混合模式。

    但如果您可以与闪存供应商确认、这样我们就可以确保不会错过任何一两个位。

    期待您的回答。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

        我   联系了供应商 FAE 以确认 Hybrid Top 模式配置,他们只是 提到了  相关的 CFG1 , CFG3 注册也

        (CFR3N[3]、CFR1N[6]、CFR1N[2])。

              供应商 FAE 没有其他特别建议。

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

    尊敬的 Ming:

    感谢您的耐心。

    [报价 userid="620075" url="~/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5596657 #5596657"]

    尊敬的 Vaibhav:

        我   联系了供应商 FAE 以确认 Hybrid Top 模式配置,他们只是 提到了  相关的 CFG1 , CFG3 注册也

        (CFR3N[3]、CFR1N[6]、CFR1N[2])。

              供应商 FAE 没有其他特别建议。

    [/报价]

    我可以理解、供应商说了以下内容。 因此、更改仅限于 CFG1和 CFG3寄存器、此处也提到: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5587028#5587028

    当我收到针对这个特定问题提交的 JIRA 的更新时,我会在这里发表评论。 我们正与开发团队积极合作。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

            现在是否有任何有关 NOR 闪存驱动程序的更新消息

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

    您好 Ming、

    该主题专家本周目前不在办公室。 请期待收到延迟的回复。 感谢您的耐心。

    此致、

    Anil.

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

    您好:

    我们正在积极处理此问题、您可以在我们有进一步更新时期待收到回复。

    在执行下一步操作时、我检查了状态寄存器2值。 寄存器值(位2)说明擦除操作是否成功。

    目前、对于均匀模式的混合禁用模式、擦除在偏移0xF80000处被视为失败。

    此致、
    Vaibhav

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

    您好、  

    从2025年17月2日 开始更新。

    尝试查看各种寄存器以获取一些附加信息、例如状态寄存器1和2以及 ASP (高级扇区保护)寄存器。

    我当前看到的是多个元素混合、因此状态寄存器2 (位2)会指示0、这表示擦除不成功、但另一方面状态寄存器1位 ERSERR (位5)的值为0、这意味着最后一次擦除成功。

    会让您及时了解所取得的进展。

    谢谢、

    Vaibhav

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

    尊敬的 Ming:

    我已成功对4KB 扇区执行4KB 的擦除操作。

    这里总结了我为 实现此目的所做的 请注意: 我在上实现了这一点 具有4S-4D-4D 模式的 S25HL512T 闪存器件、但可以在具有8D-8D-8D 协议的 S28HS512T 上执行相同的操作]

    首先、我将模式更改为 Hybrid、并进行配置、以便4KB 扇区(其中32个)驻留在64MB 闪存的上半部分。 因此它们将按如下所示驻留:

    为了更改配置寄存器、我已将如下所示的代码写入 quirks 函数:

    int32_t Flash_quirkSpansionUNHYSADisable(Flash_Config *config)
    {
        int32_t status = SystemP_SUCCESS;
        uint8_t regData = 0x00;
        uint32_t write = 0;
    
        /* Hybrid Sector Disable */
        status = Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
    
        if(status == SystemP_SUCCESS)
        {
            if((regData & ((uint8_t)(1 << 3))) == 0)
            {
                /* Set UNHYSA bit */
                regData |= (1 << 3);
                write = 1U;
            }
            else
            {
                /* No action */
            }
        }
    
        if(write)
        {
            status = Flash_norOspiRegWrite(config, 0x71, 0x04, regData);
        }
    
        // change to hybrid mode, so write the value 0 to 3rd bit UNHYSA on Config Reg 3: 0x800004
        regData = 0x00;
        status = Flash_norOspiRegWrite(config, 0x71, 0x04, regData);
    
        // change config reg1[bit 2] to 1, to make sure 4kb sectors ar at the top, so 32 * 4kb sectors at top.
        regData = 6;
        status = Flash_norOspiRegWrite(config, 0x71, 0x02, regData);    
    
        regData = 0x00;
        status = Flash_norOspiRegRead(config, 0x65, 0x00800002, &regData);
        DebugP_log("New Value of Configuration Register 1: %u \r\n", regData);
    
        regData = 0x00;
        status = Flash_norOspiRegRead(config, 0x65, 0x00800003, &regData);
        DebugP_log("Value of Configuration Register 2: %u \r\n", regData);
    
        regData = 0x00;
        status = Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
        DebugP_log("Value of Configuration Register 3: %u \r\n", regData);
    
        regData = 0x00;
        status = Flash_norOspiRegRead(config, 0x65, 0x00800005, &regData);
        DebugP_log("Value of Configuration Register 4: %u \r\n", regData);
    
        return status;
    }

    引入上述更改后、从配置寄存器1、2、3和4读取的值应为:

    之前:

    在偏移量0x3FE0000处、我正在执行4KB 的擦除、因此在下一步中、"Memory Browser"中显示的值(在下面随附的屏幕截图中)将变为255 (0xFF)。  

    之后:



    使用 for 循环、我已成功擦除所有4KB 扇区(其中32个)。

    我还能够擦除从0x00到0x03FBFFFF 存在的大小为256KB (其中255个)的块。

     

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

         

    我修改了 flash_nor_ospi.c  文件中的函数 int32_t Flash_quirkSpansionUNHYSABice(SDK *config),并重新编译 Flash_Config lib(gmake -s libs profile=release );

    下一步  、我重新编译 SBL 工程和 MCU 工程并将 SBL 映像和 MCU 映像下载到我们 定制的 Am62板中、AM62 在上电后无法再从外部闪存 S28HS512引导、  并且我们应 在电路板中将 S28HS512替换为新的闪存、以便再次下载映像。

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

    尊敬的 Ming:

    AM62 在通电后无法再从外部闪存引导 S28HS512

    当您之前修改了非易失性的闪存配置寄存器时、必须发生这种情况。

    这是我们可以做的。

    因此、我希望您执行以下步骤:

    1. 将闪存部件替换为较新的闪存部件。
    2. 在不更改 MCU PLUS SDK 代码的情况下、先从 Fresh 开始、将配置寄存器1、2、3和4的值发送给我。

    从现在开始、我可以更好地指导您进行所需的更改。


    此致、

    Vaibhav

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

    你好、Vaibhav

    从闪存读取 CONFIG 寄存器值、如上图所示。

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

    尊敬的 Ming:

    感谢您提出这些价值观。

    请允许我检查这些值、并为您提供所需的更改行建议、以确保闪存以混合模式排列、顶部或底部有4KB 扇区。

    此致、
    Vaibhav

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

    尊敬的 Ming:

    请继续并在8D-8D-8D 模式下运行、在 SysConfig 中将时钟频率设置为166 MHz、并将时钟分频器设置为4。

    要为八通道闪存启用混合扇区、请执行以下操作:S28HS512T。

    请按如下所示替换 API 定义:

    int32_t Flash_quirkSpansionUNHYSADisable(Flash_Config *config)
    {
        int32_t status = SystemP_SUCCESS;
    
        // Firstly change to hybrid mode, by setting UNHYSA bit(bit 3) from configuration register 3 to 0. So, regData = 0
        status = Flash_norOspiRegWrite(config, 0x71, 0x04, 0);
        
        // Now change the TB4KBSbit to 1, so in Configuration register 1 set the 2nd bit to 1, regData = 4 written to config reg 1(0x02)
        status = Flash_norOspiRegWrite(config, 0x71, 0x02, 4);
    
    
        uint8_t regData = 0x00;
    
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800002, &regData);
        DebugP_log("Value of Configuration Register 1: %u \r\n", regData);
    
        regData = 0x00;
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
        DebugP_log("Value of Configuration Register 3: %u \r\n", regData);
    
        return status;
    }

    完成上述更改后、4 KB 扇区将如下所示:

    在表中突出显示的偏移中、您可以继续执行4KB 擦除操作。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

      您是否     通过 将 EVM 板更改为 SBL OSPI NOR 闪存引导模式来在 EVM 板中验证了这种方法。

      如果 您现在的 EVM 板未在  OSPI NOR 闪存引导模式下引导、 您 应该尝试  将其更改为 SBL NOR 闪存引导(这要求   您的 EVM 板中有 S28HS512T)。

      我 现在没有更多的测试板了,根据我的经验, 使用这种 配置,  我们的定制板中的 S28HS512T 也可以被破坏 ,导致像石头一样。 由于 IC 封装结构,很难  用新的 S28HS512T 替换 S28HS512T。

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

    尊敬的 Ming:

    您是否 在 EVM 电路板中验证了此方法

    我已在 TI EVM 上通过 S28HS512T 验证。

    我已在应用级别验证引导模式设置为 OSPI NOR 引导模式。

    请告诉我您的结束到结束引导过程以及您正在刷写的所有应用映像。

    请更正我的假设:

    1.将电路板连接到 UART 引导模式

    2.然后使用 UART uniflash 刷写其中一个配置文件、如下所示:

    3.成功刷写后,将电路板设置为 OSPI NOR 引导模式并启动。

    请告诉我您要刷写哪个配置文件、并共享配置文件内容的屏幕截图。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

      我       通过 SD 卡将 SBL 和 MCU 映像文件下载到 S28HS512T、 在映像文件下载完成后、取出 SD 卡并在 SBL NOR 闪存模式下通电。

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

    尊敬的 Vaibhav:

      我 想确认另一件事, 在您 修改 Flash_quirkSpansionUNHYSABE(...)后, 您是否 重新编译 SBL stage1 , SBL stage2项目 并将这些生成的 hs_fs 映像文件下载  到 EVM 中。

      或者  、只需 将新生成的 MCU 映像下载到 EVM、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
      我 想确认另一件事,  修改 Flash_quirkSpansionUNHYSADisable (...)后, 您是否 重新编译 SBL stage1 ,SBL stage2项目 并将这些生成的 hs_fs 映像文件下载  到 EVM 中。

    我不会重新编译 SBL 阶段1和阶段2。

    对我来说、操作流程如下、以检查这一点。

    我只需继续操作、然后执行以下操作。

    1. 将 EVM 设置为 UART 引导模式、然后通过 UART Uniflash 使用默认 SBL null 进行初始化。
    2. 将其发布到 EVM 上的 OSPI NOR 引导模式和我的电源。
    3. 我只需连接到 R50_0内核、然后运行示例应用程序 OSPI_Flash_IO (修改后擦除4KB 扇区)、并让该应用程序拾取使用混合模式的逻辑、如上所述、步骤如下: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5687747#5687747

    这是我所做的正确测试方法。

    此致、

    Vaibhav

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

    我不明白为什么需要重建 SBL 阶段1和 SBL 阶段2、因为您将在应用级别执行4KB 扇区的擦除操作?

    我建议让 SBL 阶段1和阶段2以常规统一模式运行、然后在我们进入应用程序时立即切换到混合模式。

    请注意、我正在通过 CCS 加载应用、而不是直接在 R5内核上刷写应用程序。

    我的步骤是加载应用程序的输出文件并检查扇区擦除的工作情况。

    请告诉我您的进一步想法、以便我们就此得出结论。

    期待您的答复。

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

    尊敬的 Vaibhav:

    我建议让 SBL 阶段1和阶段2以常规统一模式运行、然后在我们进入应用程序时立即切换到混合模式。

    客户很可能只在应用程序级别将模型更改为混合模式。 如果应用将模式更改为混合模式、并且电路板突然断电、无法将其改回取消通知、这将导致下一次引导加载失败。 实际上、客户已经可以在应用级别将 NOR 模式更改为混合模式、但客户认为这是高风险操作。 因此、这就是客户要求将 SBL 模式更改为 NOR 闪存模式混合一次、并且不要再次更改模式的原因。

    BR、

    Biao

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

    您好、

    感谢您的解释。

    我想知道 Desay SV 使用的所有文件中使用的工作时钟频率、时钟分频器和协议。

    我指的所有文件都是从不同的引导加载程序阶段到应用程序的文件。

    此外、要求他们提供从引导加载程序到应用程序的所有寄存器相对于使用中的所有文件的配置值。

    用户只需对以下 API 进行更改即可完成此操作:

    int32_t Flash_getConfigRegValues(Flash_Config *config)
    {
        int32_t status = SystemP_SUCCESS;
        uint8_t regData = 0x00;
    
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800002, &regData);
        DebugP_log("Value of Configuration Register 1: %u \r\n", regData);
    
        regData = 0x00;
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800003, &regData);
        DebugP_log("Value of Configuration Register 2: %u \r\n", regData);
    
        regData = 0x00;
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
        DebugP_log("Value of Configuration Register 3: %u \r\n", regData);
    
        regData = 0x00;
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800005, &regData);
        DebugP_log("Value of Configuration Register 4: %u \r\n", regData);
    
        regData = 0x00;
        status |= Flash_norOspiRegRead(config, 0x65, 0x00800006, &regData);
        DebugP_log("Value of Configuration Register 5: %u \r\n", regData);
    
        return status;
    
    }
    
    int32_t Flash_quirkSpansionUNHYSADisable(Flash_Config *config)
    {
        int32_t status = SystemP_SUCCESS;
        uint8_t regData = 0x00;
        uint32_t write = 0;
    
        status = Flash_getConfigRegValues(config);
    
        /* Hybrid Sector Disable */
        status = Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
    
        if(status == SystemP_SUCCESS)
        {
            if((regData & ((uint8_t)(1 << 3))) == 0)
            {
                /* Set UNHYSA bit */
                regData |= (1 << 3);
                write = 1U;
            }
            else
            {
                /* No action */
            }
        }
    
        if(write)
        {
            status = Flash_norOspiRegWrite(config, 0x71, 0x04, regData);
        }  
         
        DebugP_log("After Hybrid Sector is Disabled the values are as follows: \r\n");
        status = Flash_getConfigRegValues(config);
    
        return status;
    }

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    您的意思是、您需要客户使用上述 API 来打印您需要的值、然后向您提供反馈、对吧?

    BR、

    Biao

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

    您好、

    感谢您的耐心。

    [引述 userid="531612" url="~/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5706991 #5706991"]

    此外、要求他们提供从引导加载程序到应用程序的所有寄存器相对于使用中的所有文件的配置值。

    用户只需对以下 API 进行更改即可完成此操作:

    [/报价]

    我假设这样做了、如果是这样、我能否掌握相关值。

    您意味着您需要客户应用上述 API 来打印您需要的值、然后向您反馈、对吧?

    您是对的。

    BR、

    Vaibhav