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.

[参考译文] UNIFLASH:关于使用 UniFlash CLI 的验证方法

Guru**** 2924050 points

Other Parts Discussed in Thread: AM263P4, UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1633229/uniflash-regarding-verification-methods-using-the-uniflash-cli

器件型号: UNIFLASH
主题中讨论的其他部件: AM263P4Sysconfig

我们目前正在使用 AM263P4 开发定制板、并正在建立大规模生产线。

到目前为止、由于我们处于开发阶段、因此一直在使用 UniFlash 的 GUI 版本。 但是、GUI 版本在编程后不提供验证功能。 在调查过程中、我们从《快速入门指南》中了解到、CLI 版本支持编程后验证。

基于这些信息、我们将我们一直使用的项目转换为基于 CLI 的工作流程并执行了该工作流程。 因此、显示了以下输出:

info: Cortex_R5_0: Program verification successful for Multiple Files
Success

通过该消息、我们了解验证已成功完成。 但是、我们想知道 核查 实际是如何进行的、如果你能更详细地解释核查机制、我们将不胜感激。

我们的环境和使用的命令的详细信息如下:

  • MCU:AM263P4
  • UniFlash 版本:9.3.0.5401

使用的命令:

dslite --mode flash 
       -c user_files/configs/AM263Px_ZCZ_C.ccxml 
       -l user_files/settings/generated.ufsettings 
       -s VerifyAfterProgramLoad="No verification" 
       -e 
       -f 
       -v 
       "user_files/images/xxx.tiimage,0x60000000" 
       "user_files/images/yyy.appimage,0x60081000"

(注意:和表示实际的程序文件名。) xxx yyy

此外、尽管它可能与上述内容无关、但有时我们会观察到以下行为:在使用 GUI 和 CLI 时、除非多次执行编程操作、否则程序似乎无法正确写入。
是否有任何建议的方法来确定此问题的根本原因、或者是否有已知的解决方案来解决此问题?

