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-c6x: Boot TMDSEVM6678LE from TFTP with rootfs mounted on NFS

Hi, All!

Please explain me step by step, that I need perform to boot my EVM from TFTP with rootfs mounted on NFS? Boot from NAND work properly.

I have tuned TFTP and NFS servers, root file system extracted from mcsdk-demo-root-c6x-hf.cpio.gz to ~/targetfs-c6x directory. TFTP and NFS servers are working properly (I can boot DM8168EVM for example).

I rebuild kernel with required for my system parameters:

./bootblob get-cmdline vmlinux-2.6.34-evmc6678.el-dev-karak-20130326.bin
console=ttyS0,115200 ip=dhcp root=/dev/nfs nfsroot=192.168.0.40:/home/karak/targetfs-c6x,v3,tcp rw

I do not clearly understand that I need else. In this moment I have this messages in minicom window:

IBL version: 1.0.0.17                                             
IBL: PLL and DDR Initialization Complete                          
IBL Result code 00
IBL: Booting from ethernet
IBL: Booting from ethernet

...

Thank you for all!

  • Hi, Idle,

    Could you check from wireshark capture to see what IP address the BOOTP packets are sent to and what file name it requested to download? I believe you need to change the IP address for the TFTP boot in project/ibl/src/util/iblConfig/src/device.c. There is an individual function for each EVM.

    Rex

  • Hi, Rex Chang!

    Thank you for your answer! I rebuilt ibl with modified file project/ibl/src/util/iblConfig/src/device.c according to the settings of my network, and leave fileName parameter in it's default value: c6678-le.bin and burn new ibl image in eeprom51.  Here my settings from device.c file:

    ibl_t c6678_ibl_config(void)
    {
    ...
        SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.ipAddr,    192,168,0,77);
        SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.serverIp,  192,168,0,40);
        SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.gatewayIp, 192,168,0,1);
        SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.netmask,   255,255,255,0);

        /* Use the e-fuse value */
        ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[0] = 0;
        ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[1] = 0;
        ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[2] = 0;
        ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[3] = 0;
        ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[4] = 0;
        ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[5] = 0;


        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[0]  = 'c';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[1]  = '6';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[2]  = '6';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[3]  = '7';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[4]  = '8';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[5]  = '-';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[6]  = 'l';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[7]  = 'e';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[8]  = '.';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[9]  = 'b';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[10] = 'i';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[11] = 'n';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[12] = '\0';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0';
        ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';
    ...
    }

    I do not clearly understood wich file must be in /tftpboot directory with name u.ethBoot.ethInfo.fileName? This is the linux kernel file name or not? I try to rename linux kernel file from vmlinux-2.6.34-evmc66~v-karak-20130326.bin to c6678-le.bin but no result.

    In wireshark I can't see anything similar to BOOTP. (I set filter in eth.addr == 40:5f:c2:83:ec:b6) I see only this line, after I powered up EVM, and that is all:

    1288    58.100189000    0.0.0.0    255.255.255.255    BOOTP    342    Boot Request from 40:5f:c2:83:ec:b6 (TexasIns_83:ec:b6)

  • Hi, All!

    I solve my problem. After building ibl in /projects/ibl/src/util/iblConfig/build appear this files:

     - iblConfig.out (configuration utility running on x86)

     - input.txt (text configuration file)

     - ibl.bin (botloader image)

    I set valid values in input.txt and than run iblConfig.out. And than burn new ibl.bin in eeprom51. And my system is boot up! Thank you for all! My input.txt

    file_name = ibl.bin
    device = 6
    offset = 0x500
    ethBoot-doBootp = FALSE
    ethBoot-bootFormat = ibl_BOOT_FORMAT_BBLOB
    ethBoot-ipAddr = 192.168.0.77
    ethBoot-serverIp = 192.168.0.40
    ethBoot-gatewayIp = 192.168.0.1
    ethBoot-netmask = 255.255.255.0
    ethBoot-fileName = c6678-le.bin