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.

TMDSIDK437X: Flash programming of the QSPI-Flash on the TMDSIDK437x

Part Number: TMDSIDK437X
Other Parts Discussed in Thread: UNIFLASH,

Hello,

I have a issue when trying to flash the QSPI-flash on the TMSIDK437x. I tried the following steps with uniflash 7.0 and 6.4 on two different TMDSIDK437x (one just arrived today) with the same result. For testing I just took the file "qspi.bin" from the sdk-am437x-rtos

The steps carried out are:

1: dslite.bat --mode load -c D:\Work\PlugIn\CodeComposerStudio\TargetConfig\idkAM437xXDS100.ccxml -f C:\TI\uniflash_7.0.0\processors\FlashWriter\idkAM437x\uart_idkAM437x_flash_programmer.out -n 1

DSLite version 11.0.0.2538
Configuring Debugger (may take a few minutes on first launch)...
        Initializing Register Database...
        Initializing: IcePick_D_0
        Executing Startup Scripts: IcePick_D_0
        Initializing: CS_DAP_M3
        Executing Startup Scripts: CS_DAP_M3
        Initializing: M3_wakeupSS_1
        Executing Startup Scripts: M3_wakeupSS_1
        Initializing: CS_DAP_DebugSS
        Executing Startup Scripts: CS_DAP_DebugSS
        Initializing: CortexA9
        Executing Startup Scripts: CortexA9
        Initializing: CSSTM_0
        Executing Startup Scripts: CSSTM_0
        Initializing: CSETB_0
        Executing Startup Scripts: CSETB_0
        Initializing: PRU_ICSS1_PRU0
        Executing Startup Scripts: PRU_ICSS1_PRU0
        Initializing: PRU_ICSS1_PRU1
        Executing Startup Scripts: PRU_ICSS1_PRU1
        Initializing: PRU_ICSS0_PRU0
        Executing Startup Scripts: PRU_ICSS0_PRU0
        Initializing: PRU_ICSS0_PRU1
        Executing Startup Scripts: PRU_ICSS0_PRU1
Connecting...
GEL: CortexA9: Output: ****  AM437x IDK EVM Initialization is in progress ..........
GEL: CortexA9: Output:  **** Device Type: GP
GEL: CortexA9: GEL Output: System input clock is 24MHz
GEL: CortexA9: GEL Output: ****  AM43xx OPP100 with CLKIN=24MHz is in progress .........
GEL: CortexA9: GEL Output:       ****  Going to Bypass...
GEL: CortexA9: GEL Output:       ****  Bypassed, changing values...
GEL: CortexA9: Output:   ****  Locking PLL
GEL: CortexA9: GEL Output:       ****  MPU PLL locked
GEL: CortexA9: GEL Output:       ****  Core Bypassed
GEL: CortexA9: GEL Output:       ****  Now locking Core...
GEL: CortexA9: GEL Output:       ****  Core locked
GEL: CortexA9: GEL Output:       ****  Calculated PER SD Divisor=4
GEL: CortexA9: GEL Output:       ****  PER DPLL Bypassed
GEL: CortexA9: GEL Output:       ****  PER DPLL Locked
GEL: CortexA9: GEL Output:       ****  Calculated EXTDEV SD Divisor=4
GEL: CortexA9: GEL Output:       ****  EXTDEV DPLL Bypassed
GEL: CortexA9: GEL Output:       ****  EXTDEV DPLL Locked
GEL: CortexA9: GEL Output:       ****  DISP PLL Config is in progress ..........
GEL: CortexA9: GEL Output:       ****  DISP PLL Locked
GEL: CortexA9: GEL Output:       ****  DDR DPLL Bypassed
GEL: CortexA9: GEL Output:       ****  DDR DPLL Locked
GEL: CortexA9: GEL Output: ****  Setting DDR3  = 400MHz
GEL: CortexA9: GEL Output: ****  AM43xx OPP100 configuration is done .........
GEL: CortexA9: GEL Output: Starting DDR3 configuration...
GEL: CortexA9: Output: EMIF PRCM is in progress .......
GEL: CortexA9: Output: EMIF PRCM Done
GEL: CortexA9: GEL Output: EMIF CLK enabled...
GEL: CortexA9: GEL Output: Waiting for VTP Ready .......
GEL: CortexA9: GEL Output: VTP is Ready!
GEL: CortexA9: GEL Output: VTP controller enabled
GEL: CortexA9: GEL Output: Checking if DLL is ready...
GEL: CortexA9: GEL Output: DLL is ready
GEL: CortexA9: GEL Output: Configuring DDR IOs and Control Module registers...
GEL: CortexA9: GEL Output: Configuration of Control Module registers complete
GEL: CortexA9: GEL Output: Setting up DDR3 H/W leveling configuration...
GEL: CortexA9: GEL Output: Starting EMIF controller configuration...
GEL: CortexA9: GEL Output:

