BeagleBoard Zippy

From eLinux.org
Revision as of 11:04, 23 June 2011 by Rkherod (talk | contribs) (Where to purchase the Zippy board)
Jump to: navigation, search

Zippy-base.jpg


The Zippy board was developed by TinCanTools (Company Website). You can purchase the Zippy board from:

USA: www.tincantools.com
Canada: www.robotcraft.ca
Germany: www.watterott.com

Hardware

The BeagleBuddy Zippy Ethernet Combo Board is a low cost expansion board for the BeagleBoard that provides the following peripherals:

  • 10BaseT 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

Ethernet

The Zippy provides a standard 10BaseT (10/100 Mbit) Ethernet interface and uses Microchip's ENC28J60 SPI to Ethernet controller.

SD/MMC Interface

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

RS232 Serial Interface

The Zippy provides a second RS-232 serial port for the BeagleBoard: There are two serial connectors provided.

  • Standard DB9 Male connector
  • 2x5 shrouded header (0.1 inch pin spacing).

Real-time Clock

The Zippy 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 Zippy and must be purchased separately. Compatible batteries are available from Digi-Key:

Panasonic CR1216

Energizer CR1216

Compatible batteries are available from Mouser Electronics:

CR1220

CR1220


Installing the 3V lithium coin battery:

Zippy-battery01.jpg

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


Zippy-battery02.jpg

Slide the battery all the way into the battery holder.

I²C Interface

The Zippy 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 Zippy provides an 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 Zippy. More information can be found on the Beagle Board Pin Mux Page.

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).

Zippy-expansion connector1.jpg

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


Zippy-expansion connector2.jpg

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


Zippy-expansion connector3.jpg

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

Attaching to the BeagleBoard

Zippy-expansion connector7.jpg

Attach the four board spacers with the screws provided.


Zippy-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.


Zippy-expansion connector5.jpg

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


Zippy-expansion connector6.jpg

Attach the male standoffs as shown.


Zippy-expansion connector8.jpg

Creating a bootable SD card in Ubuntu

This guide will demonstate how to create a dual-partition SD card for the BeagleBoard/Zippy combination 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 SDCard setup and LinuxBootDiskFormat.

This guide will use a 2GB SD card for all examples.

Determine which device the SD Card Reader is on your system

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

dmesg | tail
...
[2079456.496092] sd 34:0:0:0: [sdb] Mode Sense: 03 00 00 00
[2079456.496096] sd 34:0:0:0: [sdb] Assuming drive cache: write through
[2079456.513743] sd 34:0:0:0: [sdb] Assuming drive cache: write through
[2079456.513751]  sdb: sdb1
[2079456.529193] sd 34:0:0:0: [sdb] Assuming drive cache: write through
[2079456.529201] sd 34:0:0:0: [sdb] Attached SCSI removable disk

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
Filesystem            Size  Used Avail Use% Mounted on
...                   1.8G     0  1.8G   0% /lib/init/rw
/dev/sdb1             1.9G     0  1.9G   0% /media/6262-9331
...

If mounted, unmount the SD card

umount /media/6262-9331

Start fdisk:

sudo fdisk /dev/sdb

Print the partition record:

  Command (m for help): p

  Disk /dev/sdb: 1967 MB, 1967128576 bytes
  57 heads, 56 sectors/track, 1203 cylinders
  Units = cylinders of 3192 * 512 = 1634304 bytes
  Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
  /dev/sdb1            1        1204     1920955+   6  FAT16

Note card size in bytes listed above (in this example: 1967128576). Write this number down, it will be needed later below.

Delete any partitions that are already on the SD card

 Command (m for help): d
 Selected partition 1

Set the Geometry of the SD Card

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 card you are using:

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

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

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

The 239 entered in the cylinders above must be calculated based upon the size of your particular SD card.

Now Calculate the number of Cylinders for your SD card:

number of cylinders = FLOOR (the number of Bytes on the SD Card (from above) / 255 heads / 63 sectors / 512 sector size in bytes )

