Difference between revisions of "BeagleBoard Zippy2"

From eLinux.org
Jump to: navigation, search
(Creating a bootable SD card in Ubuntu)
(Determine which device the SD Card Reader is on your system)
Line 121: Line 121:
 
This guide shows how to create a '''dual-partition''' SD card for the BeagleBoard to boot Linux from the first partition and have the root file system located on the second partition.  This guide covers the same procedure as [http://elinux.org/BeagleBoardBeginners#SD_card_setup BeagleBoardBeginners SDCard setup] and [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat LinuxBootDiskFormat].
 
This guide shows how to create a '''dual-partition''' SD card for the BeagleBoard to boot Linux from the first partition and have the root file system located on the second partition.  This guide covers the same procedure as [http://elinux.org/BeagleBoardBeginners#SD_card_setup BeagleBoardBeginners SDCard setup] and [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat LinuxBootDiskFormat].
  
== Determine which device the SD Card Reader is on your system ==
+
'''Determine which device the SD Card Reader is on your system'''
  
 
Insert the SD Card into the SD Card Reader reader on your system.  Then determine which device it is on your system:
 
Insert the SD Card into the SD Card Reader reader on your system.  Then determine which device it is on your system:

Revision as of 14:04, 11 February 2010


Zippy2-base.jpg

The Zippy2 Ethernet Combo Board (KSZ8851SNL-BBE-EVAL) is a low cost expansion board for the BeagleBoard that provides the following peripherals:

  • 10/100BaseT Ethernet
  • Second SD/MMC Interface
  • Second RS232 Serial Interface
  • Real-Time clock with Battery Back-up
  • I2C Interface (+5V level)
  • AT24C01 Serial EEPROM for Board Identification


Hardware

Ethernet

The Zippy2 provides a standard 10/100BaseT (10/100 Mbit) Ethernet interface and uses Micrel's KSZ8851SNL SPI to Ethernet controller.

SD/MMC Interface

The Zippy2 provides a second SD/MMC interface that supports both 3.3V and 1.8V SD memory cards.

RS232 Serial Interface

The Zippy2 provides a second RS-232 serial port for the BeagleBoard. There are two serial connectors provided. Either connector is available for use: 1) standard DB9 Male connector, or 2) 2x5 shrouded header (0.1 inch pin spacing).

Real-time Clock

The Zippy2 provides a battery backed-up Real Time Clock (RTC) which uses the Maxim DS1307. The backup power is provided by a small 3V lithium coin battery and is held in place by a battery holder.

Compatible 3V Lithium Coin Batteries:

  • CR1216
  • CR1220
  • CR1225

Battery cell size = 12mm.

The battery is not included with the Zippy2 and must be purchased separately. Compatible batteries are available from Digi-Key:

Panasonic CR1216

Energizer CR1216


Installing the 3V lithium coin battery:

Zippy2-battery01.jpg

Insert the battery with the positive "+" side up.


Zippy2-battery2.jpg

Slide the battery all the way into the battery holder.

I²C Interface

The Zippy2 provides a 4-pin header expansion connector for access to the BeagleBoard's I²C signals. The signals have been level translated to 5V to allow easy connection to standard 5V peripherals.

I²C expansion header pin assignments:

  • pin 1 - +5V Power
  • pin 2 - SDA (5V signal level)
  • pin 3 - SCL (5V signal level)
  • pin 4 - Ground

Serial EEPROM

The Zippy2 provides a AT24C01 serial EEPROM that contains a Vendor ID and a Device ID that the BeagleBoard uses to identify the type of board connected to the expansion header. This information enables the BeagleBoard to auto-configure the pin mux for signals needed by the Zippy2. More information can be found here.

Soldering BeagleBoard's Expansion Header

This is a quick guide showing you how to solder the 2x14 Header into the BeagleBoard’s Expansion connector (J3).

Zippy2-expansion connector1.jpg

Insert the 2x14 Header’s SHORT PINS from the back side of the BeagleBoard into the BeagleBoard’s expansion connector (J3).


Zippy2-expansion connector2.jpg

Position the 2x14 Header so the LONG PINS are on the BACK SIDE of the BeagleBoard.


Zippy2-expansion connector3.jpg

Solder the SHORT PINS of the 2x14 Header from the TOP SIDE of the BeagleBoard.

Attaching to the BeagleBoard

