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.

TMDS64GPEVM: Mac address and emprom

Part Number: TMDS64GPEVM

Hello everyone , 

We are making custom carrier board based am64x  evm in which we require 1 ethernet interface . 

But on evm there are 3 ethernet ports [eth0, eth1 and eth2 (stacked port) in linux] . 

i want to know where is the mac address stored for eth0 , eth1 and eth2. 

From the user manual for evm board  i can see that there is onboard eprom (U7) which stores the mac address , ddr info , magic number board info etc and The address of eprom is 0x50 , 0x51 & it is connected to i2c-0 

After taking the i2cdump using -->  i2cdump -y 0 0x50 and i2cdump -y 0 0x51 i get the following output : 

root@am64xx-evm:~# i2cdump -y 0 0x50
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 55 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff U...............
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
80: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
90: ff ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................

root@am64xx-evm:~# i2cdump -y 0 0x51
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................

As you can see from the above output i cannot find the mac address , device info etc 

Am i missing something ? 

which ethernet interface /port uses the mac address that is stored on onboard eprom (U7) ? 

do we need to make some changes in  bootloarder source code for our custom carrier board if we skip eprom in our design ?  

does SPL rely on eprom for ddr initialisation ?

does uboot rely on eprom to assign ip address to eth1 and eth2 . 

  • Hi,

    The EEPROM is not necessary for a board design. As you mention you will need to modify the u-boot source code for your board to remove the eeprom board check code. TI uses the eeprom to store MAC addresses and the board ID so u-boot knows which DDR config to use and which dtb to load for the Linux kernel. 

    I am surprised at the moment that you cannot read the board data. Which SDK are you using? And which version of the EVM are you using?

    Best Regards,

    Schuyler

  • Hi,

    Try this to see what is in the eeprom I am assuming that you have a gp evm and not an SK evm. Stop the boot in u-boot. These are u-boot commands.

    i2c dev 0

    i2c md 0x50  0.2 100

    This  should display the eeprom contents.

    Best Regards,

    Schuyler

  • Thanks , i am now able to print the contents of emprom using the uboot`s i2c commands but i cannot print/dump the contents of  eprom using  linux/i2c-tools . 

    Am i doing something wrong ?

    i also want to know which part of source code that i need to remove to make the bootloaders  independent from eprom , in other words i want to hard code the the DDR and mac address in uboot. 

  • Hi,

    In Linux try this command:

    i2cdump -f -y 0 0x50 c

    To answer the u-boot source code question, which SDK are you using? I want to make sure I am looking at the same SDK you are.

    Best Regards,

    Schuyler

  • Hi,

    In linux when i type the  "i2cdump -f -y 0 0x50 c" and i get following output ;

    root@am64xx-evm:~# i2cdump -y 0 0x50
    No size specified (using byte-data access)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00: 55 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff U...............
    10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    40: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    50: ff ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ................
    60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    80: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    90: ff ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ................
    a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
    f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................

    I am using the tisdk-base-image-am64xx.tar.xz based image which is a part of latest sdk 8.21

  • Hi,

    I thought you might be using a GP-EVM, are you using an SK-EVM? This is the dump looks like on my board which is a gp-evm. Please note that the board I have is a pre-production board and the MAC-IDs stored here are not valid. For a the SK-EVM the command changes slightly in that the I2C address is 0x51 and not 0x50 in the example that I showed.

    Do you have your DDR designed yet?

    Best Regards,

    Schuyler

  • I am using the gp evm..

    I have also tried with ox51 but i2c dump is still invalid .

    But the surprising part is that using the uboot i2c commands that you have shared earlier I can seen valid id's,  values stored on eprom on 0x50 address. 

  • On SKEVM, I2C-0 pins are not selected/muxed in device-tree, could be the same case for GP-EVM. Don't know how it read anything... 

    Adding block shown below to device-tree, compiling..., got the SKEVM I2C-0 working in Linux

    &main_pmx0 {
    	main_i2c0_pins_default: main-i2c0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0260, PIN_INPUT_PULLUP, 0) /* (A18) I2C0_SCL */
    			AM64X_IOPAD(0x0264, PIN_INPUT_PULLUP, 0) /* (B18) I2C0_SDA */
    		>;
    	};
    };
    
    &main_i2c0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c0_pins_default>;
    	clock-frequency = <100000>;
    };