So for this example: 1967128576 / 255 / 63 / 512 = 239.156427 (use Google to calculate). So we use 239 (i.e. truncate, don't round).

Return to "Normal" mode:

Expert command (m for help): r


Print the partition record to check your work:

 
 Command (m for help): p

 Disk /dev/sdb: 1967 MB, 1967128576 bytes
 255 heads, 63 sectors/track, 239 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Create the FAT32 partition for booting and transferring files from your PC

 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-239, default 239): 50

 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))

We use 50 cylinders of the total of 239 for the FAT32 partition above. The remainder of the cylinders will be used for the Linux root file system below.

Mark this FAT32 partition as bootable:

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

Create the Linux partition for the root file system

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

Print the partition record to check your work

 
 Command (m for help): p

 Disk /dev/sdb: 1967 MB, 1967128576 bytes
 255 heads, 63 sectors/track, 239 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes


   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1         50     1920955+   c  w95 FAT32 (LBA)
 /dev/sdb2              51         239               83 Linux

Save the new partition records on the SD card

This is an important step. All work up to now has been temporary.

  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.

Format the partitions

  sudo mkfs.msdos -F 32 /dev/sdb1 -n boot
  mkfs.msdos 3.0.3 (18 May 2009)

  sudo mkfs.ext3 -L rootfs /dev/sdb2
  mke2fs 1.41.9 (22-Aug-2009)
  Filesystem label=rootfs
  OS type: Linuxsudo mkfs.ext3 -L rootfs /dev/sdb2
  mke2fs 1.41.9 (22-Aug-2009)
  Filesystem label=rootfs
  OS type: Linux
  Block size=4096 (log=2)
  Fragment size=4096 (log=2)
  95040 inodes, 379535 blocks
  18976 blocks (5.00%) reserved for the super user
  First data block=0
  Maximum filesystem blocks=390070272
  12 block groups
  32768 blocks per group, 32768 fragments per group
  7920 inodes per group
  Superblock backups stored on blocks:
	  32768, 98304, 163840, 229376, 294912

  Writing inode tables: done
  Creating journal (8192 blocks): done
  Writing superblocks and filesystem accounting information: done

Copy files onto the BOOT partition

You will need to download the demo/test files for the BeagleBoard/Zippy combination:

  1. MLO (save as MLO)
  2. u-boot.bin (save as u-boot.bin)
  3. uImage (save as uImage)
  4. test.rootfs.tar.gz (save as test.rootfs.tar.gz)


