4 Replies Latest reply on Mar 18, 2019 11:10 AM by jomoenginer

    Beaglebone Black (rev. C) booting from Ethernet (RJ45)

    elem2018

      Hello,

       

      I have a BBB rev. C, trying to boot it from ethernet (RJ45) in the sequence of MLO ---> u-boot.img  ---> zImage.bin.  MLO, u-boot.img and zImage.bin are located in the same folder /tftpboot

      Following configurations are done in /etc/dhcp/dhcpd.conf

      ------------------------------------------------------

      subnet 192.168.0.0 netmask 255.255.255.0 {

        range 192.168.0.2 192.168.0.100;

        if substring (option vendor-class-identifier, 0, 10) = "AM335x ROM"

        {

          filename "MLO";

        }

        elsif substring (option vendor-class-identifier, 0, 10) = "DM814x ROM"

        {

          filename "MLO";

        }

        elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL"

        {

          filename "u-boot.img";

        }

        else

        {

          filename "zImage.bin";

        }

      }

      ------------------------------------------------------

      I confirm that either tftp and dhcp server works fine, because I tested them in u-boot from a bootable SD card.

      Then I removed the SD card, cleaned emmc (writing zeros into emmc) and reset BBB.  I expected that the rom loader in BBB

      will read the configration from the dhcpd.conf via ethernet and boot first MLO, then u-boot.img and finally the zImage.bin.

       

      But what I see are only CCCCCCC...

      Am I missing something in configuration? Would you please help me to make the BBB bootable (MLO, u-boot.img and zImag.bin) from Ethernet?

       

      Thanks

      Xi

        • Re: Beaglebone Black (rev. C) booting from Ethernet (RJ45)
          rsjsouza

          Xi,

           

          I don't think the BeagleBone Black boots directly from Ethernet - I recall testing this several months ago but I forgot where I stopped trying.

           

          You will probably need a SD card with MLO/u-boot that explicitly connects to the tftp and downloads the kernel to the board memory.

           

          Reference; https://www.twam.info/hardware/beaglebone-black/u-boot-on-beaglebone-black

          • Re: Beaglebone Black (rev. C) booting from Ethernet (RJ45)
            gdstew

            According to TI documentation:

             

            General Boot Sequence (Linux system)

            Boot sequence (in order)

            • Boot ROM
            • X-loader
            • U-boot
            • Linux


            At power-up an OMAP3 device begins booting from internal Boot ROM.  This code is fixed during the manufacturing process and cannot be altered.  The Boot ROM reads boot configuration pins (SW4 on the OMAP3 EVM) which tell the Boot ROM where to look for the first external bootloader.  The choices include NAND, UART, and SD/MMC Card.  Control is then passed to this first external bootloader called x-loader.  The x-loader application is included in the Linux PSP provided by TI and can be modified by the end user.  The x-loader application passes control to u-boot.  U-boot is also a bootloader and is considered the second external bootloader in this case.


            U-boot is the application which passes control to the Linux system.  The main goal of u-boot is to retrieve the Linux kernel and provide the kernel with information about the location of the Linux filesystem.  U-boot can be configured to retrieve the kernel from NAND, SD/MMC Card, UART or Ethernet (via TFTP).  U-boot can also specify a root filesystem that is located in NAND (jffs2), SRAM (ramdisk), SD/MMC card (ext3 partition) or mounted over IP (NFS).


            U-boot then boots the Linux kernel.  The Linux kernel mounts the Linux root filesystem.

             

             

            So the internal boot ROM will not look for any DHCP configuration information over Ethernet at least, I'm not sure what it is looking for over the UART (an  x-loader?). Your only choices look to be a modified x-loader or U-boot. I know U-boot can boot over

            tftp or nfs so that looks like the easiest path.

            1 of 1 people found this helpful
            • Re: Beaglebone Black (rev. C) booting from Ethernet (RJ45)
              elem2018

              Thanks for your answer. After lots of google I believe you are right, on BBB direct ethernet boot from RJ45 is impossible. But could you please give me some hints how to write the SD card image (at least MLO and u-boot) into emmc? I unfrotunately wrote zeros into emmc. I tried to hold the S2 swtich during SD boot for 10 seconds, but no emmc flashing happened.  What is the right way to falsh the emmc?

              Regards

              Xi

                • Re: Beaglebone Black (rev. C) booting from Ethernet (RJ45)
                  jomoenginer

                  If you have already downloaded and burnt the last BB image to an SD card,

                   

                  1. Take the SD card and place it back into the system used to burn the image

                   

                  2. Navigate to '/boot' the  folder and edit the uEnv.txt file and uncomment (remove the '#' symbol) for the following line:

                   

                  #cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v2.sh

                   

                  3. Place the SD card back into the BBB and power it on.  The emmc should start flashing at this point; no need to push the boot button.

                   

                  4. Once the flash is complete, power off the BBB again, remove the SD card.

                   

                  5. Place it back into another system and comment out the line mentioned previously again.

                   

                  6. Place the card back into the BBB, and power it on.  

                   

                  If all went well, the board should boot normally  and emmc should be updated.

                   

                  Hopefully I did not miss anything