Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 112 Next »

This is a page about TI's BeagleBoard and BeagleBoard xM.

ARM Cross Compiler: GCC

This is a pre-built (32bit) version of Linaro GCC that runs on generic linux, so 64bit users need to make sure they have installed the 32bit libraries for their distribution.

Download/Extract:

~/
wget -c https://releases.linaro.org/13.12/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.8-2013.12_linux.tar.xz
tar xJf gcc-linaro-arm-linux-gnueabihf-4.8-2013.12_linux.tar.xz
export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.8-2013.12_linux/bin/arm-linux-gnueabihf-

Test:

If this test fails, verify that you have the 32bit libraries installed on your development system.

~/
${CC}gcc --version
arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.8-2013.12 - Linaro GCC 2013.11) 4.8.3 20131202 (prerelease)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Bootloader: U-Boot

Das U-Boot -- the Universal Boot Loader http://www.denx.de/wiki/U-Boot

Download:

~/
git clone git://git.denx.de/u-boot.git
cd u-boot/
git checkout v2014.01 -b tmp

Revert: ARM: omap3: Implement dpll5 (HSUSB clk) workaround for OMAP36xx/AM/DM37xx according to errata sprz318e. (unless your using v3.12.x/v3.13.x kernel branch)

git revert --no-edit a704a6d615179a25f556c99d31cbc4ee366ffb54

Patches:

~/u-boot
wget -c https://raw.github.com/eewiki/u-boot-patches/master/v2014.01/0001-omap3_beagle-uEnv.txt-bootz-n-fixes.patch

patch -p1 < 0001-omap3_beagle-uEnv.txt-bootz-n-fixes.patch

Configure and Build:

~/u-boot
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} omap3_beagle_config
make ARCH=arm CROSS_COMPILE=${CC}

Linux Kernel

This script will build the kernel and modules and copy them to the deploy directory.

Old Board File tree

Download:

~/
git clone git://github.com/RobertCNelson/stable-kernel.git
cd stable-kernel/

For v3.9.x:

~/stable-kernel
git checkout origin/v3.9.x -b tmp
./build_kernel.sh

 

Device Tree

Download:

~/
git clone git://github.com/RobertCNelson/armv7-multiplatform.git
cd armv7-multiplatform

Checkout v3.13.x branch and build:

~/armv7-multiplatform
git checkout origin/v3.13.x -b tmp
./build_kernel.sh

Root File System

Debian 7

This image contains, systemd: https://wiki.debian.org/systemd to enable, add to uEnv.txt:

optargs=quiet init=/lib/systemd/systemd

Download:

~/
wget -c https://rcn-ee.net/deb/minfs/wheezy/debian-7.3-minimal-armhf-2013-12-18.tar.xz

Verify:

~/
md5sum debian-7.3-minimal-armhf-2013-12-18.tar.xz
a9b907cd03d46433782f851a20d74ee4  debian-7.3-minimal-armhf-2013-12-18.tar.xz

Extract:

~/
tar xf debian-7.3-minimal-armhf-2013-12-18.tar.xz

Ubuntu 13.10

Download:

~/
wget -c https://rcn-ee.net/deb/minfs/saucy/ubuntu-13.10-minimal-armhf-2013-12-18.tar.xz

Verify:

~/
md5sum ubuntu-13.10-minimal-armhf-2013-12-18.tar.xz
fa80534e0b1091afebbb6ce9ae65a0ff  ubuntu-13.10-minimal-armhf-2013-12-18.tar.xz

Extract:

~/
tar xf ubuntu-13.10-minimal-armhf-2013-12-18.tar.xz

Root File System (small flash)

A Root File System around 64Mb in size, for flash applications.

Debian 7 (small flash)

This image contains, systemd: https://wiki.debian.org/systemd to enable, add to uEnv.txt:

optargs=quiet init=/lib/systemd/systemd

Download:

~/
wget -c https://rcn-ee.net/deb/barefs/wheezy/debian-7.3-bare-armhf-2013-12-18.tar.xz

Verify: 

~/
md5sum debian-7.3-bare-armhf-2013-12-18.tar.xz
1673993d8cbffe9dc95f157306e51657  debian-7.3-bare-armhf-2013-12-18.tar.xz

Extract: 

~/
tar xf debian-7.3-bare-armhf-2013-12-18.tar.xz

Setup microSD/SD card

For these instruction, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.

export DISK=/dev/mmcblk0

Erase microSD/SD card:

sudo dd if=/dev/zero of=${DISK} bs=1M count=16

Create Partition Layout:

sudo sfdisk --in-order --Linux --unit M ${DISK} <<-__EOF__
1,48,0xE,*
,,,-
__EOF__

Format Partitions:

