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.

TMDSEVM437X: I modified EEPROM data and then the board can‘t run U-boot .

Part Number: TMDSEVM437X

Hi, i have a Ti evaluation board (TMDSEVM437X). But i made a mistake. I modified EEPROM data by using I2C commands,eg "i2c mw 0x50 0.2  1 5". 0x50 is EEPROM chip address and 1 is data what need be writed. EEPROM contains specific identity and configuration information for that board. So the board can‘t run U-boot. I have no logs to print after the board start up. I read U-boot source code and discovery that the SPL (MLO file) need read EEPROM to detect board. I think the serial uart can't be used in SPL. What can i do it to solve the problem?

spruhw7.pdf: AM437x GP EVM Hardware User's Guide

Thank you.

Best regards, wenlong.

  • Hi,

    since your board doesn't boot I'd recommend to simply modify the U-Boot board detection code to hard-code to identify the board as an AM437x GP EVM. You could follow the steps from our U-Boot board port guide for AM437x available at https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/AM437X/linux/How_to_Guides_Board_Port.html to do this:

    Here's the applicable extract:

    • Remove code enclosed between #ifdef TI_I2C_BOARD_DETECT and #endif from board/ti/am43xx/board.c
    • Rework and remove all board-detection related code in board.cboard.h, and mux.c, only keeping and flattening the pieces needed to support the actual platform the custom board is based on. The original board.cboard.h, and mux.c files are written such that they support a multitude of different boards as well as different revisions of a given board, all with their own board- specific set of features including but not limited to DDR configuration, pinmux, device operating points/speeds, and other peripheral initialization code. Do the rework by following the code path that is executed as a result of various board_is_*() function calls. For example, to flatten the platform code and tailor it to the currently shipping revision of AM437x GP EVM hardware, assume board_is_evm() to evaluate as true, and all other board_is_*() functions as false, and simplify the platform code accordingly.

    Once you have updated U-Boot removing all board detection code and hard-code the flow specifically for the AM437x GP EVM and you are able to get to U-Boot prompt you could use the 'i2c' set of command that you used earlier to restore the original EEPROM contents, after extracting it from another board (I can provide the copy of the contents from one of our boards, if needed).

    Regards, Andreas

  • Hi Andreas, you give me great help. I have been motified board/ti/am43xx/board.c. But it didn't work. Because it must  assume board_is_evm() to evaluate as true, and all other board_is_*() functions as false.

    Best wish for you!

    Best regards, wenlong.