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.

BBB custom board not booting

Hi,

We are porting TI-SDK-2(ti-processor-sdk-linux-am335x-evm-02.00.02.11) to BBB custom board which has serial debug on UART1. I configured defconfig and "board file Kconfig" as per my board. When I try to boot with the MLO and u-boot.img nothing is coming up on the serial, I dont know whats happening. can any one please help? When I probe the CRO on UART1 lines, nothing is showing on UART_RX line but when I hit any key on host machine where serial debug is connected I am seeing some data on TX line. Can any one please help?

I refered the below link https://e2e.ti.com/support/embedded/linux/f/354/p/385378/1359371#1359371.

 I assume nothing to change for serial console, except Kconfig under board directory.

-Pavan

  • Hello,

    You need to start from minimal for debug purpose.. Remove unneeded configs stuff thats not needed from the first stage bootloader and check your pinmuxes second thing is the DDR is it different from the evm ?. Are you using the same compiler provided by TI ? Or if you have a JTAG that should tell whats crashing..

    Cheers,
    --Prabhakar Lad
  • HI Prabhakar,

    Our custom board have same DDR which is there in BBB and using TI compiler only. We dont have EEPROM, but atleast "U-Boot SPL 201******"  message, we should get before reading EEPROM. I am not seeing anything on the debug port, is that issue with UART configuration or something else?

    Thanks,

    -Pavan

  • You should first check your HW. Please ask an hw/system engineer to check this for you if you did not.

    Refer to processors.wiki.ti.com/.../AM335x_board_bringup_tips

  • Pavan,

    Also for changing console from UART0 to UART1, you might have a look in the below pointers:

    processors.wiki.ti.com/.../TI81xx_PSP_Porting_Guide
    e2e.ti.com/.../317502
    e2e.ti.com/.../264125
    e2e.ti.com/.../546862

    Regards,
    Pavel
  • Thank You TI,

    There is no problem with the custom board hardware, because same hardware was working for TI-SDK-8 from long time. We started upgrading our custom board's OS from SDK-8 to SDK-2 recently. The problem was like our custom board also don't have eeprom and need to skip eeprom checks for few of the configurations (like sdram_init and preload_concole_init). Intially I hardcoded as like this


    #if 0 >>>>>>>>>>> commented

    ep->header = am_ep.header;
    strlcpy(ep->name, am_ep.name, TI_EEPROM_HDR_NAME_LEN + 1);
    ti_eeprom_string_cleanup(ep->name);
    strlcpy(ep->version, am_ep.version, TI_EEPROM_HDR_REV_LEN + 1);
    ti_eeprom_string_cleanup(ep->version);
    strlcpy(ep->serial, am_ep.serial, TI_EEPROM_HDR_SERIAL_LEN + 1);
    ti_eeprom_string_cleanup(ep->serial);
    strlcpy(ep->config, am_ep.config, TI_EEPROM_HDR_CONFIG_LEN + 1);
    ti_eeprom_string_cleanup(ep->config);
    #endif


    // >>>>>> hardcoding the eeprom headers
    ep->header = am_ep.header;
    strlcpy(ep->name, "A335BNLT", TI_EEPROM_HDR_NAME_LEN + 1);
    ti_eeprom_string_cleanup(ep->name);
    strlcpy(ep->version, "00A5", TI_EEPROM_HDR_REV_LEN + 1);
    ti_eeprom_string_cleanup(ep->version);
    strlcpy(ep->serial, "4001BBBK6150", TI_EEPROM_HDR_SERIAL_LEN + 1);
    ti_eeprom_string_cleanup(ep->serial);
    strlcpy(ep->config, "XAXX", TI_EEPROM_HDR_CONFIG_LEN + 1);
    ti_eeprom_string_cleanup(ep->config);

    After more debugging I missed to comment one more check right above this section of the code, after doing it started working fine with out any issue.
    For others who wants to hardcode read_eeprom section where they don't have eeprom in their custom board, this is for your reference. If there is any better place to do hardcode of eeprom headers please let us know. But so far the below section of the code is working fine.

    // >>>>>>>>>>>> complete section of the code
    #if 0
    rc = ti_i2c_eeprom_get(bus_addr, dev_addr, TI_EEPROM_HEADER_MAGIC,
    sizeof(am_ep), (uint8_t *)&am_ep);
    if (rc)
    return rc;


    ep->header = am_ep.header;
    strlcpy(ep->name, am_ep.name, TI_EEPROM_HDR_NAME_LEN + 1);
    ti_eeprom_string_cleanup(ep->name);
    strlcpy(ep->version, am_ep.version, TI_EEPROM_HDR_REV_LEN + 1);
    ti_eeprom_string_cleanup(ep->version);
    strlcpy(ep->serial, am_ep.serial, TI_EEPROM_HDR_SERIAL_LEN + 1);
    ti_eeprom_string_cleanup(ep->serial);
    strlcpy(ep->config, am_ep.config, TI_EEPROM_HDR_CONFIG_LEN + 1);
    ti_eeprom_string_cleanup(ep->config);
    #endif

    ep->header = am_ep.header;
    strlcpy(ep->name, "A335BNLT", TI_EEPROM_HDR_NAME_LEN + 1);
    ti_eeprom_string_cleanup(ep->name);
    strlcpy(ep->version, "00A5", TI_EEPROM_HDR_REV_LEN + 1);
    ti_eeprom_string_cleanup(ep->version);
    strlcpy(ep->serial, "4001BBBK6150", TI_EEPROM_HDR_SERIAL_LEN + 1);
    ti_eeprom_string_cleanup(ep->serial);
    strlcpy(ep->config, "XAXX", TI_EEPROM_HDR_CONFIG_LEN + 1);
    ti_eeprom_string_cleanup(ep->config);



    But TI, interestingly in previous SDK-8 all eeprom checks happening after uart initializations(preloader_console_init()). In SDK-8 the console serial port was initialized at a very early stage.It was the first thing done by the SPL code. This made quite much sense, as
    it enabled all the code afterwards to output status/debugging info to the console.
    Now in the latest SDK of SDK-2 console init's is happening at later stage. This makes very difficult to debug where the board is hanged. It could have been easy to debug if the console init is done as soon as the SPL is loaded and with out any dependency on EEPROM checks. Beacuse we were scratchings our head where it it stucking and no clue to trace out. 
    Please explain if my understanding is correct.