MCU-PLUS-SDK-AM243X: AM2431 board custom flash programming problem.

Part Number: MCU-PLUS-SDK-AM243X
Other Parts Discussed in Thread: AM2431, UNIFLASH

Tool/software:

Dear TI experts,

I am working on AM2431 board with custom nor flash MT25QL256ABA. I have some problems during nor flash programming.

1. I set boot mode to Dev boot and use example project 'ospi_flash_diag_am243x-evm_r5fss0-0_nortos_ti-arm-clang' to get flash parameters.

Save flash parameters to json file  and load into project 'sbl_jtag_uniflash_am243x-evm_r5fss0-0_nortos_ti-arm-clang', 'sbl_uart_uniflash_am243x-evm_r5fss0-0_nortos_ti-arm-clang' and 'sbl_ospi_am243x-evm_r5fss0-0_nortos_ti-arm-clang' syscfg.

Then use jtag to debug project sbl_jtag_uniflash, erase, write, verify of flash are success.

After that I change boot mode to QSPI mode, there is no log messages from uart terminal. It seems sbl_ospi doesn't work.

2. I set boot mode to UART, I use python script to download files. 2 of 4 files are transferred fail because of incorrect magic number.

Our DeviceType is HSFS.

I add some information in python script "print("resp_magic={} resp_status={}\n".format(hex(resp_magic), hex(resp_status)))".

I don't know how to continue. Need you help!

Best Regards,

  • Hello,

    The AM243x-EVM UART_UNIFLASH uses DDR for storing the received images over UART. In case you are using custom DDR, have you already integrated the corresponding DDR config file in the UNIFLASH examples?

    Regards,

    Prashant

  • We don't use custom DDR. But I don't know how to remove DDR from syscfg or other place. When i remove DDR from syscfg, flash-phy-tuning-data operation will fail.

  • If you don't have DDR on your custom board then you will have to modify the UART_UNIFLASH example to move the buffer from DDR to MSRAM. Please see the following link:

    e2e.ti.com/.../4788625

  • I changed linker.cmd and main,cpp as you said. But UART uniflash still fail:

  • Have the key programmed to board? I observed that the HS-FS image was programmed into flash memory and I think the key was not programmed. Please using the GP format image to try. 

  • I don't know how to generate GP format of sbl_ospi.release.tiimage. After I changed to SDK10.0 as you suggested, sbl_jtag_uniflash lp project can't import flash json file generated before.

    .

    Then I import SDK10.0 jtag_flash_diag project to read flash parameter, but it fails.

    The flash json file generated in SDK 9.02 is:

    {
    
    	"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
    }

    In Dev mode, each time run SDK10.0 java script command, there is no Soc initialization log message.

     '

  • Let me go through the information & get back to you.

    Thanks!