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.

[参考译文] AM2431:通过 UART 刷写 SBL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1300862/am2431-flashing-sbl-by-uart

器件型号:AM2431
主题中讨论的其他器件:LP-AM243UNIFLASH

大家好、我是 TI 专家。

我成功刷写到sbl_null.release.hs_fs.tiimage LP-AM243开发板上。 但是、当我切换到产品板时、刷写过程一直失败。 我已将引导模式设置为 UART 引导模式、我可以看到从 UART0发送的字符"C"。 然后、我使用了 Python 脚本{SDK_folder}/tools/boot/uart_uniflash.py和以下命令:

Fullscreen
1
python3 uart_uniflash.py -p COM4 --cfg=sbl_prebuilt/am243x-lp/default_sbl_null.cfg
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

结果一致表明、在执行第二个命令期间进度会在0%停止、直到发生超时。

在检查 Python 脚本时、似乎在发送第二个文件时、MCU 没有任何响应。 您能帮助我确定潜在的问题吗? 可能存在与硬件相关的方面导致了这种情况? 谢谢你。

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

    今天我使用逻辑分析仪对 UART 进行了一个实验。 在执行第一条命令期间、我观察到 MCU 按照 Xmodem 的行为、对 Python 脚本做出响应。 但是、在执行第二条命令时、没有传输。

    根据我的理解、第一条命令'--flash-writer=sbl_prebuild/am243x-lP/sbl_uart_uniflash.release.hs_fs.tiimage、'发送'sbl_uart_uniflash.release.hs_fs.tiimage'以让 ROM 引导加载程序接收到 RAM 中。 传输完成后、ROM 引导应跳转至 RAM、从而允许'BL_UART_uniflash.release.hs_fs.tiimage' SBL 启动并接收随后的 SBL 将其存储到外部闪存中。

    但是、在这个过程中出现了问题。 在 ROM 引导程序接收到数据并跳转到 RAM 以从 SBL 启动后、SBL 似乎不在 RAM 中或可能卡在开始位置、从而导致失败。 这只是一个假设,这是问题吗?

    我有几个问题:

    1.当 ROM 引导收到第一个 SBL 时、此 SBL 是否存储在 RAM 中?
    2、SDK 文档、特别是"引导流迁移指南"提到"BL_*.release.tiimage"包含 SYSFW、表示我可能不需要将 SYSFW 更新到 MCU 中。 但是、在我对{SDK_FOLD}/examples/drivers/boot/sbl_uart_uniflash 项目的研究中、我在主函数中找到了"bootloader_socWaitForFWBoot ()"函数、该函数似乎等待来自 SYSFW 的事件。 我担心我可能忘记将 SYSFW 刷写到 MCU 中。
    3.我试图用 CCS 编译{SDK_FOLDER}/examples/drivers/boot/sbl_uart_uniflash 工程、但编译失败。 您能否提供有关解决此问题的指导?

    感谢您的帮助!

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

    Larry、您好!

    在您的生产电路板中、您使用哪个闪存? 是否与 LP-AM243x 具有相同的闪存?

    如果不是这样的话、您需要重新检查  SBL_UART_uniflash 的闪存配置。 在跳转到 uniflash 之前、我的建议是通过此流程验证相同的内容- https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/CUSTOM_FLASH_SUPPORT_GUIDE.html

    此致、
    Aakash

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

    尊敬的 Aakash:

    感谢您的答复。 我们将使用的生产闪存是 W25Q16JV、它不同于 LP-AM243x。

    我的同事和我都尝试从 LP-AM243x 中拆焊闪存、并用 W25Q16JV 替换它。 在使用 CCS 脚本运行"OC 初始化"后、我加载了"OSPI 闪存诊断"示例、该示例成功运行。 我收到了以下日志:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "flashSize": 2097152,
    "flashPageSize": 256,
    "flashManfId": "0xEF",
    "flashDeviceId": "0x4015",
    "flashBlockSize": 65536,
    "flashSectorSize": 4096,
    "cmdBlockErase3B": "0xD8",
    "cmdBlockErase4B": "0xD8",
    "cmdSectorErase3B": "0x20",
    "cmdSectorErase4B": "0x20",
    "protos": {
    "p111": {
    "isDtr": false,
    "cmdRd": "0x03",
    "cmdWr": "0x02",
    "modeClksCmd": 0,
    "modeClksRd": 0,
    "dummyClksCmd": 0,
    "dummyClksRd": 0,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    接下来、我将该 JSON 数据加载到 sbl_uart_uniflash syscfg 中、然后执行 uart_uniflash.py。 虽然两个命令执行无错误、但状态结果仍显示失败、如下所示:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Parsing config file ...
    Parsing config file ... SUCCESS. Found 2 command(s) !!!
    Executing command 1 of 2 ...
    Found flash writer ... sending sbl_prebuilt/am243x-lp/sbl_uart_uniflash_test.Release.hs_fs.tiimage
    Sent flashwriter sbl_prebuilt/am243x-lp/sbl_uart_uniflash_test.Release.hs_fs.tiimage of size 296762 bytes in 28.55s.
    Executing command 2 of 2 ...
    Command arguments : --file=sbl_prebuilt/am243x-lp/sbl_null_one_core.Release.hs_fs.tiimage --operation=flash --flash-offset=0x0
    Sent sbl_prebuilt/am243x-lp/sbl_null_one_core.Release.hs_fs.tiimage of size 260737 bytes in 50.51s.
    [STATUS] ERROR: Flash verify failed !!!
    All commands from config file are executed !!!
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您能帮助我确定这种情况下可能有什么问题吗?

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

    Larry、您好!

    在直接尝试 sbl_uart_uniflash 之前、请尝试 ospi_flash_io 等更简单的示例、以确保新的闪存配置正常工作。 FLASH_verify 失败意味着它无法从闪存读回。 配置中可能缺少某些内容。 您能否尝试 ospi_flash_io 示例并让我知道结果?

    此致、
    阿南德·马哈德万·SS

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

    Anand、您好!  

    感谢您的答复。 我已经确定了根本原因、似乎 syscfg 设置不正确、导致闪存验证失败。 解决此问题后、我的产品板现在可以正常工作。 感谢您的帮助!

    此致、

    拉里