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-AM243X:MCU-PLUS-SDK 电路板自定义闪存编程问题。

Guru**** 2945510 points

Other Parts Discussed in Thread: AM2431, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1423327/mcu-plus-sdk-am243x-am2431-board-custom-flash-programming-problem

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:AM2431、 UNIFLASH

工具与软件:

尊敬的 TI 专家:

我正在使用具有定制 NOR FLASH MT25QL256ABA 的 AM2431电路板。 我在 NOR 闪存编程期间遇到了一些问题。

1.我将引导模式设置为开发引导 、并使用示例项目"ospi_flash_diag_am243x-evm_r5fss0-0_nortos_ti-arm-clang"来获取闪存参数。

将闪存参数保存到 json 文件 中并加载到工程"sl_JTAG_uniflash_am243x-evm_r5fss0-0_nortos_ti-arm-clang"、"bl_uart_uniflash_am243x-evm_r5fss0-0_nortos_ti-arm-clang"和"bl_us_uart_uniflash_am243x-evm_nortos_syscang_ti-arm-0_nortoss"中。

然后、使用 JTAG 调试项目 SBL_JTAG_uniflash、擦除、写入、验证闪存是否成功。

之后、我将引导模式更改为 QSPI 模式、UART 终端没有日志消息。 它似乎 sbl_ospi 不起作用。

2.将引导模式设置为 uart、使用 python 脚本来下载文件。 由于错误的幻数、4个文件中的2个传输失败。

我们的 DeviceType 为 HSFS。

我在 python 脚本"print ("resp_magic={}resp_status={}\n".format (hex (resp_magic)、hex (resp_status))"中添加一些信息。

我不知道该如何继续。 需要您的帮助!