非常感谢您的支持。

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

    您好、\


    我已收到您的查询。 请给我一些时间来研究一下这个问题。 我将尝试通过该星期五做出响应。 感谢您的耐心。

    此致、
    Aswathi

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

    您好、Aswathi

     

    感谢您的答复。
    这件事非常紧迫、如果您能尽快与我联系、我将不胜感激。
    对此造成的不便、我深表歉意、并提前感谢您的理解。

     

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

    您好:  

    在 uniflash CLI 工具中、程序验证功能对 AM26x 器件无效。 在 UniFlash CLI 文档中提到这一点、因为该文档是工具的通用文档。 对于 AM26x 器件、这只是假打印。

    为了进行验证、请使用 MCU PLUS SDK 中的 sbl_JTAG_uniflash 示例。 此工具可对应用程序和 XIP 文件进行编程和验证。

    工具链接: mcu_plus_sdk_am263px_11_01_00_19\examples\drivers\boot\sbl_jtag_uniflash

    此致、

    Aswin

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

    您好、Aswin、

    感谢您发送编修。

    我们知道、UniFlash CLI 工具中的程序验证功能对 AM26x 器件无效。

    关于 您提到的 sbl_jtag_uniflash 的使用、我们想确认预期的工作流程。
    是否 应从 CCS 中使用 sbl_jtag_uniflash 示例、或者它是否打算 通过 CLI 编译和使用

    我们提出的原因是、我们正在考虑在 大规模生产过程中使用该工具、在这种情况下、我们希望与 SBL 一起对软件进行编程。 如果可能、我们最好使用基于 CLI 的工具来操作此过程。

    您能否告知 sbl_jtag_uniflash 的假定使用环境、以及是否有任何推荐的方法或工作流程来在 基于 CLI 的大规模生产环境中使用它(或替代工具)

    我们感谢您就此问题提供指导。

    此致、
    今田厚树

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

    您好: Imada Atsuki

    该工具应由 CCS 自行使用。 让我检查一下这是否可以通过 CLI 使用。我将检查这一点并返回给您。

    此致、

    Aswin

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

    您好:Imada Atsuki

    请问您所处的 SDK 是什么? 从 SDK 版本 11.0 开始、仅支持 mcelf 映像。

    在 vSDK 版本 11.0 之前的版本中、仅支持应用程序映像。 XIP 映像验证也仅在 11.0 SDK 中可用。 因此、如果您使用的是应用映像、则无法进行 XIP 映像验证。

    对于满足您要求的闪存器实用程序、

    1.需要修改 sbl_jtag_uniflash 示例、以直接刷写 SBL 和应用程序映像。 当前它等待用户提示。 需要消除此等待。

    需要写入一个 DSS 脚本、它会将 sbl_jtag_uniflash 的.out 文件加载到存储器中。

    3.加载映像后、需要在脚本控制台中运行 loadRaw () 命令以将 SBL 和应用程序映像加载到 RAM 中、以便 SoC 中运行的 sbl_jtag_uniffflash 可以访问该映像。 需要完成此操作是因为闪存器应用程序在 SoC 中运行后无法访问系统中的本地文件。

    步骤 2 中提到的 DSS 脚本也需要处理步骤 3 中的 loadRaw () 命令。 请告诉我该方法是否可以接受、SDK 版本如何?

    ┌─────────────────────────────────────────┐
    │ 1. Load SBL JTAG Uniflash via JTAG      │
    │    - Connects via JTAG/debugger         │
    │    - Loads uniflash app to RAM          │
    │    - Displays menu on serial console    │
    └─────────────────────────────────────────┘
                        ↓
    ┌─────────────────────────────────────────┐
    │ 2. Load Image into RAM                  │
    │    - Provided file path & flash offset  │
    │    - Execute loadRaw in CCS console     │
    └─────────────────────────────────────────┘
                        ↓
    ┌─────────────────────────────────────────┐
    │ 3. Flash/Verify Operation               │
    │    - SBL processes image from RAM       │
    │    - Writes to external flash           │
    │    - Verifies data integrity            │
    │    - Returns status                     │
    └─────────────────────────────────────────┘

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

    您好、Aswin、

    我们开发中当前使用的 SDK 版本为 9.2.0.56
    我们计划 在将来升级到 SDK 版本 11.0.0.19;但是、对于量产发货、我们不计划对 XIP 映像进行编程。 相反、我们打算 仅对应用程序映像(mcelf 映像)进行编程

    为了评估您提出的过程、我们认为第一步是验证我们是否可以使用 sbl_jtag_uniflash 成功地对应用程序编程

    我们的应用程序大小几乎 是样片大小的两倍。 在这种情况下、 为了正确运行样本、是否只修改 FILE_MAX_SIZE 参数以匹配更大的大小即可?
    此外、是否建议此处分配的大小与程序大小完全相同、尤其是在该区域之后没有可用的未使用存储器空间时?

    此致、
    今田厚树

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

    尊敬的 Imada Atsuki:

    需要增大 FILE_MAX_SIZE 宏。 此外、还需要在链接器脚本中进行相同的更改、以便容纳文件。

    此致、

    Aswin

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

    您好、Aswin、

    很抱歉耽误了回复。

    我使用定制电路板 (MCU:AM263P4、闪存:IS25LX128) 和 CCS 12.8.1 测试了设置。
    因此、我遇到了以下问题、希望得到您的确认。


    ① 程序文件太大、无法写入

    要写入定制电路板的软件大小为 4,075,548 字节。
    我尝试将内存区域 MSRAM_区域大小修改为 0x003E3700、但收到以下错误:
    “大小不能大于 3145728 B“
    因此我无法更改设置。

    有没有方法可以编写这样一个大的文件?


    ② 什么是基地址? 失调电压有什么含义?

    我知道 sbl_jtag_uniflash 将用于闪存的软件加载到 RAM 中、然后将其写入闪存。

    此时会指定偏移、但哪个地址用作基准?
    它是闪存的起始地址 (0x60000000) 还是其他地址?


    ③ 它使用块写入、但我想扇区写入(写入 0x81000)

    在这种情况下,我打算从闪存地址开始编写软件 0x60081000
    但是、示例代码使用基于块的写入而不是基于扇区的写入、因此无法按预期编写。
    (似乎只能指定 0x0 或 0x020000。)

    是否有任何支持基于扇区的写入的示例代码?


    ④ 未修改的示例代码无法正常工作

    完全擦除闪存后、我通过 CCS 调试将代码部署到 RAM 中并尝试运行它、
    sbl_jtag_uniflash 没有在定制板 RAM 上开始。

    然而、当使用已编写示例 SBL 的定制板时、
    sbl_jtag_uniflash 按预期启动。

    是否 sbl_jtag_uniflash 需要 SBL 才能运行?

    此外、在使用之前 sbl_jtag_uniflash、我编写了示例 SBL 并使用 UniFlash 转储对其进行了验证。
    然后我使用编写了相同的 SBL sbl_jtag_uniflash 、并使用转储文件再次进行了检查。
    但是、样本 SBL 所在的区域用零填充、
    并且 SBL 没有引导。

    您有任何解决此问题的建议吗?


    如果可能、请在 6 月 8 日之前给予答复。

    感谢您的支持。

    伊马达

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

    您好:

    我尝试将内存区域 MSRAM_区域大小修改为 0x003E3700、但收到以下错误:
    “大小不能大于 3145728 B“
    因此我无法更改设置。

    您能告诉我这条消息的来源吗? 来自 SysConfig。 此外、我假设 MSRAM 是片上 RAM 区域。 器件没有这么多的 RAM 区域。 文件大于 4MB。

    [引述 userid=“647936“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1633229/uniflash-regarding-verification-methods-using-the-uniflash-cli/6368696

    ② 什么是基地址? 失调电压有什么含义?

    我知道 sbl_jtag_uniflash 将用于闪存的软件加载到 RAM 中、然后将其写入闪存。

    此时会指定偏移、但哪个地址用作基准?
    它是闪存的起始地址 (0x60000000) 还是其他地址?

    [/报价]

    我假设偏移与图中所示的偏移相关

    是、这是闪存中的偏移、即相对于闪存基地址的偏移量(在本例中为 0x6000_0000)

    [引述 userid=“647936“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1633229/uniflash-regarding-verification-methods-using-the-uniflash-cli/6368696

    ③ 它使用块写入、但我想扇区写入(写入 0x81000)

    在这种情况下,我打算从闪存地址开始编写软件 0x60081000
    但是、示例代码使用基于块的写入而不是基于扇区的写入、因此无法按预期编写。
    (似乎只能指定 0x0 或 0x020000。)

    是否有任何支持基于扇区的写入的示例代码?

    [/报价]

    请问、在这种情况下使用的 operationTypeAndFlags 是什么? 存在 bootloader_UNIFLASH _OPTYPE_FLASH_SECTOR 参数

    [引述 userid=“647936“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1633229/uniflash-regarding-verification-methods-using-the-uniflash-cli/6368696

    ④ 未修改的示例代码无法正常工作

    完全擦除闪存后、我通过 CCS 调试将代码部署到 RAM 中并尝试运行它、
    sbl_jtag_uniflash 没有在定制板 RAM 上开始。

    然而、当使用已编写示例 SBL 的定制板时、
    sbl_jtag_uniflash 按预期启动。

    是否 sbl_jtag_uniflash 需要 SBL 才能运行?

    此外、在使用之前 sbl_jtag_uniflash、我编写了示例 SBL 并使用 UniFlash 转储对其进行了验证。
    然后我使用编写了相同的 SBL sbl_jtag_uniflash 、并使用转储文件再次进行了检查。
    但是、样本 SBL 所在的区域用零填充、
    并且 SBL 没有引导。

    您有任何解决此问题的建议吗?

    [/报价]

    是否 sbl_jtag_uniflash 需要 SBL 才能运行?

     不需要任何样片 SBL。 您是否已确认 OSPI 和闪存设置是否符合定制电路板的要求? 该文件可直接从 CCS 加载。

    在从 CCS 加载 sbl_jtag_uniflash 示例时、您可以分享观察到的吗?

    然后我使用编写了相同的 SBL sbl_jtag_uniflash 、并再次用转储进行了检查。
    但是、样本 SBL 所在的区域用零填充、
    并且 SBL 未引导。

    这主要表明存在闪存通信问题。 这可能与 SysConfig 中的 OSPI 闪存配置相关。 如果我记得正确、KHI 已在之前调试的定制电路板上尝试过该示例。

    此致、
    Aswin