Part Number: AM4377
Other Parts Discussed in Thread: UNIFLASH, , DP83848K
Hello,
I work on the same projekt mentioned in AM4377: QSPI-Flash for AM4377 and we still have the problem that sometimes the board doesn't boot.
I have measured DCLK and nCS of the QSPI when the boot process fails and the communication doesn't even start even though the SYSBOOT configuration being in QSPI (110'0100'0000'0100'1010) mode.
Is there any way to make sure we are in the correct boot mode?
Maybe it's a hardware problem, because some boards work perfectly, while others get the error about every other time. I was able to reproduce the fault with a "bad" board consistently with power cycling the device when it's on with about 0.5s off time. If the device is turned off for longer than about a second it boots without any problems. In both cases the power sequencing is the same. I think this is an argument against a hardware fault.
A maybe related problem i discovered:
The following problems are just happening with the "bad" boards which are around 20%. With the others the programming with the UniFlash is successful.
When programming the flash memory via the UniFlash CLI, after loading the .out file with the USB560v2 System Trace over JTAG, there is no output of "C" on the COM-port despite the return value beeing succesful.
CMD line instruction:
.\dslite.bat --mode load --config=PATH\TargetConfig\sqpAM437x.ccxml -f PATH\ProgFiles\uart_sqpAM437x_flash_programmer.out -n 1
Output:
> "C:\TI\uniflash_8.1.1\deskdb\content\TICloudAgent\win\ccs_base\DebugServer\bin\DSLite" load --config=PATH\TargetConfig\sqpAM437x.ccxml -f PATH\ProgFiles\uart_sqpAM437x_flash_programmer.out -n 1
For more details and examples, please refer to the UniFlash Quick Start guide.
DSLite version 12.2.0.2919
Configuring Debugger (may take a few minutes on first launch)...
Initializing Register Database...
Initializing: IcePick_D_0
Loaded FPGA Image: C:\TI\uniflash_8.1.1\deskdb\content\TICloudAgent\win\ccs_base\common\uscif\dtc_top.jbc
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 SQP Initialization is in progress ..........
GEL: CortexA9: Output: **** Device Type: GP
GEL: CortexA9: GEL Output: System input clock is 24MHz
GEL: CortexA9: GEL Output: **** AM43xx NITRO (1000MHz) 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=2
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 NITRO 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: EMIF Config for SQP
GEL: CortexA9: GEL Output:
DDR3 Hardware leveling complete... Outputing all the leveling results !!!
GEL: CortexA9: GEL Output: PHY_STATUS_12=0x07000099
GEL: CortexA9: GEL Output: PHY_STATUS_13=0x070000A0
GEL: CortexA9: GEL Output: PHY_STATUS_14=0x070000B4
GEL: CortexA9: GEL Output: PHY_STATUS_15=0x070000AD
GEL: CortexA9: GEL Output: PHY_STATUS_16=0x00000000
GEL: CortexA9: GEL Output: PHY_STATUS_7 =0x00000046
GEL: CortexA9: GEL Output: PHY_STATUS_8 =0x00000044
GEL: CortexA9: GEL Output: PHY_STATUS_9 =0x00000046
GEL: CortexA9: GEL Output: PHY_STATUS_10=0x00000044
GEL: CortexA9: GEL Output: PHY_STATUS_11=0x00000000
GEL: CortexA9: GEL Output: PHY_STATUS_17=0x012700D1
GEL: CortexA9: GEL Output: PHY_STATUS_18=0x000000CD
GEL: CortexA9: GEL Output: PHY_STATUS_19=0x019300E0
GEL: CortexA9: GEL Output: PHY_STATUS_20=0x010300DF
GEL: CortexA9: GEL Output: PHY_STATUS_21=0x00000000
GEL: CortexA9: GEL Output: PHY_STATUS_22=0x00E70091
GEL: CortexA9: GEL Output: PHY_STATUS_23=0x03C0008D
GEL: CortexA9: GEL Output: PHY_STATUS_24=0x015300A0
GEL: CortexA9: GEL Output: PHY_STATUS_25=0x00C3009F
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 ******************
GEL: CortexA9: Output: **** PRU-ICSS PRCM Enable Step 1 is in progress ****
GEL: CortexA9: Output: **** PRU-ICSS PRCM Enable Step 1 is Done ****
GEL: CortexA9: Output: **** PRU-ICSS PRCM Enable Step 2 is in progress ****
GEL: CortexA9: Output: **** PRU-ICSS PRCM Enable Step 2 is Done ****
Fill Memory
Verifying 0x54410000
Filling 0x54417FF0: 99%
Verifying 0x54417FF0: 99%
Filling 0x54418000: 100%
Loading Program: PATH\ProgFiles\uart_sqpAM437x_flash_programmer.out
Preparing ...
PT_LOAD[0]: 0 of 40084 at 0x40300000
PT_LOAD[0]: 32752 of 40084 at 0x40300000: 81%
Finished: 81%
Setting PC to entry point.: 81%
Running...
Success
When loading the .out-file with the Code Composer Studio (10.4.0.00006) the "C" output on the COM-port is there but most of the times the process fails at 8% when trying to flash the image.
When this happens the QSPI-communication also doesn't start. When i try it this way the loading is succesful 1 out of 10 times.
CMD line instruction:
C:\TI\uniflash_8.1.1>dslite.bat --mode processors -c COM6 -f PATH\ProgFiles\bootloader_boot_qspi_a9host_release.bin -d 2 -o 0
Output:
Executing the following command: > C:\TI\uniflash_8.1.1\processors\ProcessorSDKSerialFlash.exe -c COM6 -f PATH\ProgFiles\bootloader_boot_qspi_a9host_release.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-2022 Texas Instruments Incorporated - http://www.ti.com/ Version 1.7.0.0 ---------------------------------------------------------------------------- Transferring the Image to Flash Programmer.. Transferring Header Information.. Header Transfer Complete! Flashing Image of size 37768 bytes 8% complete Flash Programming Failed!!
When trying to delete the flash memory there is also no communication between flash and am4377 even tough it says Flash Erase Success!
CMD line instruction:
C:\TI\uniflash_8.1.1>dslite.bat --mode processors -c COM6 -d 2 -e 0x200000
Output:
Executing the following command: > C:\TI\uniflash_8.1.1\processors\ProcessorSDKSerialFlash.exe -c COM6 -d 2 -e 0x200000 For more details and examples, please refer to the UniFlash Quick Start guide. ---------------------------------------------------------------------------- ProcessorSDKSerialFlash CLI Tool Copyright (C) 2017-2022 Texas Instruments Incorporated - http://www.ti.com/ Version 1.7.0.0 ---------------------------------------------------------------------------- Erasing Flash.... Transferring Header information.. Header Transfer Complete!! Flash Erase Success!
In the Quicik start guide it says with %errorlevel% it's possible to check if the previous operation passed. In my case this is true for the "dslite.bat --mode load ..." command but the "dslite.bat --mode processors ..." instruction always returns 1 even if everything loads succesful (bootloader and .bin file).
Is this a bug of the batch file or is it sure that something is wrong? And is there any other way to ensure the process is succesful/failed?
Do you have any suggestions on how to proceed?
Regards, Timo