Zippy2-expansion connector7.jpg

Attach the four board spacers with the screws provides.


Zippy2-expansion connector4.jpg

Connect the expansion board onto the BACK SIDE of the BeagleBoard by mating with the 2x14 Header you just soldered. Make sure all of the pins align correctly.


Zippy2-expansion connector5.jpg

Continue pushing the two boards together until the connectors mate together.


Zippy2-expansion connector6.jpg

Attach the male standoffs as shown.


Zippy2-expansion connector8.jpg

Creating a bootable SD card in Ubuntu

This guide shows how to create a dual-partition SD card for the BeagleBoard to boot Linux from the first partition and have the root file system located on the second partition. This guide covers the same procedure as BeagleBoardBeginners SDCard setup and LinuxBootDiskFormat.

Determine which device the SD Card Reader is on your system

Insert the SD Card into the SD Card Reader reader on your system. Then determine which device it is on your system:

dmesg | tail

In this case it shows up as /dev/sdb (note sdb insite the square brackets above).

Check to see if the automounter has mounted the SD Card

df -h


If mounted, unmount the SD card

umount /media/disk

Start fdisk First, lets clear the partition table:

# fdisk /dev/sdb

Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Print card info:

Command (m for help): p

Disk /dev/sdb: 128 MB, 128450560 bytes
....

Note card size in bytes. Needed later below.

Then go into "Expert mode":

Command (m for help): x

Now we want to set the geometry to 255 heads, 63 sectors and calculate the number of cylinders required for the particular SD/MMC card:

Expert command (m for help): h
Number of heads (1-256, default 4): 255

Expert command (m for help): s
Number of sectors (1-63, default 62): 63
Warning: setting sector offset for DOS compatiblity

Expert command (m for help): c
Number of cylinders (1-1048576, default 1011): 15

In this case 128MB card is used (reported as 128450560 bytes by fdisk above), thus 128450560 / 255 / 63 / 512 = 15.6 rounded down to 15 cylinders. Numbers there are 255 heads, 63 sectors, 512 bytes per sector.

Now, return to main mode and create a new partition:

Expert command (m for help): r

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-15, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-15, default 15): 15

Mark it bootable:

Command (m for help): a
Partition number (1-4): 1

And change its type to FAT32:

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))

The result is:

Command (m for help): p

Disk /dev/sdb: 128 MB, 128450560 bytes
255 heads, 63 sectors/track, 15 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          15      120456    c  W95 FAT32 (LBA)

Now, really write configuration to card (until here, card is not changed):

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

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

Done! What's left is to format our partition as FAT32 to be mounted and populated:

# mkfs.vfat -F 32 /dev/sdb1
mkfs.vfat 2.11 (12 Mar 2005)

Note: before running mkfs.vfat (included in the dosfstools package in Debian) make sure /dev/sdb is not mounted.

# mount /dev/sdb1 /mnt/tmp

Note: If you use additional mkfs.vfat parameter -n you can give the card a name, e.g. for easier identification (i.e. mkfs.vfat -n omap3 -F 32 /dev/sdb1)

The SD/MMC card is now ready to be used to boot





Now start fdisk to check the partition table of the SD card.

First, lets clear the partition table:

 fdisk /dev/sdb
 Command (m for help): o
 Building a new DOS disklabel. Changes will remain in memory only,
 until you decide to write them. After that, of course, the previous
 content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Print card info:

Command (m for help): p

Disk /dev/sdb: 128 MB, 128450560 bytes ....

Note card size in bytes. Needed later below.

Then go into "Expert mode":

Command (m for help): x

Now we want to set the geometry to 255 heads, 63 sectors and calculate the number of cylinders required for the particular SD/MMC card:

Expert command (m for help): h Number of heads (1-256, default 4): 255

Expert command (m for help): s Number of sectors (1-63, default 62): 63 Warning: setting sector offset for DOS compatiblity

Expert command (m for help): c Number of cylinders (1-1048576, default 1011): 15

In this case 128MB card is used (reported as 128450560 bytes by fdisk above), thus 128450560 / 255 / 63 / 512 = 15.6 rounded down to 15 cylinders. Numbers there are 255 heads, 63 sectors, 512 bytes per sector.

Now, return to main mode and create a new partition:

Expert command (m for help): r

Command (m for help): n Command action

  e   extended
  p   primary partition (1-4)