此致、

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

    您好!

    AM243x-EVM UART_UNIFLASH 使用 DDR 通过 UART 存储接收到的图像。 如果您使用定制 DDR、是否已在 UNIFLASH 示例中集成了相应的 DDR 配置文件?

    此致、

    Prashant

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

    我们不使用定制 DDR。 但我不知道如何从 syscfg 或其他地方删除 DDR。 当我从 syscfg 中删除 DDR 时、 flash-phy-tuning-data 操作将失败。

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

    如果您的定制电路板上没有 DDR、则您必须修改 UART_UNIFLASH 示例、以将缓冲器从 DDR 移动到 MSRAM。 请参阅以下链接:

    e2e.ti.com/.../4788625

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

      如前所述、我更改了 linker.cmd 和 main、cpp。 但 UART uniflash 仍然失败:

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

    钥匙是否已编程到电路板上? 我观察到 HS-ROM FS 映像已编程到闪存中、并且我认为密钥尚未编程。 请使用 GP 格式的映像进行尝试。  

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

    我不知道如何生成 sbl_ospi.release.tiimage 的 GP 格式。 我按照建议更改为 SDK10.0后、sbl_JTAG_uniflash LP 工程无法导入之前生成的闪存 json 文件。

    .

    然后我 导入 SDK10.0 JTAG_flash_diag 工程来读取闪存参数、但失败。

    在 SDK 9.02中生成的闪存 json 文件为:

    {
    
    	"flashSize": 33554432,
    	"flashPageSize": 256,
    	"flashManfId": "0x20",
    	"flashDeviceId": "0xBA19",
    	"flashBlockSize": 65536,
    	"flashSectorSize": 4096,
    	"cmdBlockErase3B": "0xD8",
    	"cmdBlockErase4B": "0xDC",
    	"cmdSectorErase3B": "0x20",
    	"cmdSectorErase4B": "0x21",
    	"protos": {
    		"p111": {
    			"isDtr": false,
    			"cmdRd": "0x03",
    			"cmdWr": "0x02",
    			"modeClksCmd": 0,
    			"modeClksRd": 0,
    			"dummyClksCmd": 0,
    			"dummyClksRd": 0,
    			"enableType": "0",
    			"enableSeq": "0x00",
    			"dummyCfg": null,
    			"protoCfg": null,
    			"strDtrCfg": null
    		},
    		"p112": {
    			"isDtr": false,
    			"cmdRd": "0x3C",
    			"cmdWr": "0x02",
    			"modeClksCmd": 0,
    			"modeClksRd": 1,
    			"dummyClksCmd": 0,
    			"dummyClksRd": 7,
    			"enableType": "0",
    			"enableSeq": "0x00",
    			"dummyCfg": null,
    			"protoCfg": null,
    			"strDtrCfg": null
    		},
    		"p114": {
    			"isDtr": false,
    			"cmdRd": "0x6C",
    			"cmdWr": "0x34",
    			"modeClksCmd": 0,
    			"modeClksRd": 1,
    			"dummyClksCmd": 0,
    			"dummyClksRd": 7,
    			"enableType": "0",
    			"enableSeq": "0x00",
    			"dummyCfg": null,
    			"protoCfg": null,
    			"strDtrCfg": null
    		},
    		"p118": {
    			"isDtr": false,
    			"cmdRd": "0x7C",
    			"cmdWr": "0x84",
    			"modeClksCmd": 0,
    			"modeClksRd": 0,
    			"dummyClksCmd": 0,
    			"dummyClksRd": 0,
    			"enableType": "255",
    			"enableSeq": "0x00",
    			"dummyCfg": null,
    			"protoCfg": null,
    			"strDtrCfg": null
    		},
    		"p444s": {
    			"isDtr": false,
    			"cmdRd": "0xEB",
    			"cmdWr": "0x02",
    			"modeClksCmd": 0,
    			"modeClksRd": 1,
    			"dummyClksCmd": 0,
    			"dummyClksRd": 9,
    			"enableType": "0",
    			"enableSeq": "0x14",
    			"dummyCfg": {
    				"isAddrReg": false,
    				"cmdRegRd":"0x00",
    				"cmdRegWr":"0x00",
    				"cfgReg":"0x00000000",
    				"shift":0,
    				"mask":"0x00",
    				"bitP":0
    			},
    			"protoCfg": {
    				"isAddrReg": false,
    				"cmdRegRd": "0x00",
    				"cmdRegWr": "0x00",
    				"cfgReg": "0x00000000",
    				"shift": 0,
    				"mask": "0x00",
    				"bitP": 0
    			},
    			"strDtrCfg": {
    				"isAddrReg": false,
    				"cmdRegRd": "0x00",
    				"cmdRegWr": "0x00",
    				"cfgReg": "0x00000000",
    				"shift": 0,
    				"mask": "0x00",
    				"bitP": 0
    			}
    		},
    		"p444d": {
    			"isDtr": false,
    			"cmdRd": "0xEB",
    			"cmdWr": "0x02",
    			"modeClksCmd": 0,
    			"modeClksRd": 1,
    			"dummyClksCmd": 0,
    			"dummyClksRd": 9,
    			"enableType": "0",
    			"enableSeq": "0x14",
    			"dummyCfg": {
    				"isAddrReg": false,
    				"cmdRegRd":"0x00",
    				"cmdRegWr":"0x00",
    				"cfgReg":"0x00000000",
    				"shift":0,
    				"mask":"0x00",
    				"bitP":0
    			},
    			"protoCfg": {
    				"isAddrReg": false,
    				"cmdRegRd": "0x00",
    				"cmdRegWr": "0x00",
    				"cfgReg": "0x00000000",
    				"shift": 0,
    				"mask": "0x00",
    				"bitP": 0
    			},
    			"strDtrCfg": {
    				"isAddrReg": false,
    				"cmdRegRd": "0x00",
    				"cmdRegWr": "0x00",
    				"cfgReg": "0x00000000",
    				"shift": 0,
    				"mask": "0x00",
    				"bitP": 0
    			}
    		},
    		"p888s": null,
    		"p888d": null,
    		"pCustom": { 
    			"fxn": null
    		}
    	},
    	"addrByteSupport": "1",
    	"fourByteAddrEnSeq": "0x36",
    	"cmdExtType": "NONE",
    	"resetType": "0x3D",
    	"deviceBusyType": "0",
    	"cmdWren": "0x06",
    	"cmdRdsr": "0x05",
    	"srWip":  0,
    	"srWel":  0,
    	"cmdChipErase": "0xC7",
    	"rdIdSettings": {
    		"cmd": "0x9F",
    		"numBytes": 5,
    		"dummy4": 0,
    		"dummy8": 0
    	},
    	"xspiWipRdCmd": "0x00",
    	"xspiWipReg": "0x00000000",
    	"xspiWipBit": 0,
    	"flashDeviceBusyTimeout": 84000000,
    	"flashPageProgTimeout": 120
    }

    在开发模式下、每次运行 SDK10.0 Java 脚本命令时、都没有 SoC 初始化日志消息。

     '

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

    让我浏览一下这些信息、然后再给您答复。

    谢谢!

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

    您好、凌云

       flashDeviceId 为0xBA19、这意味着它在3.0V 电压下工作。您能否检查电源和数据信号波形。  此处的注释是默认 EVM 板 NOR 闪存电源为1.8V。 您的设计应该会与我们不同。  

    Linjun

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

    尊敬的 Linjun:

    今天、我们使用 ospi_flash_io_am243x-evm 项目成功写入和读取闪存。 闪存协议为1s-1s - 1s。 关键点是这样

    每次更改 syscfg'protocol'时、我们需要再次从 JSON 加载。 CCS 工具将根据当前的"协议"值使用 json 文件填充闪存参数。

    我们还测试了协议1s-1S-4S、但失败了。 读取数据时出现问题:

    我会要求 Micron 解决这个问题。 你有什么想法,并自由地告诉我。

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

    您好、凌云

      请上传原理图和 PCB 布局、OSPI 电源需要我们的硬件专家来审查。  谢谢。

    Linjun

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

    当我 更改闪存协议1s-1s-4s 时、虚拟时钟读取 = 0 (json 值为7)、OSPI 时钟输入= 200m、分频器= 4、闪存读取和写入都可以。

    所以我做了一些测试:

    1.使用 JTAG uniflash 将 SBL-null 写入闪存。 将引导模式切换到 QSPI 时、SBL-null 有效。

    2.使用 UART uniflash 将 SBL-null 写入闪存、当将引导模式切换到 QSPI 时、SBL-null 有效。

    3.使用上述闪存参数重新编译 sbl-ospi。 使用 UART uniflash 来编写 sbl-ospi 和 hello world。 当切换到 QSPI 引导模式时、sbl-ospi 打印一些信息、hello world 不打印任何内容。

    因此我在 sbl-ospi main()中添加 loop_forever ,使用 JTAG 进行连接并进行调试。

    从调用栈中、我们可以看到在 Bootloader_parseMultiCoreAppImage->Bootloader_verifyMulticoreImage->Bootloader_getMsgLen->Bootloader_findSeq 中 SBL-ospi 被阻止。 访问 x509_cert_ptr (0x6008000)后、它会崩溃。

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

    凌云市

     您能否请 在此处上传工程示例.syscfg 以检查引导加载程序设置是什么? 谢谢。

    Linjun

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

    请查找 example.syscfg 和 sbl_ospi.Debug.map 的附件。

    e2e.ti.com/.../4212.example.syscfg.txte2e.ti.com/.../sbl_5F00_ospi.Debug.map.txt