Winston Rodrigues

Boot from eMMC (iNAND Flash) in i.MX53 SMD board

Discussion created by Winston Rodrigues on Jul 3, 2013
Latest reply on Jul 15, 2013 by Winston Rodrigues



      Here are few steps on how to boot from in built flash memory (eMMC4.4) on IMX53-SMD board. Without using MFGtool


     First of all SMD board is bootable by SD card by default ( SW26 -2,7 ON) (SW28 all off)

If its booting fine in SD card then Its a easy job to boot from iNAND.


step 1 : First prepare the SD card with the your linux image. Please note that we need e2fsprogs package to format the partitions on the target.

            So include the package by ./ltib -m config and select e2fsprogs from package list. and build everything.

            Keep a copy of u-boot.bin, uImage and rootfs directory in the same SD card (assuming u have enough space on the SD card)

            for that make a directory in the SD card /rootfs_nand and copy the contents of  /home/ubuntu/ltib/roots/ to SD cards /rootfs_nand

           cp -rvf /home/wintu/ltib/rootfs/* /media/SDcard/rootfs/


step 2 : Boot from the SD card.


step 3: Once booted do cat /proc/partitions

           Here u will see mmcblk0 , mmcblk0p1, mmcblk1..

           Here mmcblk0 is nothing but the SD card. and mmcblk1 is iNAND fash. (eMMC)

           So we need to copy u-boot, uImage and rootfs to this device.

           so first copy the u-boot.bin to flash as follows

           dd if=u-boot.bin of=/dev/mmcblk1 bs=512 && sync && sync

           then copy the uImage kernel

           dd if=uImage of=/dev/mmcblk1 bs=512 && seek=2048 && sync && sync


step 4: Now make a partition in iNAND to store the rootfs as follows.

           fdisk /dev/mmcblk1

           press 'u' to change the units to sectors

           press 'd' to delete the existing partitions if any

           press 'n' for creating a new partition select 'p' for primary

           enter the partition number as 1

           enter the starting sector as 10240 coz before that u-boot and uImage has been copied.

           press 'Enter' to select the default End sector.

           press 'w' to write the new partition table.


step 5: format the partition using ext2/ext3/ext4 file system, this is where we need e2fsprogs package

           mkfs.ext2 /dev/mmcblk1p1


step 6: mount the created partition as follows

           mkdir /mnt/nandrive

           mount /dev/mmcblk1p1 /mnt/nandrive

step 7: Now copy the contents of /rootfs_nand which was done in 1st step to the partition as follows

           cp -rvf /rootfs_nand/* /mnt/nandrive

step 8: Now power off the board and set the boot switches so that board boots from eMMC

           SW26(2,5,6,7-ON) SW28(8 -ON)

            Please remove the SD card.

           connect the debug board to the terminal (minicom or hyper terminal on windows)

           power on the board.

           By now you should be seeing the u-boot coming up on the terminal.

           stop the auto boot by pressing any key.

step 9: set the u-boot environmental variables as follows

           the starting address of the kernel     

          MX53-SMD U-Boot > setenv loadaddr 0x70800000

          now after removing the SD card iNAND will mmcblk0 so set the root partition.

         MX53-SMD U-Boot > setenv bootargs_mmc 'setenv bootargs ${bootargs} root=/dev/mmcblk0p1 ip=none rootfstype=ext4'

          now mmc dev 1 because eMMC is treated as 1 and SD is 0.

          MX53-SMD U-Boot > setenv bootcmd_mmc 'run bootargs_base bootargs_mmc; mmc dev 1; mmc read ${loadaddr} 0x800 0x1800; bootm'

          MX53-SMD U-Boot > setenv bootcmd 'run bootcmd_mmc'

          and these if you have set the u-boot splash screen the loation of that

         MX53-SMD U-Boot > setenv splashimage '0x97c90000'

          set the position default is 0,0

          MX53-SMD U-Boot > setenv splashpos '25,25'

          MX53-SMD U-Boot > setenv lvds_num 1

          finally save the variables as follows

          MX53-SMD U-Boot > saveenv

step 10: Congratulations !! Now when you restart the board system should boot from on board flash memory. or eMMC4.4.

Note: I tried to copy the actual rootfs from the SD card to nand and boot it. But It gave me kernel panic.

        So I had to keep another copy of original rootfs into the same SD card.

         If anyone has any easier method it would be really great because this is a little lengthy one.