Difference between revisions of "Loading Images onto eMMC Devices"

From wiki.emacinc.com
Jump to: navigation, search
(Creating partitions and formatting eMMC)
(Creating partitions and formatting eMMC)
Line 19: Line 19:
  
 
Once the Linux command prompt is reached the Linux utilities can be used to create and format partitions.
 
Once the Linux command prompt is reached the Linux utilities can be used to create and format partitions.
 +
 
The <code>fdisk</code> utility can be used to create partitions on the eMMC.
 
The <code>fdisk</code> utility can be used to create partitions on the eMMC.
  
 +
 +
For example here is the procedure for creating a 128 MB primary partition:
  
 
  root@emac-oe:~# fdisk /dev/mmcblk0
 
  root@emac-oe:~# fdisk /dev/mmcblk0
Line 30: Line 33:
 
  2) booting and partitioning software from other OSs
 
  2) booting and partitioning software from other OSs
 
     (e.g., DOS FDISK, OS/2 FDISK)
 
     (e.g., DOS FDISK, OS/2 FDISK)
    
+
Command (m for help): n
 +
Command action
 +
    e   extended
 +
    p  primary partition (1-4)
 +
p
 +
Partition number (1-4): 1
 +
First cylinder (1-57024, default 1): Using default value 1
 +
Last cylinder or +size or +sizeM or +sizeK (1-57024, default 57024): +128M
 +
 
  Command (m for help): p
 
  Command (m for help): p
  Disk /dev/mmcblk0: 1868 MB, 1868562432 bytes
+
 +
Disk /dev/mmcblk0: 1868 MB, 1868562432 bytes
 
  4 heads, 16 sectors/track, 57024 cylinders
 
  4 heads, 16 sectors/track, 57024 cylinders
 
  Units = cylinders of 64 * 512 = 32768 bytes
 
  Units = cylinders of 64 * 512 = 32768 bytes
          Device Boot      Start        End      Blocks  Id System
+
  /dev/mmcblk0p1   *          1        1954      62520  c Win95 FAT32 (LBA)
+
        Device Boot      Start        End      Blocks  Id System
/dev/mmcblk0p2            1955      57024    1762240 83 Linux
+
  /dev/mmcblk0p1               1        3907      125016 83 Linux
  Command (m for help): q
+
 
+
Command (m for help): w
 +
The partition table has been altered!
 +
 +
Calling ioctl() to re-read partition table
 +
[  566.062896]  mmcblk0: p1
  
 
For more information about <code>fdisk</code>
 
For more information about <code>fdisk</code>
Line 47: Line 63:
  
 
Formatting a partition with EXT3:
 
Formatting a partition with EXT3:
  mkfs.ext /dev/mmcblk0p2
+
  root@emac-oe:~# mkfs.ext3 /dev/mmcblk0p1
 +
mke2fs 1.41.14 (22-Dec-2010)
 +
Filesystem label=
 +
OS type: Linux
 +
Block size=1024 (log=0)
 +
Fragment size=1024 (log=0)
 +
Stride=0 blocks, Stripe width=0 blocks
 +
31360 inodes, 125016 blocks
 +
6250 blocks (5.00%) reserved for the super user
 +
First data block=1
 +
Maximum filesystem blocks=67371008
 +
16 block groups
 +
8192 blocks per group, 8192 fragments per group
 +
1960 inodes per group
 +
Superblock backups stored on blocks:
 +
        8193, 24577, 40961, 57345, 73729
 +
  Writing inode tables: done     
 +
                      Creating journal (4096 blocks): done
 +
Writing superblocks and filesystem accounting information: done
 +
  This filesystem will be automatically checked every 39 mounts or
 +
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 +
 
  
 
Formatting a partition with FAT32:
 
Formatting a partition with FAT32:

Revision as of 12:35, 31 December 2013

TODO: {{#todo:InProgress|Michael Welling|oe 4,oe 5,mw,InProgress}}

Background

Newer EMAC products have started using eMMC in place of NAND flash. eMMC is an embedded MMC compliant memory that takes the form of an integrated circuit instead of a media card.

For more information about MMC see the following page: http://en.wikipedia.org/wiki/MultiMediaCard

U-Boot does not support writing to file systems in eMMC. To overcome this issue, the embedded target has to be boot into Linux using an auxiliary method. Once U-Boot has been loaded into RAM, it can be used to load the target kernel using TFTP and boot into a file system stored in NFS. Once the board has boot into Linux the eMMC can be partitioned, formatted, and the root file system can be extracted. The SoM-3517M requires a special FAT formatted partition that contains the bootloader and Linux kernel images. This article explains the general process of writing the eMMC from Linux as well as some specifics related to the programming the SoM-3517M.

The procedures below require that you have a TFTP and NFS server setup on a host computer.

For instructions on setting up a TFTP server see the following page: Installing TFTP server

For installation of a bootable NFS see the following page: Setting up an NFS File Server

For instruction for booting into NFS with U-Boot: Booting with an NFS Root Filesystem

Creating partitions and formatting eMMC

Once the Linux command prompt is reached the Linux utilities can be used to create and format partitions.

The fdisk utility can be used to create partitions on the eMMC.


For example here is the procedure for creating a 128 MB primary partition:

root@emac-oe:~# fdisk /dev/mmcblk0

The number of cylinders for this disk is set to 57024.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-57024, default 1): Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-57024, default 57024): +128M

Command (m for help): p

Disk /dev/mmcblk0: 1868 MB, 1868562432 bytes
4 heads, 16 sectors/track, 57024 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1               1        3907      125016  83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table
[  566.062896]  mmcblk0: p1

For more information about fdisk http://tldp.org/HOWTO/Partition/fdisk_partitioning.html

After creating the partitions they can formatted with the various mkfs utilities.

Formatting a partition with EXT3:

root@emac-oe:~# mkfs.ext3 /dev/mmcblk0p1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
31360 inodes, 125016 blocks
6250 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
16 block groups
8192 blocks per group, 8192 fragments per group
1960 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
 Writing inode tables: done      
                      Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
 This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


Formatting a partition with FAT32:

mkdosfs -F 32 /dev/mmcblk0p1

Extracting filesystems to eMMC

mount /dev/mmcblk0p2 /mnt/card
cd /mnt/card
tar xzvf /emac-image.rootfs.tar.gz


Quick Reference (by Target Type)

SoM-3517M

mkdosfs -F 32 /dev/mmcblk0p1
mount /dev/mmcblk0p1 /mnt/card
cd /vg-controls
cp MLO uImage u-boot.bin /mnt/card/
sync
umount /dev/mmcblk0p1 mkfs.ext3 /dev/mmcblk0p2
mount /dev/mmcblk0p2 /mnt/card
cd /mnt/card
tar xzvf /emac-image-som3517-20120530221838.rootfs.tar.gz
cd ..
sync
umount /dev/mmcblk0p2

SoM-9X25M / IPAC-9X25