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.
Debian based (deb) |
extra |
pkgs: (sudo apt-get update ; sudo apt-get install xyz) |
---|---|---|
Ubuntu 12.04 |
| ia32-libs |
Debian 7 (Wheezy) | sudo dpkg --add-architecture i386 | libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386 |
Ubuntu 12.10 -> 13.10 |
| libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386 |
Red Hat based (rpm) | extra | pkgs: (yum install xyz) |
Red Hat/Centos/Fedora |
| libstdc++.i686 ncurses-devel.i686 zlib.i686 |
Download/Extract:
wget -c https:
//launchpad.net/linaro-toolchain-binaries/trunk/2013.07/+download/gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux.tar.xz
tar xJf gcc-linaro-arm-linux-gnueabihf-
4.8
-
2013.07
-1_linux.tar.xz
export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-
4.8
-
2013.07
-1_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.07
-
1
- Linaro GCC
2013.07
)
4.8
.
2
20130624
(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.
|
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 v2013.
07
-b tmp
|
Patches:
wget -c https:
//raw.github.com/eewiki/u-boot-patches/master/v2013.07/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
patch -p1 <
0001
-am335x_evm-uEnv.txt-bootz-n-fixes.patch
|
Configure and Build:
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_config
make ARCH=arm CROSS_COMPILE=${CC}
|
wget -c https:
//raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh
chmod +x dtc.sh
./dtc.sh
|
This script will build the kernel and modules and copy them to the deploy directory.
Download:
git clone git:
//github.com/RobertCNelson/linux-dev.git
cd linux-dev/
|
For v3.2.x:
git checkout origin/am33x-v3.
2
-b tmp
|
Build:
./build_kernel.sh
|
Download:
git clone git:
//github.com/RobertCNelson/linux-dev.git
cd linux-dev/
|
Checkout v3.8.x branch:
git checkout origin/am33x-v3.
8
-b tmp
|
Build:
./build_kernel.sh
|
User |
Password |
---|---|
debian | temppwd |
root | root |
Download:
wget -c https:
//rcn-ee.net/deb/minfs/wheezy/debian-7.1-minimal-armhf-2013-08-25.tar.xz
|
Verify:
md5sum debian-
7.1
-minimal-armhf-
2013
-
08
-
25
.tar.xz
63e68e96b21cefeae9e4ecbf0568fd26 debian-
7.1
-minimal-armhf-
2013
-
08
-
25
.tar.xz
|
Extract:
tar xJf debian-
7.1
-minimal-armhf-
2013
-
08
-
25
.tar.xz
|
User |
Password |
---|---|
ubuntu | temppwd |
Download:
wget -c https:
//rcn-ee.net/deb/minfs/raring/ubuntu-13.04-minimal-armhf-2013-08-25.tar.xz
|
Verify:
md5sum ubuntu-
13.04
-minimal-armhf-
2013
-
08
-
25
.tar.xz
4bbf7944d43ba5f4fbb5a86232b57d58 ubuntu-
13.04
-minimal-armhf-
2013
-
08
-
25
.tar.xz
|
Extract:
tar xJf ubuntu-
13.04
-minimal-armhf-
2013
-
08
-
25
.tar.xz
|
A Root File System around 64Mb in size, for flash applications.
User |
Password |
---|---|
debian | temppwd |
root | root |
Download:
wget -c https:
//rcn-ee.net/deb/barefs/wheezy/debian-7.1-bare-armhf-2013-08-25.tar.xz
|
Verify:
md5sum debian-
7.1
-bare-armhf-
2013
-
08
-
25
.tar.xz
276f2b77c1de379e5923f1f97b1f7853 debian-
7.1
-bare-armhf-
2013
-
08
-
25
.tar.xz
|
Extract:
tar xJf debian-
7.1
-bare-armhf-
2013
-
08
-
25
.tar.xz
|
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/
|
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/
|
As v3.2.x/v3.8.x are too vastly different kernels (board file vs device tree) you need to uncomment one of the "uenvcmd" variables shown in the uEnv.txt boot script, otherwise it will not boot the kernel image.
Requires: v2013.04
Create "uEnv.txt" boot script: (nano uEnv.txt)
#optargs=
#mmcroot=/dev/mmcblk0p2 ro
#mmcrootfstype=ext4 rootwait fixrtc
#To boot old v3.
2
.x based kernel enable: (BeagleBone only)
#uenvcmd=run loaduimage; run mmc_classic_boot
#To boot
new
v3.
8
.x based device tree:
#uenvcmd=run loaduimage; run loadfdt; run mmcargs; bootz ${loadaddr} - ${fdtaddr}
|
Copy uEnv.txt to the boot partition:
sudo cp -v ./uEnv.txt /media/boot/
|
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
|
sudo tar xfvp .
/*-*-*-arm*-*/
arm*-rootfs-*.tar -C /media/rootfs/
|
Kernel Image:
sudo cp -v ./linux-dev/deploy/${kernel_version}.zImage /media/boot/zImage
|
Kernel Device Tree Binaries (v3.8.x branch):
sudo mkdir -p /media/boot/dtbs/
sudo tar xfov ./linux-dev/deploy/${kernel_version}-dtbs.tar.gz -C /media/boot/dtbs/
|
Kernel Modules:
sudo tar xfv ./linux-dev/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/
|
Edit: /etc/fstab
sudo nano /media/rootfs/etc/fstab
|
/dev/mmcblk0p2 / auto errors=remount-ro
0
1
/dev/mmcblk0p1 /boot/uboot auto defaults
0
2
|
Edit: /etc/network/interfaces
sudo nano /media/rootfs/etc/network/interfaces
|
Add:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
|
To always enable the Ethernet interface as eth0.
Edit: /etc/udev/rules.d/70-persistent-net.rules
sudo nano /media/rootfs/etc/udev/rules.d/
70
-persistent-net.rules
|
Add:
# BeagleBone: net device ()
SUBSYSTEM==
"net"
, ACTION==
"add"
, DRIVERS==
"?*"
, ATTR{dev_id}==
"0x0"
, ATTR{type}==
"1"
, KERNEL==
"eth*"
, NAME=
"eth0"
|
Debian
Edit: /etc/inittab
sudo nano /media/rootfs/etc/inittab
|
Add this at the end of: /etc/inittab
T0:
23
:respawn:/sbin/getty -L ttyO0
115200
vt102
|
Ubuntu
Create new file: /etc/init/serial.conf
sudo nano /media/rootfs/etc/init/serial.conf
|
With this content:
start on stopped rc RUNLEVEL=[
2345
]
stop on runlevel [!
2345
]
respawn
exec /sbin/getty
115200
ttyO0
|
Remove microSD/SD card:
sync
sudo umount /media/boot
sudo umount /media/rootfs
|
Turn on Backlight:
i2cset -f -y
1
0x24
0x07
0x09
i2cset -f -y
1
0x24
0x08
0x60
|
Add to /etc/modules:
fbcon
ti_tscadc
|