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:sbl_can_uniflash WON't Flash with --flash-offset=0x81000

Guru**** 2442300 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1547359/am263p4-sbl_can_uniflash-won-t-flash-with---flash-offset-0x81000

器件型号:TMDSCNCD263P
Thread 中讨论的其他器件:UNIFLASH

工具/软件:MCU_PLUS_SDK 10.01.00.34

您好:

最新的 SBL (sbl_ospi.release.tiimage) 预计应用程序将在偏移 0x81000 处刷写、即类似于 GUI UniFlash:

我想使用 项目 “scbl_can_uniflash_am263px-cc_r5fss0-0_nortos_ti-arm-clang"进行“进行仿真。

但是、 我在“default_sbl_can_uniflash_app.cfg"中“中进行了以下更改

--file=myfile.appimage --operation=flash --flash-offset=0x8 1. 000


但是、当我调试“scbl_can_uniflash"时“时、我可以看到以下测试在 Bootloader_uniflashFlashFile () 中总是正确的:

	if((status == SystemP_SUCCESS) && ((flashOffset % eraseBlockSize) != 0))
	{
		/* Only flash to offsets which are a multiple of blockSize */
		status=SystemP_FAILURE;
	}

这是因为 flashOffset (0x81000) 不是块大小的倍数。 当然、如果 --flash-offset=0x80000、它就可以正常工作。


项目“scbl_can_uniflash “是否可用于在 0x81000 处刷写应用程序以匹配 SBL 预期偏移? 如果是、“default_sbl_can_uniflash_app.cfg"的“的内容应该是什么?

谢谢你。

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

    尊敬的 Kier:

    请分享一些更多信息、

    您使用哪种引导模式?

    这是定制板还是 TI EVM

    您还在使用哪种闪存?

    您运行 OSPI 的频率是多少? 您是否在 OSPI 中使用 PHY 模式?

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

    您好:Nilabh、

    我看不到问题的相关性。 使用偏移量  0x80000 时、刷写操作正常。 无论如何…

    您正在使用哪种引导模式?

    我使用 OSPI 1S 模式。

    [报价 userid=“500225" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1547359/am263p4-sbl_can_uniflash-won-t-flash-with---flash-offset-0x81000/5957615

    这是定制板还是 TI EVM

    您还在使用哪种闪存?

    [/报价]

    如器件型号字段所示、我使用 的是 TMDSCNCD263P

    您运行 OSPI 的频率是多少? 您是否在 OSPI 中使用 PHY 模式?

    根据 TI 工程“sbl_can_uniflash_am263px-cc_r5fss0-0_nortos_ti-arm-clang"。“。

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

    之所以重要、是因为 OSPI 的使用速度比使用速度快。

    当使用 OSPI 以更高的速度访问闪存时、需要在 0x80000 位置进行闪存调优数据、因此您无法在那里刷写应用程序、但如果您以较慢的速度使用、则不需要闪存调优数据。 您可以在该位置进行刷写。

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

    是、但描述的问题是我无法在 0x8 处刷写 1. 000 此外、原因是此测试失败 (flashOffset % eraseBlockSize)== 0。

    这可能更多地涉及配置文件中不正确或缺失的建议:

    # When sending application image, make sure to flash at offset 0x80000 (default) or to whatever offset your bootloader is configured for
    --file=../../examples/drivers/ipc/ipc_notify_echo/am263px-cc/system_freertos_nortos/ipc_notify_echo_system.release.appimage --operation=flash --flash-offset=0x80000

    将偏移量更改为“引导加载程序配置的任何偏移量“对于需要将应用程序设置为 0x81000 的 SBL 都不起作用。

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

    尊敬的 Kier:

    您能试一下吗  

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

    您好:Nilabh、

    谢谢、但不能 100%确定您的意思。 已存在如下行:

    BOOTLOADER_UNIFLASH_OPTYPE_FLASH_SECTOR               = 0xF7

    “你要我做什么?“

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

    对不起,如果我不清楚,

    由于 SBL 尝试执行非块大小对齐的写入、因此写入失败。

    我问的是从 can_uniflash python 脚本中发送一个扇区写入命令、而不是默认的块写入命令。

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

    好的、谢谢。

    在考虑了 Python 脚本之后、我想您需要的是 --操作=闪存扇区写入  而不是 配置文件中的--operation=flash。

    optypewords = {
    "flash" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH,
    "flashverify" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH_VERIFY,
    "flash-xip" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH_XIP,
    "flashverify-xip" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH_VERIFY_XIP,
    "flash-phy-tuning-data" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH_TUNING_DATA,
    "erase" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH_ERASE,
    "flash-emmc":BOOTLOADER_UNIFLASH_OPTYPE_EMMC_FLASH,
    "flashverify-emmc":BOOTLOADER_UNIFLASH_OPTYPE_EMMC_VERIFY,
    "flash-sector-write":BOOTLOADER_UNIFLASH_OPTYPE_FLASH_SECTOR,
    "flash-mcelf-xip":BOOTLOADER_UNIFLASH_OPTYPE_FLASH_MCELF_XIP,
    "flashverify-mcelf-xip" : BOOTLOADER_UNIFLASH_OPTYPE_FLASH_VERIFY_MCELF_XIP
    }
    
    

    遗憾的是、 Python 脚本中不支持参数“flash-sector-write":“:

    Parsing config file ...
    Traceback (most recent call last):
      File "C:\ti\mcu_plus_sdk_am263px_10_01_00_34\tools\boot\can_uniflash.py", line 912, in <module>
        main(sys.argv[1:])
      File "C:\ti\mcu_plus_sdk_am263px_10_01_00_34\tools\boot\can_uniflash.py", line 635, in main
        parse_status = filecfg.parse()
      File "C:\ti\mcu_plus_sdk_am263px_10_01_00_34\tools\boot\can_uniflash.py", line 893, in parse
        status = linecfg.validate()
      File "C:\ti\mcu_plus_sdk_am263px_10_01_00_34\tools\boot\can_uniflash.py", line 793, in validate
        f = open(self.filename)
    TypeError: expected str, bytes or os.PathLike object, not NoneType

    因此、我根据您的请求对脚本进行了黑客攻击:

        file_header = struct.pack(file_header_str,
                                  BOOTLOADER_UNIFLASH_FILE_HEADER_MAGIC_NUMBER,
                                  optypewords[linecfg.optype],
                                  offset_val,
                                  erase_size_val,
                                  actual_file_size,
                                  rsv_word, rsv_word, rsv_word
                                 )

    ...到...

        file_header = struct.pack(file_header_str,
                                  BOOTLOADER_UNIFLASH_FILE_HEADER_MAGIC_NUMBER,
                                  BOOTLOADER_UNIFLASH_OPTYPE_FLASH_SECTOR,
                                  offset_val,
                                  erase_size_val,
                                  actual_file_size,
                                  rsv_word, rsv_word, rsv_word
                                 )

    这似乎成功刷写。

    因此、该问题可以总结如下:

    SDK can_uniflash.py 与 SDK sbl_ospi.release.tiimage 不兼容(因为 SBL 需要偏移 0x81000,且不支持闪存扇区写入) 。

    您能否提交 TT 以更正此问题?

    另请注意、偏移量为 0x81000 的闪存失败仍会在 Python 脚本……中报告为成功

    ...尽管响应标头说其他:

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

    尊敬的 Kier:

    我们计划对闪存写入本身进行更改、检查是否请求块对齐写入、否则继续进行扇区对齐写入。

    很高兴它能为您效劳。