And now copy the first three files onto the boot partition (IMPORTANT: Copy 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
 cp uImage /media/boot/uImage

Copy the files onto the Linux partition

The next step is to extract the files in test-rootfs.tar.gz into the rootfs partition (NOT the boot partition) on the SD card. This can only be done by using Linux.

 sudo tar -zxvf test-rootfs.tar.gz -C /media/rootfs

Unmount the SD card from the Linux PC and insert it into the BeagleBoard's SD connector.

Then boot your BeagleBoard while holding down the "User" button.


Programming the Zippy

All of the devices on the Zippy work as standard linux devices which means any reference material for these devices is applicable:

How to access the I2C bus (from software): http://i2c.wiki.kernel.org/index.php/Linux_2.6_I2C_development_FAQ

How to access the second UART: http://tldp.org/HOWTO/Serial-HOWTO.html and http://www.vanemery.com/Linux/Serial/serial-console.html

How to use and configure the Ethernet port: http://tldp.org/HOWTO/Ethernet-HOWTO.html

How to access the SD card: If you are using the Angstrom images, then all you have to do is insert the SD card and it will be automatically mounted. To check just issue the command "mount" at the prompt to view the currently mounted devices.

Setting the Real Time Clock (RTC)

To set the real time clock (RTC) on the Zippy board:

First: Set the date:

 date -s 2010.02.15-17:52

(date -s YYYY.MM.DD-HH:SS (the time HH:SS is in 24 hour format)

Then write the current date into the RTC's hardware registers:

 hwclock -w

As long as you have a good backup battery (the small coin battery), the RTC should keep the time correct even if you remove power and boot-up the BeagleBoard at a later time.

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.


All drivers are in the mainline kernel source:

  • ethernet - drivers/net/enc28j60.c
  • rtc - drivers/rtc/rtc-ds1307.c
  • uart - drivers/serial/8250.c
  • mmc - drivers/mmc/omap_hsmmc.c
  • eeprom - drivers/misc/eeprom/at24.c

System boot

Texas Instruments X-Loader 1.4.2 (Sep  9 2009 - 09:20:15)
Reading boot sector
Loading u-boot.bin from mmc


U-Boot 2009.06-rc2 (Sep 09 2009 - 13:12:40)

OMAP3530-GP ES3.0, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
DRAM:  256 MB
NAND:  256 MiB
*** Warning - bad CRC or NAND, using default environment

In:    serial
Out:   serial
Err:   serial
Board revision C
Die ID #197a0003000000000403230911004012
Hit any key to stop autoboot:  0 
mmc1 is available
reading boot.scr

** Unable to read "boot.scr" from mmc 0:1 **
reading uImage

2994264 bytes read
Booting from mmc ...
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Angstrom/2.6.29/beagleboard
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2994200 Bytes =  2.9 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux...................................................................................................................................................................................
[    0.000000] Linux version 2.6.29-omap1 (dave@linuxdev) (gcc version 4.3.3 (GCC) ) #6 PREEMPT Thu Sep 17 10:11:54 CDT 2009
[    0.000000] CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c5387f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: OMAP3 Beagle Board
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] OMAP3430 ES3.0
[    0.000000] SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000
[    0.000000] Reserving 12582912 bytes SDRAM for VRAM
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttyS2,115200n8 vram=12M omapfb.mode=dvi:1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait
[    0.000000] Clocking rate (Crystal/DPLL/ARM core): 26.0/332/500 MHz
[    0.000000] GPMC revision 5.0
[    0.000000] IRQ: Found an INTC at 0xd8200000 (revision 4.0) with 96 interrupts
[    0.000000] Total of 96 interrupts on 1 active controller
[    0.000000] OMAP34xx GPIO hardware version 2.5
[    0.000000] PID hash table entries: 1024 (order: 10, 4096 bytes)
[    0.000000] OMAP clockevent source: GPTIMER12 at 32768 Hz
[    0.000000] Console: colour dummy device 80x30
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Memory: 128MB 128MB = 256MB total
[    0.000000] Memory: 240896KB available (5632K code, 575K data, 204K init)
[    0.000000] Calibrating delay loop... 486.31 BogoMIPS (lpj=1900544)
[    0.000000] Mount-cache hash table entries: 512
[    0.000000] CPU: Testing write buffer coherency: ok
[    0.000000] net_namespace: 1036 bytes
[    0.000000] regulator: core version 0.5
[    0.000000] NET: Registered protocol family 16
[    0.000000] Found NAND on CS0
[    0.000000] Registering NAND on CS0
[   19.307373] OMAP DMA hardware revision 4.0
[   19.353057] bio: create slab <bio-0> at 0
[   19.411468] OMAP DSS rev 2.0
[   19.411590] OMAP DISPC rev 3.0
[   19.411590] OMAP VENC rev 2
[   19.411773] OMAP DSI rev 1.0
[   19.414916] i2c_omap i2c_omap.1: bus 1 rev3.12 at 2600 kHz
[   19.418914] twl4030: PIH (irq 7) chaining IRQs 368..375
[   19.418945] twl4030: power (irq 373) chaining IRQs 376..383
[   19.419586] twl4030: gpio (irq 368) chaining IRQs 384..401
[   19.422668] regulator: VMMC1: 1850 <--> 3150 mV normal standby
[   19.423645] regulator: VDAC: 1800 mV normal standby
[   19.424560] regulator: VUSB1V5: 1500 <--> 0 mV normal standby
[   19.425506] regulator: VUSB1V8: 1800 <--> 0 mV normal standby
[   19.426422] regulator: VUSB3V1: 3100 <--> 0 mV normal standby
[   19.427398] regulator: VPLL2: 1800 mV normal standby
[   19.428375] regulator: VMMC2: 2800 <--> 3150 mV normal standby
[   19.429321] regulator: VSIM: 1800 <--> 3000 mV normal standby
[   19.441925] i2c_omap i2c_omap.2: bus 2 rev3.12 at 10 kHz
[   19.457122] i2c_omap i2c_omap.3: bus 3 rev3.12 at 100 kHz
[   19.459289] SCSI subsystem initialized
[   19.462982] twl4030_usb twl4030_usb: Initialized TWL4030 USB module
[   19.464752] usbcore: registered new interface driver usbfs
[   19.465393] usbcore: registered new interface driver hub
[   19.465850] usbcore: registered new device driver usb
[   19.469146] Bluetooth: Core ver 2.14
[   19.469696] NET: Registered protocol family 31
[   19.469726] Bluetooth: HCI device and connection manager initialized
[   19.469757] Bluetooth: HCI socket layer initialized
[   19.470520] cfg80211: Using static regulatory domain info
[   19.470520] cfg80211: Regulatory domain: US
[   19.470550]  (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   19.470581]  (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
[   19.470581]  (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[   19.470611]  (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[   19.470642]  (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[   19.470642]  (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[   19.470672]  (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
[   19.470703] cfg80211: Calling CRDA for country: US
[   19.474670] musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
[   19.477416] musb_hdrc: USB OTG mode controller at d80ab000 using DMA, IRQ 92
[   19.478698] NET: Registered protocol family 2
[   19.478973] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[   19.479614] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[   19.479888] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[   19.480041] TCP: Hash tables configured (established 8192 bind 8192)
[   19.480072] TCP reno registered
[   19.480468] NET: Registered protocol family 1
[   19.484863] VFS: Disk quotas dquot_6.5.2
[   19.484985] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[   19.485626] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[   19.486450] JFFS2 version 2.2. (NAND) (SUMMARY)  �© 2001-2006 Red Hat, Inc.
[   19.487457] msgmni has been set to 470
[   19.492523] alg: No test for stdrng (krng)
[   19.492645] io scheduler noop registered
[   19.492645] io scheduler anticipatory registered
[   19.492675] io scheduler deadline registered
[   19.492889] io scheduler cfq registered (default)
[   19.519348] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[   19.541748] serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654
[   19.563201] serial8250.0: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654
[   19.583740] serial8250.0: ttyS2 at MMIO 0x49020000 (irq = 74) is a ST16654
[   19.583801] console [ttyS2] enabled
[   20.108825] brd: module loaded
[   20.118408] loop: module loaded
[   20.122741] enc28j60 spi4.0: enc28j60 Ethernet driver 1.01 loaded
[   20.133117] net eth0: enc28j60 driver registered
[   20.139099] usbcore: registered new interface driver catc
[   20.144683] catc: v2.8:CATC EL1210A NetMate USB Ethernet driver
[   20.150939] usbcore: registered new interface driver kaweth
[   20.156616] pegasus: v0.6.14 (2006/09/27), Pegasus/Pegasus II USB Ethernet driver
[   20.164489] usbcore: registered new interface driver pegasus
[   20.170257] rtl8150: v0.6.2 (2004/08/27):rtl8150 based usb-ethernet driver
[   20.177520] usbcore: registered new interface driver rtl8150
[   20.183563] usbcore: registered new interface driver asix
[   20.189300] usbcore: registered new interface driver cdc_ether
[   20.195495] usbcore: registered new interface driver dm9601
[   20.201507] usbcore: registered new interface driver smsc95xx
[   20.207641] usbcore: registered new interface driver gl620a
[   20.213531] usbcore: registered new interface driver net1080
[   20.219573] usbcore: registered new interface driver plusb
[   20.225463] usbcore: registered new interface driver rndis_host
[   20.231781] usbcore: registered new interface driver cdc_subset
[   20.238128] usbcore: registered new interface driver zaurus
[   20.244018] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
[   20.251861] Broadcom 43xx driver loaded [ Features: L, Firmware-ID: FW13 ]
[   20.259307] usbcore: registered new interface driver zd1211rw
[   20.265441] usbcore: registered new interface driver rtl8187
[   20.271545] usbcore: registered new interface driver rndis_wlan
[   20.277832] usbcore: registered new interface driver zd1201
[   20.283813] usbcore: registered new interface driver usb8xxx
[   20.289916] usbcore: registered new interface driver rt2500usb
[   20.296173] usbcore: registered new interface driver rt73usb
[   20.302246] usbcore: registered new interface driver p54usb
[   20.307861] i2c /dev entries driver
[   20.313446] Driver 'sd' needs updating - please use bus_type methods
[   20.320220] Driver 'sr' needs updating - please use bus_type methods
[   20.327789] omap2-nand driver initializing
[   20.332305] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit)
[   20.341369] cmdlinepart partition parsing not available
[   20.346649] Creating 5 MTD partitions on "omap2-nand":
[   20.351867] 0x000000000000-0x000000080000 : "X-Loader"
[   20.359283] 0x000000080000-0x000000260000 : "U-Boot"
[   20.366485] 0x000000260000-0x000000280000 : "U-Boot Env"
[   20.373352] 0x000000280000-0x000000680000 : "Kernel"
[   20.381347] 0x000000680000-0x000010000000 : "File System"
[   20.494232] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[   20.501220] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
[   20.507995] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
[   20.515869] ehci-omap ehci-omap.0: irq 77, io mem 0x48064800
[   20.534942] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
[   20.541564] usb usb1: configuration #1 chosen from 1 choice
[   20.547698] hub 1-0:1.0: USB hub found
[   20.551635] hub 1-0:1.0: 3 ports detected
[   20.557983] Initializing USB Mass Storage driver...
[   20.563385] usbcore: registered new interface driver usb-storage
[   20.569519] USB Mass Storage support registered.
[   20.574920] mice: PS/2 mouse device common for all mice
[   20.580841] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[   20.590545] input: twl4030_pwrbutton as /devices/platform/i2c_omap.1/i2c-adapter/i2c-1/1-0049/twl4030_pwrbutton/input/input1
[   20.605438] rtc-ds1307 2-0068: rtc core: registered ds1307 as rtc0
[   20.611663] rtc-ds1307 2-0068: 56 bytes nvram
[   20.617980] OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
[   20.624481] Bluetooth: HCI UART driver ver 2.2
[   20.628997] Bluetooth: HCI H4 protocol initialized
[   20.633819] Bluetooth: HCI BCSP protocol initialized
[   20.638885] Bluetooth: HCILL protocol initialized
[   20.643646] Bluetooth: Broadcom Blutonium firmware driver ver 1.2
[   20.650146] usbcore: registered new interface driver bcm203x
[   20.655944] Bluetooth: Digianswer Bluetooth USB driver ver 0.10
[   20.662445] usbcore: registered new interface driver bpa10x
[   20.668121] Bluetooth: BlueFRITZ! USB driver ver 1.2
[   20.673431] usbcore: registered new interface driver bfusb
[   20.679046] Bluetooth: Generic Bluetooth USB driver ver 0.4
[   20.685028] usbcore: registered new interface driver btusb
[   20.690582] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[   20.697509] mmci-omap-hs mmci-omap-hs.0: Failed to get debounce clock
[   20.808563] mmci-omap-hs mmci-omap-hs.1: Failed to get debounce clock
[   20.815155] regulator: Unable to get requested regulator: vmmc_aux
[   20.823669] Registered led device: beagleboard::usr0
[   20.829101] Registered led device: beagleboard::usr1
[   20.841583] usbcore: registered new interface driver usbhid
[   20.847229] usbhid: v2.6:USB HID core driver
[   20.852844] Advanced Linux Sound Architecture Driver Version 1.0.18a.
[   20.860321] usbcore: registered new interface driver snd-usb-audio
[   20.867004] No device for DAI twl4030
[   20.870910] No device for DAI omap-mcbsp-dai-0
[   20.875366] No device for DAI omap-mcbsp-dai-1
[   20.880004] No device for DAI omap-mcbsp-dai-2
[   20.884490] No device for DAI omap-mcbsp-dai-3
[   20.888977] No device for DAI omap-mcbsp-dai-4
[   20.893463] OMAP3 Beagle SoC init
[   20.897308] TWL4030 Audio Codec init 
[   20.902618] asoc: twl4030 <-> omap-mcbsp-dai-0 mapping ok
[   20.918914] ALSA device list:
[   20.921905]   #0: omap3beagle (twl4030)
[   20.934082] oprofile: using arm/armv7
[   20.938049] TCP cubic registered
[   20.941467] NET: Registered protocol family 17
[   20.945983] NET: Registered protocol family 15
[   20.950592] Bluetooth: L2CAP ver 2.11
[   20.954284] Bluetooth: L2CAP socket layer initialized
[   20.959411] Bluetooth: SCO (Voice Link) ver 0.6
[   20.963958] Bluetooth: SCO socket layer initialized
[   20.969116] Bluetooth: RFCOMM socket layer initialized
[   20.974365] Bluetooth: RFCOMM TTY layer initialized
[   20.979278] Bluetooth: RFCOMM ver 1.10
[   20.983123] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   20.988494] Bluetooth: BNEP filters: protocol multicast
[   20.993774] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[   21.002319] RPC: Registered udp transport module.
[   21.007110] RPC: Registered tcp transport module.
[   21.011993] lib80211: common routines for IEEE802.11 drivers
[   21.017761] ThumbEE CPU extension supported.
[   21.022094] Power Management for TI OMAP3.
[   21.035552] Disabling unused clock "sr2_fck"
[   21.039855] Disabling unused clock "sr1_fck"
[   21.044219] Disabling unused clock "mcbsp_fck"
[   21.048675] Disabling unused clock "mcbsp_fck"
[   21.053192] Disabling unused clock "mcbsp_fck"
[   21.057678] Disabling unused clock "mcbsp_ick"
[   21.062194] Disabling unused clock "mcbsp_ick"
[   21.066680] Disabling unused clock "mcbsp_ick"
[   21.071166] Disabling unused clock "gpt2_ick"
[   21.075592] Disabling unused clock "gpt3_ick"
[   21.079956] Disabling unused clock "gpt4_ick"
[   21.084381] Disabling unused clock "gpt5_ick"
[   21.088775] Disabling unused clock "gpt6_ick"
[   21.093200] Disabling unused clock "gpt7_ick"
[   21.097625] Disabling unused clock "gpt8_ick"
[   21.101989] Disabling unused clock "gpt9_ick"
[   21.106414] Disabling unused clock "wdt3_ick"
[   21.110809] Disabling unused clock "wdt3_fck"
[   21.115234] Disabling unused clock "gpio2_dbck"
[   21.119781] Disabling unused clock "gpio3_dbck"
[   21.124389] Disabling unused clock "gpio4_dbck"
[   21.128967] Disabling unused clock "gpio5_dbck"
[   21.133544] Disabling unused clock "gpio6_dbck"
[   21.138122] Disabling unused clock "gpt9_fck"
[   21.142517] Disabling unused clock "gpt8_fck"
[   21.146942] Disabling unused clock "gpt7_fck"
[   21.151336] Disabling unused clock "gpt6_fck"
[   21.155761] Disabling unused clock "gpt5_fck"
[   21.160156] Disabling unused clock "gpt4_fck"
[   21.164550] Disabling unused clock "gpt3_fck"
[   21.168975] Disabling unused clock "gpt2_fck"
[   21.173339] Disabling unused clock "gpt1_ick"
[   21.177764] Disabling unused clock "wdt1_ick"
[   21.182159] Disabling unused clock "wdt2_ick"
[   21.186584] Disabling unused clock "wdt2_fck"
[   21.190948] Disabling unused clock "gpio1_dbck"
[   21.195556] Disabling unused clock "gpt1_fck"
[   21.199981] Disabling unused clock "cam_ick"
[   21.204315] Disabling unused clock "cam_mclk"
[   21.208740] Disabling unused clock "des1_ick"
[   21.213134] Disabling unused clock "sha11_ick"
[   21.217620] Disabling unused clock "rng_ick"
[   21.221923] Disabling unused clock "aes1_ick"
[   21.226348] Disabling unused clock "ssi_ick"
[   21.230682] Disabling unused clock "mailboxes_ick"
[   21.235504] Disabling unused clock "mcbsp_ick"
[   21.239990] Disabling unused clock "mcbsp_ick"
[   21.244476] Disabling unused clock "gpt10_ick"
[   21.248992] Disabling unused clock "gpt11_ick"
[   21.253448] Disabling unused clock "hdq_ick"
[   21.257781] Disabling unused clock "mspro_ick"
[   21.262298] Disabling unused clock "des2_ick"
[   21.266693] Disabling unused clock "sha12_ick"
[   21.271179] Disabling unused clock "aes2_ick"
[   21.275573] Disabling unused clock "icr_ick"
[   21.279907] Disabling unused clock "pka_ick"
[   21.284210] Disabling unused clock "ssi_ssr_fck"
[   21.288879] Disabling unused clock "hdq_fck"
[   21.293212] Disabling unused clock "mcbsp_fck"
[   21.297698] Disabling unused clock "mcbsp_fck"
[   21.302185] Disabling unused clock "mspro_fck"
[   21.306671] Disabling unused clock "gpt11_fck"
[   21.311187] Disabling unused clock "gpt10_fck"
[   21.315643] Disabling unused clock "dpll4_m6x2_ck"
[   21.320526] Disabling unused clock "dpll3_m3x2_ck"
[   21.325378] Disabling unused clock "sys_clkout1"
[   21.330047] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1
[   21.342468] registered taskstats version 1
[   21.348236] fbcvt: 1024x768@60: CVT Name - .786M3-R
[   21.379608] Console: switching to colour frame buffer device 128x48
[   21.400665] clock: clksel_round_rate_div: dpll4_m4_ck target_rate 48000000
[   21.407592] clock: new_div = 9, new_rate = 48000000
[   21.417175] rtc-ds1307 2-0068: setting system clock to 2009-09-27 16:42:23 UTC (1254069743)
[   21.426086] Waiting for root device /dev/mmcblk0p2...
[   21.448944] mmc0: new high speed SD card at address ddce
[   21.455108] mmcblk0: mmc0:ddce SD02G 1.83 GiB 
[   21.460021]  mmcblk0: p1 p2
[   21.539916] EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
[   21.548187] kjournald starting.  Commit interval 5 seconds
[   21.556823] EXT3 FS on mmcblk0p2, internal journal
[   21.561737] EXT3-fs: mounted filesystem with ordered data mode.
[   21.567779] VFS: Mounted root (ext3 filesystem) on device 179:2.
[   21.574066] Freeing init memory: 204K
INIT: version 2.86 booting
Please wait: booting...

I2C analysis

Using I2C tools you can analyze the I2C bus:

root@beagleboard:/bin# i2cdetect -l
i2c-1   i2c             OMAP I2C adapter                        I2C adapter
i2c-2   i2c             OMAP I2C adapter                        I2C adapter
i2c-3   i2c             OMAP I2C adapter                        I2C adapter

Zippy Board uses i2c-2 for the RTC and EEPROM:

root@beagleboard:/bin# i2cdetect -y -r 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
  • EEPROM is at 0x50
  • RTC is at 0x68

EEPROM

AT24 EEPROM (AT24C01B) is used to identify Zippy board. See expansion board how this is done.

Using Linux i2cdump tool at bus 2 address 0x50 the content of this EEPROM is given:

root@beagleboard:~# i2cdump 2 0x50 b
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 01 00 01 01 00 00 00 ff ff ff ff ff ff ff ff    .?.??...........
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
80: 00 01 00 01 01 00 00 00 ff ff ff ff ff ff ff ff    .?.??...........
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................


Schematic Diagram

Where to purchase the Zippy board

The Zippy board can be purchased from:

USA: www.tincantools.com

Canada: www.robotcraft.ca

Germany: www.watterott.com