Embedded Linux system for BeagleBoard-xM with Yocto Project


I’ve mostly abandoned a BeagleBoard-xM that I have, and am using Raspberry Pi for most of my embedded Linux hacks. I have built a Linux system for BeagleBoard-xM using Yocto Project though, so thought I’d put the instructions out there.

I’m performing the following build on an Ubuntu 14.04 Parallels Desktop 9 VM. The steps below were mostly discovered from the Yocto Project Quick Start. Look there if you need further help.

The following dependencies are required on the build machine before you proceed

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm

Next, clone the the dora branch from the git repo of Yocto Project, and prepare the build environment

git clone -b dora http://git.yoctoproject.org/git/poky
source poky/oe-init-build-env build

You’ll be in the the build folder when that is done.

Add the following to conf/local.conf

MACHINE ?= "beagleboard"

Go ahead and perform the build

bitbake core-image-minimal

After the build is done, grab and deploy the images from tmp/deploy/images/beagleboard.

3 thoughts on “Embedded Linux system for BeagleBoard-xM with Yocto Project

  1. Hello, i’m new to Yocto and I’ve got the following error for my first try:

    ERROR: Error executing a python function in /home/khang/Workspace/BBxM/devendra/poky/meta/recipes-connectivity/openssl/openssl_1.0.1e.bb:

    The stack trace of python calls that resulted in this exception/failure was:
    File: ‘base_do_fetch’, lineno: 18, function:
    0014: except bb.fetch2.BBFetchException as e:
    0015: raise bb.build.FuncFailed(e)
    0016:
    0017:
    *** 0018:base_do_fetch(d)
    0019:
    File: ‘base_do_fetch’, lineno: 13, function: base_do_fetch
    0009: bb.data.update_data(localdata)
    0010:
    0011: try:
    0012: fetcher = bb.fetch2.Fetch(src_uri, localdata)
    *** 0013: fetcher.download()
    0014: except bb.fetch2.BBFetchException as e:
    0015: raise bb.build.FuncFailed(e)
    0016:
    0017:
    File: ‘/home/khang/Workspace/BBxM/devendra/poky/bitbake/lib/bb/fetch2/__init__.py’, lineno: 1397, function: download
    1393: m.build_mirror_data(u, ud, self.d)
    1394: localpath = ud.localpath
    1395: # early checksum verify, so that if checksum mismatched,
    1396: # fetcher still have chance to fetch from mirror
    *** 1397: update_stamp(u, ud, self.d)
    1398:
    1399: except bb.fetch2.NetworkAccess:
    1400: raise
    1401:
    File: ‘/home/khang/Workspace/BBxM/devendra/poky/bitbake/lib/bb/fetch2/__init__.py’, lineno: 587, function: update_stamp
    0583: except:
    0584: # Errors aren’t fatal here
    0585: pass
    0586: else:
    *** 0587: verify_checksum(u, ud, d)
    0588: open(ud.donestamp, ‘w’).close()
    0589:
    0590:def subprocess_setup():
    0591: # Python installs a SIGPIPE handler by default. This is usually not what
    File: ‘/home/khang/Workspace/BBxM/devendra/poky/bitbake/lib/bb/fetch2/__init__.py’, lineno: 523, function: verify_checksum
    0519:
    0520: if not ud.method.supports_checksum(ud):
    0521: return
    0522:
    *** 0523: md5data = bb.utils.md5_file(ud.localpath)
    0524: sha256data = bb.utils.sha256_file(ud.localpath)
    0525:
    0526: if ud.method.recommends_checksum(ud):
    0527: # If strict checking enabled and neither sum defined, raise error
    File: ‘/home/khang/Workspace/BBxM/devendra/poky/bitbake/lib/bb/utils.py’, lineno: 464, function: md5_file
    0460: import md5
    0461: m = md5.new()
    0462:
    0463: with open(filename, “rb”) as f:
    *** 0464: for line in f:
    0465: m.update(line)
    0466: return m.hexdigest()
    0467:
    0468:def sha256_file(filename):
    Exception: IOError: [Errno 5] Input/output error

    ERROR: Function failed: base_do_fetch
    ERROR: Logfile of failure stored in: /home/khang/Workspace/BBxM/devendra/build/tmp/work/i686-linux/openssl-native/1.0.1e-r15.2/temp/log.do_fetch.5161
    ERROR: Task 765 (virtual:native:/home/khang/Workspace/BBxM/devendra/poky/meta/recipes-connectivity/openssl/openssl_1.0.1e.bb, do_fetch) failed with exit code ‘1’

    Do you have any idea, please?

    1. Did you, by any chance, ever figure out why you were receiving an IOError? I’m encountering something similar with trying to connect a VersaTenn III controller to my BeagleBone Black via a Prolific USB-Serial (RS-232) cable, and can’t seem to diagnose it.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s