DDR3 Hardware leveling complete... Outputing all the leveling results !!!

GEL: CortexA9: GEL Output: PHY_STATUS_12=0x070000C1
GEL: CortexA9: GEL Output: PHY_STATUS_13=0x070000BF
GEL: CortexA9: GEL Output: PHY_STATUS_14=0x070000D4
GEL: CortexA9: GEL Output: PHY_STATUS_15=0x070000D4
GEL: CortexA9: GEL Output: PHY_STATUS_16=0x00000000
GEL: CortexA9: GEL Output: PHY_STATUS_7 =0x00000047
GEL: CortexA9: GEL Output: PHY_STATUS_8 =0x00000047
GEL: CortexA9: GEL Output: PHY_STATUS_9 =0x00000047
GEL: CortexA9: GEL Output: PHY_STATUS_10=0x00000044
GEL: CortexA9: GEL Output: PHY_STATUS_11=0x00000000
GEL: CortexA9: GEL Output: PHY_STATUS_17=0x007400CD
GEL: CortexA9: GEL Output: PHY_STATUS_18=0x020600D3
GEL: CortexA9: GEL Output: PHY_STATUS_19=0x024600E2
GEL: CortexA9: GEL Output: PHY_STATUS_20=0x007600E9
GEL: CortexA9: GEL Output: PHY_STATUS_21=0x00000000
GEL: CortexA9: GEL Output: PHY_STATUS_22=0x0034008D
GEL: CortexA9: GEL Output: PHY_STATUS_23=0x01C60093
GEL: CortexA9: GEL Output: PHY_STATUS_24=0x020600A2
GEL: CortexA9: GEL Output: PHY_STATUS_25=0x003600A9
GEL: CortexA9: GEL Output: PHY_STATUS_26=0x00000000
GEL: CortexA9: GEL Output:

DDR3 configuration is complete!!!

GEL: CortexA9: GEL Output: Turning on EDMA...
GEL: CortexA9: GEL Output: EDMA is turned on...
GEL: CortexA9: Output: ****  AM437x IDK EVM Initialization is Done ******************


Loading Program: C:\TI\uniflash_7.0.0\processors\FlashWriter\idkAM437x\uart_idkAM437x_flash_programmer.out
        Preparing ...
        .text: 0 of 50404 at 0x40300000
        .text: 32752 of 50404 at 0x40300000: 64%
        Finished: 64%
        Setting PC to entry point.: 64%
Running...
Success

2: dslite.bat --mode processors -c COM4 -f C:\TI\SDK-AM437x\pdk_am437x\packages\ti\board\bin\idkAM437x\armv7\qspi.bin -d 3 -o 0

Executing the following command:
> C:\TI\uniflash_7.0.0\processors\ProcessorSDKSerialFlash.exe -c COM4 -f C:\TI\SDK-AM437x\pdk_am437x\packages\ti\board\bin\idkAM437x\armv7\qspi.bin -d 3 -o 0

For more details and examples, please refer to the UniFlash Quick Start guide.

The file extension is .bin

