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.

Linux/AM4379: Custom board SPL hangs

Part Number: AM4379

Tool/software: Linux

Hi all:

My AM4379 customer board  no information is exported from the serial port  when run pre-built TI-SDK kernle image. My TI- SDK version is I the latest version.

So I debugged the SPL with the emulator. Load u-boot-spl.bi to Address 0x402F4000. Is this  load address right? The following diagram:

I found that SPL was hung up after  "bl main" was finished.The following diagram is the process of the program execution and the hanging location.

My AM4379 customer board no EMMC device and eprom is used,DDR3 RAM and NAND FLASH is 512M. Besides this, the circuit and the TI-AM4379-EVM are almost the same.

However, in my understanding, the SPL runtime is just a very simple configuration for CPU, and the program runs in RAM, so there is little difference from the peripherals. So I wonder why our board boot SPL won't succeed. Please give me some advice from the expert. Thank you very much.

  • Do you have an on-board ID EEPROM? Is it programmed? If not, you will need to skip the EEPROM check in SPL.
  • Thank you for answering my question.

    I have not an on-board ID EEPROM.  But it seems that the problem is not EEPROM. Because I found through single step debugging, SPL boot had been skipped to SPL interrupt and hang before it went to EEPROM

    check.  After completion low_init, Jump in main(bl main). Execution in _main, An exception occurs when the execution is to memset. In a single step in memset, the program won't be hang, but the use of continuous

    running will immediately jump to the SPL interrupt . I can't be sure whether it is my emulator problem or my CCS 7.3 debug setting is incorrect. Or because the previous SPL BOOT low init made the wrong setting. But it

    seems that the previous settings are all the same, and have not been customized.

    In addition, my "load memory" spl.bin address is 0x402f4000, is this the correct load address? If not, will it have an impact on debugging? What is the correct load address?

    My emulator model is XDS200.

  • Hi Alex,

    From what I understand you are using AM437x TI PSDK v04_01_00_06. And you are loading the pre-built SPL/MLO image on your AM437x custom board. Note this SPL pre-built image is build to run by default on the AM437x TI EVM, thus you should port it to your custom board, depending on the differences between AM437x TI EVM and your custom board.

    As as debug approach, you can try with UART boot. You can configure your AM437x device boot pins for UART boot, thus you should see "CCCCC..." symbols on the console terminal. These symbols should appear before SPL/MLO, thus you will be sure everything regarding the HW design and UART console config is correct. Then you can proceed porting/debugging SPL/MLO source.

    See the below wiki for more details:

    processors.wiki.ti.com/.../AM335x_board_bringup_tips

    processors.wiki.ti.com/.../Processor_SDK_Bare_Metal_Examples

    processors.wiki.ti.com/.../AM43xx_Hardware_Diagnostics

    Regards,
    Pavel
  • Thanks Pavel.  

    I used the diagnostic MLO you provided. The following diagnosis results were obtained.

    My board is a customer board,no EEPROM,So it can't be detected version,serial number. 

    What I want to ask is “Board != Crystal”,Does it mean that The crystal I use does not match the TI development board,So I'm going to modify the CLOCK configuration in the SPL startup settings?

    The boot exception is due to the fact that the CLOCK configuration does not match the actual crystal? Thank you!

  • Alex,

    The diagnostic MLO is for AM437x EVM, where OSC0 24MHz is used.

    What is the frequency you are using on OSC0 (19.2MHz, 24MHz, 25MHz and 26MHz are the supported options)? This is the clock crystal attached to OSC0_IN/XTALIN/C25 and OSC0_OUT/XTALOUT/B25 pins.

    If you are using different than 24MHz on your custom board, you should apply this in sysboot[15:14] pins and CTRL_STS[23:22] SYSBOOT15_14 bit-filed. See AM437x TRM, section 5.2.4.3 Clocking Configuration

    Regards,
    Pavel