for: DISK=/dev/mmcblk0
sudo mkfs.vfat -F 16 ${DISK}p1 -n boot
sudo mkfs.ext4 ${DISK}p2 -L rootfs

for: DISK=/dev/sdX
sudo mkfs.vfat -F 16 ${DISK}1 -n boot
sudo mkfs.ext4 ${DISK}2 -L rootfs

Mount Partitions:

On some systems, these partitions may be auto-mounted...

sudo mkdir -p /media/boot/
sudo mkdir -p /media/rootfs/

for: DISK=/dev/mmcblk0
sudo mount ${DISK}p1 /media/boot/
sudo mount ${DISK}p2 /media/rootfs/
 
for: DISK=/dev/sdX
sudo mount ${DISK}1 /media/boot/
sudo mount ${DISK}2 /media/rootfs/

Install Bootloader

Copy MLO/u-boot.img to the boot partition

~/
sudo cp -v ./u-boot/MLO /media/boot/
sudo cp -v ./u-boot/u-boot.img /media/boot/

uEnv.txt based bootscript

Create "uEnv.txt" boot script: (nano uEnv.txt)

~/uEnv.txt
#mmcroot=/dev/mmcblk0p2 ro
#mmcrootfstype=ext4 rootwait fixrtc
 
#Boot the old non device tree kernel: (v3.9.x)
#uenvcmd=run loadimage; run mmcargs; bootz ${loadaddr}

Copy uEnv.txt to the boot partition:

~/
sudo cp -v ./uEnv.txt /media/boot/

Install Kernel and Root File System

To help new users, since the kernel version can change on a daily basis. The kernel building scripts listed on this page will now give you a hint of what kernel version was built.

-----------------------------
Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=3.X.Y-Z]
-----------------------------

Copy and paste that "export kernel_version=3.X.Y-Z" exactly as shown in your own build/desktop environment and hit enter to create an environment variable to be used later.

export kernel_version=3.X.Y-Z

Copy Root File System

~/
sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/

Copy Kernel Files

Kernel Image:

~/
sudo cp -v ./stable-kernel/deploy/${kernel_version}.zImage /media/boot/zImage
(or if using the device tree v3.12.x branch)
sudo cp -v ./armv7-multiplatform/deploy/${kernel_version}.zImage /media/boot/zImage

Kernel Device Tree Binaries (v3.12.x branch):

~/
sudo mkdir -p /media/boot/dtbs/
sudo tar xfov ./armv7-multiplatform/deploy/${kernel_version}-dtbs.tar.gz -C /media/boot/dtbs/

Kernel Modules:

~/
sudo tar xfv ./stable-kernel/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/
(or if using the device tree v3.12.x branch)
sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

File Systems Table (/etc/fstab)

Edit: /etc/fstab

sudo nano /media/rootfs/etc/fstab
/etc/fstab
/dev/mmcblk0p2   /           auto   errors=remount-ro   0   1
/dev/mmcblk0p1   /boot/uboot auto   defaults            0   2

Networking

Edit: /etc/network/interfaces

sudo nano /media/rootfs/etc/network/interfaces

Add:

/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

 

Serial Login

Debian

Edit: /etc/inittab

sudo nano /media/rootfs/etc/inittab

Add this at the end of: /etc/inittab

/etc/inittab
T2:23:respawn:/sbin/getty -L ttyO2 115200 vt102

Ubuntu

Create new file: /etc/init/serial.conf

sudo nano /media/rootfs/etc/init/serial.conf

With this content:

/etc/init/serial.conf
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty 115200 ttyO2

 Remove microSD/SD card:

sync
sudo umount /media/boot
sudo umount /media/rootfs

 

 

Unknown macro: {wiki}

FAQ

No Ethernet:

  1. Check Power (aka use 5Volt DC Plug): The USB bus allows up to 100mA on initial connection and up to a max of 500mA can be requested by the end USB device. On the xM this is not enough to power the whole device and on the xM C there is an actual hardware switch to disable the smsc95xx usb hub/ethernet when powered by OTG (to prevent out of power crashes seen on the xM A/B with when users powered by OTG).
  2. Check Ethernet Cable/Plug: Is the Ethernet Cable actually plugged into the Beagle and Router?
  3. Check Modules: The smsc95xx kernel driver is usually built as an external module, double check that your kernel modules for this device are installed.
    debian@devel:~$ find /lib/modules/`uname -r`/kernel/ | grep smsc95xx
    /lib/modules/3.2.26-x14/kernel/drivers/net/usb/smsc95xx.ko
    
    debian@devel:~$ lsmod | grep smsc95xx
    smsc95xx               11302  0
    
  4. Reload smsc95xx kernel module (Checked all the above and the LAN LED's are still off)
    sudo rmmod smsc95xx
    sudo modprobe smsc95xx
    sudo /etc/init.d/networking restart
    

 

 

  • No labels