p Partition number (1-4): 1 First cylinder (1-15, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (1-15, default 15): 15

Mark it bootable:

Command (m for help): a Partition number (1-4): 1

And change its type to FAT32:

Command (m for help): t Selected partition 1 Hex code (type L to list codes): c Changed system type of partition 1 to c (W95 FAT32 (LBA))

The result is:

Command (m for help): p

Disk /dev/sdb: 128 MB, 128450560 bytes 255 heads, 63 sectors/track, 15 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System

/dev/sdb1 * 1 15 120456 c W95 FAT32 (LBA)

Now, really write configuration to card (until here, card is not changed):

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

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks.

Done! What's left is to format our partition as FAT32 to be mounted and populated:

  1. mkfs.vfat -F 32 /dev/sdb1

mkfs.vfat 2.11 (12 Mar 2005)

Note: before running mkfs.vfat (included in the dosfstools package in Debian) make sure /dev/sdb is not mounted.

  1. mount /dev/sdb1 /mnt/tmp

Note: If you use additional mkfs.vfat parameter -n you can give the card a name, e.g. for easier identification (i.e. mkfs.vfat -n omap3 -F 32 /dev/sdb1)

The SD/MMC card is now ready to be used to boot OMAP3 boards.

Adjust the Geometry of the Card

Print the current partition table:

Command (m for help): P

Disk /dev/sdb: 7948 MB, 7948206080 bytes
81 heads, 10 sectors/track, 19165 cylinders
Units = cylinders of 810 * 512 = 414720 bytes
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              11       19166     7757824    b  W95 FAT32

Remember the top right number: 7948206080 bytes. It of course depends on the size of the SD card. You will need it later to calculate the new number of cylinders.

Delete this partition:

Command (m for help): D

Selected partition 1

Go into Expert mode:

Command (m for help): X

Selected partition 1

Set the number of heads to 255

Expert command (m for help): H

Number of heads (1-256, default 81): 255Enter

Set the number of sectors to 63

Expert command (m for help): S

Number of sectors (1-63, default 10): 63

This warning is normal and fine:

Warning: setting sector offset for DOS compatiblity

Now the number of cylinders has to be adjusted to match the size of your SDHC card:

cylinders = floor(bytes of the SDHC card (see the note above) / heads / sectors / sector size (512))

So for our 8GB microSDHC card, this is then (use Google to calculate):

7948206080 / 255 / 63 / 512 = 966.314348

So we cut off the decimal digits (not rounding) and use 966 for this example.

Expert command (m for help): CEnter

The number 966 is of course only valid for our 8GB SDHC card. Use your calculated number here!

Number of cylinders (1-1048576, default 19165): 966

Return to normal mode:

Expert command (m for help): R

Check the result:

Command (m for help): P

Disk /dev/sdb: 7948 MB, 7948206080 bytes
255 heads, 63 sectors/track, 966 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System

Create the boot partition

Create a new partition (the boot partition):

Command (m for help): N

Command action
   e   extended
   p   primary partition (1-4)

Create the first primary partition:

Command (m for help): P

Command action
  e   extended
  p   primary partition (1-4)

Partition number (1-4): 1 First cylinder (1-966, default 1):1

Using default value 1

Select cylinder 50 as last cylinder

Last cylinder, +cylinders or +size{K,M,G} (1-966, default 966): +50C

Create the Linux partition

Create a new partition (the linux partition):

Command (m for help): N

Command action
  e   extended
  p   primary partition (1-4)

Create the first primary partition:

Command (m for help): P

Command action
  e   extended
  p   primary partition (1-4)

Partition number (1-4): 2 First cylinder (52-966, default 52): Enter

Using default value 52

Select cylinder 966 as last cylinder (using the default)

Last cylinder, +cylinders or +size{K,M,G} (52-966, default 966): Enter

Final Result

Check the result, it should now look like this (depending on the SD card size):

Command (m for help): P

Disk /dev/sdb: 7948 MB, 7948206080 bytes
255 heads, 63 sectors/track, 966 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          51      409626   83  Linux
/dev/sdb2              52         966     7349737+  83  Linux

Write the partition table

The changes you made are not yet written to the hard disk. Write them now. FDISK will exit after the write operation.

Command (m for help): W

The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Finished! The next step is to format the new partitions.

Format the Card

Watch out to use the right harddisk handle (/dev/sdb or /dev/sdc)! You can't format mounted drives (e.g. your currently running Linux) but you might format the wrong card or a spare harddisk. Format the boot partition (labeled in this case 'BOOT', but any other string is legal). It is recommended to use the proposed drive label names as this will make the further use of our tutorials more convenient.

sudo mkfs.msdos -F 32 /dev/sdb1 -n BOOT

Format the Linux partition (labeled 'LINUX')

sudo mkfs.ext3 -L LINUX /dev/sdb2

Copy files onto SDHC card

The last step is to copy the Linux system onto a bootable SD/SDHC card.

Unplug and re-plug your card reader in order to auto-mount the two new partitions.

If your card is correctly formatted, then you can now copy the Linux system on it.

Copy files onto the BOOT partition

You will need to download the following files:

IMPORTANT: Copy MLO FIRST!.

And now copy the two files onto the boot partition (MLO first because of a bug in the X-loader which causes problems if MLO is not the first file written onto the boot partition).

cp MLO /media/boot/MLO
cp u-boot.bin /media/boot/u-boot.bin

The Linux kernel (uImage) resides also on the BOOT partition of the SD-card. If you compile a new version of the kernel you have to copy the new uImage on the BOOT partition. See the instructions below. Copy Linux

The next step is to copy the Linux kernel and the Linux root filesystem on the bootand rootfs partitions. You can use precompiled binaries for both or compile an OpenEmbedded image yourself.

Instructions for both options are provided below. Copy the precompiled Ångström Image

The precompiled Ångström image consists (besided MLO and u-boot.bin from the bootloader section) of two files: The Linux kernel image (uImage) and the root file system. Copy uImage


cp uImage /media/BOOT/uImage

Copy the Linux root file system

The file is named *rootfs.tar.bz2 for the Beagle link

http://www.angstrom-distribution.org/demo/beagleboard/

Download the files to a temporary directory, e.g. the Desktop or your user folder. The next step is to extract these files into the LINUX partition (NOT the boot partition). This can only be done by using Linux.


sudo tar xjf *rootfs.tar.bz2 -C /media/LINUX

Copy custom OpenEmbedded Linux Image

Linux Kernel Image and u-boot bootloader

Copy the kernel image and u-boot.

sudo cp $OE_HOME/tmp/deploy/glibc/images/beagleboard/uImage-beagleboard.bin /media/BOOT/uImage cp $OE_HOME/tmp/deploy/glibc/images/beagleboard/u-boot-beagleboard.bin /media/BOOT/u-boot.bin

Linux root filesystem

After the kernel, the root filesystem has to be copied as well. If you are overwriting an existing installation and you don't need a 100% clean system, you can just delete all files. The command below will delete all files in /media/LINUX except the lost+found directory of the EXT3 file system.

sudo rm -rf /media/LINUX/* && sudo mkdir /media/LINUX/lost+found


The console image:

sudo tar xjf $OE_HOME/tmp/deploy/glibc/images/beagleboard/omap3-console-image-beagleboard.tar.bz2 -C /media/LINUX


Unmount the SD/SDHC card

Now unmount the drive either manually (by clicking the unmount icon on the desktop) or by shell command:

sync sudo umount /media/BOOT sudo umount /media/LINUX sudo rm -r /media/BOOT sudo rm -r /media/LINUX

Copy bytewise from one SDHC card to another

If you have modified your installation and want to clone the content of the SD card, you can do this with dd.

Make sure to plug in the source card first, then the destination card. Check the file names with:

dmesg | tail

And unmount the card (with the GUI or with umount /dev/sdb). Then use dd to copy the first gigabyte from one card to the other (including partition table, etc.):

sudo dd if=/dev/sdb of=/dev/sdc bs=1073741824

Automated script

The following script will create a formatted SD card using your Linux PC.

Attached are the files needed to generate a new sd card for testing the Zippy2:

Make a directory for the files and copy them to it. You will also need to make two mount points:

mkdir /mnt/sdcard1 mkdir /mnt/sdcard2

Then issue the command like this:

./mksdcard.sh /dev/sdb

Where /dev/sdb is the drive for the sd card.

This should generate a fresh bootable sdcard for you!

Design Documents

Zippy2-base.jpg


Software

  • place these files on your formated SD card per the instuctions at the LinuxBootDiskFormat page
  • boot your BeagleBoard while holding down the "User" button.