----------------------------------------------------------------------------
ProcessorSDKSerialFlash CLI Tool
Copyright (C) 2017-2021 Texas Instruments Incorporated - http://www.ti.com/
Version 1.5.0.0
----------------------------------------------------------------------------
Transferring the Image to Flash Programmer..

Transferring Header Information..
Header Transfer Complete!

And now the process hangs forever...

As written above, I tried it with uniflash 6.4 and 7.0, with the on-board XDS100v2 and the UBS560v2 debugger, and on two different TMDSIDK437x boards (one just arrived this afternoon)...

Can you give me some hints, what might be wrong?

Thanks a lot, have a nice day,

Bernd

  • Hello Bernd,

    The device type in the second command to program the flash should be 2 for QSPI instead of 3:

    C:\ti\uniflash_7.0.0>dslite.bat --mode processors -h
    Executing the following command:
    > C:\ti\uniflash_7.0.0\processors\ProcessorSDKSerialFlash.exe -h
    
    For more details and examples, please refer to the UniFlash Quick Start guide.
    
    
    ----------------------------------------------------------------------------
    ProcessorSDKSerialFlash CLI Tool
    Copyright (C) 2017-2021 Texas Instruments Incorporated - http://www.ti.com/
    Version 1.5.0.0
    ----------------------------------------------------------------------------
    Displaying Help..
    
    Usage:
    dslite.bat --mode processors -c <COM_Port> -f <File_to_be_transferred_with_full_path> -d <Device_Type> -i <Image_Type> -e <Erase_Length> -o <Offset>               
    -fc <Hardware_Flow_Control> -raw <Raw_Mode>
    
    COM_Port: COM port number where processor UART console is connected
    
    File_to_be_transferred_with_full_path: Name of the file to be flashed with full path
    
    Device_Type:
    0 - NAND
    1 - SPI
    2 - QSPI
    3 - OSPI
    4 - eMMC
    5 - HyperFlash
    6 - UFS
    7 - Custom Flash
    

    So the command should be: dslite.bat --mode processors -c COM6 -f <file> -d 2 -o 0

    Please see the log when I successfully ran the command below:

    C:\ti\uniflash_7.0.0>dslite.bat --mode processors -c COM6 -f C:\ti\pdk_am437x_1_0_17\packages\ti\board\bin\idkAM437x\armv7\qspi.bin -d 2 -o 0
    Executing the following command:
    > C:\ti\uniflash_7.0.0\processors\ProcessorSDKSerialFlash.exe -c COM6 -f C:\ti\pdk_am437x_1_0_17\packages\ti\board\bin\idkAM437x\armv7\qspi.bin -d 2 -o 0
    
    For more details and examples, please refer to the UniFlash Quick Start guide.
    
    The file extension is .bin
    
    ----------------------------------------------------------------------------
    ProcessorSDKSerialFlash CLI Tool
    Copyright (C) 2017-2021 Texas Instruments Incorporated - http://www.ti.com/
    Version 1.5.0.0
    ----------------------------------------------------------------------------
    Transferring the Image to Flash Programmer..
    
    Transferring Header Information..
    Header Transfer Complete!
    
    Flashing Image of size 50044 bytes
    Flash Programming Success!
    

    Regards,

    Jianzhong

  • Hello Jinzhong,

    thanks for your reply! This was an embarrassing fault! Programming the flash with the onboard XDS100v2 works now.

    However, programming with the Blackhawk USB560v2 still fails from the command line. After downloading the uart_idkAM437x_flash_programmer and starting it, the Board only replies 3x the character 'C', and then it resets and reboots...

    If downloading the uart_idkAM437x_flash_programmer via CCS and starting from inside CCS, everything works fine...

    Do you have any hints?

    Thanks a lot - have a nice day,

    Bernd

  • Hi Bernd,

    No worries. For Blackhawk JTAG emulators, I haven't personally tried, but it seems there is extra setup needed. Please check https://blackhawk-dsp.com/blog/flash-programming/uniflash-support-from-blackhawk/. According to this page, Uniflash v6 is supported. 

    Regards,

    Jianzhong