public
Last active

Getting Yocto working on the Beaglebone

  • Download Gist
gistfile1.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
# Setup for Fedora 17
sudo yum install python m4 make wget curl ftp hg tar bzip2 gzip unzip python-psyco perl texinfo texi2html diffstat openjade docbook-style-dsssl sed docbook-style-xsl docbook-dtds docbook-utils sed bc glibc-devel ccache pcre pcre-devel quilt groff linuxdoc-tools patch linuxdoc-tools cmake help2man perl-ExtUtils-MakeMaker tcl-devel gettext chrpath ncurses apr SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils autoconf automake
sudo yum install tftp-server
sudo yum install nfs-utils
sudo yum install minicom
sudo systemctl enable nfs-server.service
sudo systemctl disable firewalld.service # This may/maynot be on your system but causes grief if it is!
 
 
# -------------------------------------------------------------------------------
# Yocto checkout
git clone git://git.yoctoproject.org/poky poky-git
cd poky-git
git clone https://github.com/openembedded/meta-oe.git layers
git clone git://git.yoctoproject.org/meta-ti meta-ti
 
# Set it up for the beaglebone
source oe-init-build-env beaglebone
 
# Add MACHINE ?= "beaglebone" to your conf/local.conf
# Add the meta-oe and meta-ti layers to your conf/bblayers.conf, mine ended up
as follows:
 
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "4"
 
BBFILES ?= ""
BBLAYERS ?= " \
/media/scratch/poky-git/meta \
/media/scratch/poky-git/meta-yocto \
/media/scratch/poky-git/layers/meta-oe \
/media/scratch/poky-git/meta-ti \
"
 
# Add the following line to your local.conf
BBMASK ?= ".*/meta-ti/recipes-(misc|bsp/formfactor)/"
 
# I had to manually mess with the qemu configuration to get the toolchain/sdk to build
# This patch explains what I had to better than I can
http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=robert/qemu&id=23138099c77cd3dc6af309c81ef52da03a9ad004
# !!! If you get libcurl errors, it's likely this - clean and restart your build with
bitbake -c cleansstate qemu-nativesdk
 
# !!! If you get udev errors as well *urrgh* then you can set a specific version
usage by adding PREFERRED_VERSION_udev = "164" to your local.conf.
 
# Build stuff
bitbake -k core-image-minimal meta-toolchain
 
# Grab what you need from the tmp/deploy/images
* core-image-minimal-beaglebone.tar.bz2
* uImage-beaglebone.bin
* modules-beaglebone.tgz # Only if you need these, I didn't.
# And the SDK from tmp/deploy/sdk
* poky-eglibc-i686-arm-toolchain-1.2+snapshot-2012XXXX.tar.bz2
 
# Tar up the kernel from the work directory
tar cfz kernel_3.2.14.tar.gz tmp/work/beaglebone-poky-linux-gnueabi/linux-ti33x-psp-3.2-r0/git
 
# Move the stuff over to your other machine
I'll let you figure that out ;)
 
# -------------------------------------------------------------------------------
# Setup up the toolchain on local machine
cd /
sudo tar xfvj ~/Documents/BeagleBone/git-poky/poky-eglibc-i686-arm-toolchain-1.2+snapshot-20120516.tar.bz2
# Source the environment script to make life easy (set up PATH etc)
source /opt/poky/1.2+snapshot/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi
 
# Setup your NFS exports
sudo vim /etc/exports
/home/nick/Documents/BeagleBone/git-rootfs *(rw,sync,no_subtree_check,no_root_squash)
# Extract the filesystem
cd /home/nick/Documents/BeagleBone/git-rootfs
sudo tar xvfj ../git-poky/core-image-minimal-beaglebone.tar.bz2
 
# Extract the kernel
cd /work_directory_for_kernel/
tar xfz ../kernel_3.2.14.tar.gz
 
# Edit the source to remove the hardcoded path from firmware/am335x-pm-firmware.bin.gen.S
 
# Configuration and build kernel
# Copy the beagleboard defconfig to your .config
cp meta-ti/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/defconfig .config
 
# Make menuconfig and tweak what you want.
make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- menuconfig
 
# Make the uImage
make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- uImage
# Copy it to the TFTP
sudo cp arch/arm/boot/uImage /var/lib/tftpboot/uImage

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.