Difference between revisions of "Kovan firmware"
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Kovan uses a newer, overlay-based version of OpenEmbedded than NeTV. Because of this, recipes tend to be more scattered, however it makes compilation much faster as you can leave out overlays that you do not use. | Kovan uses a newer, overlay-based version of OpenEmbedded than NeTV. Because of this, recipes tend to be more scattered, however it makes compilation much faster as you can leave out overlays that you do not use. | ||
+ | |||
+ | ===Packages you may need=== | ||
+ | These are packages you may need over a base ubuntu 12.04 install: | ||
+ | git | ||
+ | gawk | ||
+ | make | ||
+ | gcc | ||
+ | g++ | ||
+ | diffstat | ||
+ | texi2html | ||
+ | chrpath | ||
+ | build-essential | ||
+ | texinfo (for makeinfo) | ||
+ | subversion | ||
+ | gettext (for msgfmt) | ||
+ | lzop | ||
+ | device-tree-compiler | ||
+ | |||
+ | Furthermore, you will want to change the symlink for /bin/sh to /bin/bash, instead of /bin/dash (which is the default in Ubuntu 12.04) | ||
+ | |||
==Before you begin== | ==Before you begin== | ||
Line 8: | Line 28: | ||
==Setting up the environment== | ==Setting up the environment== | ||
+ | |||
+ | To set up the environment, first you must fetch the repos, then you must perform initial, one-time configuration. All of these steps only need to be run the first time you set up your build environment. | ||
+ | |||
+ | ===Fetching source code=== | ||
There are two approaches you can take to set up the environment: From-scratch, or with a quickstart package. The quickstart method should save you a day or two, as downloading the kernel and webkit sources can take a very long time – on the order of days. | There are two approaches you can take to set up the environment: From-scratch, or with a quickstart package. The quickstart method should save you a day or two, as downloading the kernel and webkit sources can take a very long time – on the order of days. | ||
− | ===From scratch=== | + | ====From scratch==== |
Note that these steps are very similar to the generic [http://www.angstrom-distribution.org/building-angstrom Building Angstrom] steps. | Note that these steps are very similar to the generic [http://www.angstrom-distribution.org/building-angstrom Building Angstrom] steps. | ||
− | |||
#* git clone https://github.com/sutajiokousagi/setup-scripts oe | #* git clone https://github.com/sutajiokousagi/setup-scripts oe | ||
#* cd oe | #* cd oe | ||
− | |||
− | |||
− | |||
− | ===Quickstart=== | + | ====Quickstart==== |
− | # Download [http:// | + | # Download [http://kosagi.images.sg/xobs/quickstart.zip quickstart.zip]. |
− | #* wget http:// | + | #* wget http://kosagi.images.sg/xobs/quickstart.zip |
# Extract it to the location where you want your build system to reside. It expands into a directory called "oe". | # Extract it to the location where you want your build system to reside. It expands into a directory called "oe". | ||
#* unzip quickstart.zip | #* unzip quickstart.zip | ||
#* cd oe | #* cd oe | ||
+ | |||
+ | ===Configure the build environment=== | ||
+ | |||
+ | First, perform initial setup. This creates an environment file you'll use every time you want to do development. | ||
+ | |||
# Configure OE | # Configure OE | ||
#* ./oebb.sh config kovan | #* ./oebb.sh config kovan | ||
#* ./oebb.sh update | #* ./oebb.sh update | ||
+ | |||
+ | Next, edit conf/local.conf. Particularly important variables you might want to changeg are: | ||
+ | |||
+ | * PARALLEL_MAKE – This tells "make" how many threads to spawn. A good rule of thumb is 1.5 times the number of cores present. Be sure to include "-j" before the number. | ||
+ | * BB_NUMBER_THREADS – This tells bitbake how many tasks to run at parallel. Set this equal to around the number of cores present. | ||
==Building an image== | ==Building an image== | ||
Line 43: | Line 73: | ||
There is a Kovan bringup image that contains many useful system tools for determining system performance, communicating with various peripherals, and generally bringing up the system. To build this image, run: | There is a Kovan bringup image that contains many useful system tools for determining system performance, communicating with various peripherals, and generally bringing up the system. To build this image, run: | ||
bitbake kovan-bringup-image | bitbake kovan-bringup-image | ||
+ | |||
+ | ==Troubleshooting== | ||
+ | * Bitbake failure when downloading the kernel | ||
+ | There is an issue with the long-running <tt>git fetch</tt> that bitbake does when it first pulls down the kernel source code. The error looks like: | ||
+ | ERROR: Fetcher failure: Fetch command ... | ||
+ | Cloning into bare repository ... | ||
+ | To work around this, manually run the command listed and then retry the bitbake command. | ||
==Writing an image to a card== | ==Writing an image to a card== | ||
When an image is built, various files are added to the deploy/images/kovan/ directory. The image name is embedded within the resulting compressed ROM file. For example, the image for kovan-bringup-image is located at oe/build/tmp-angstrom_2010_x-eglibc/deploy/images/kovan/rom-kovan-hw-bringup.img.gz. | When an image is built, various files are added to the deploy/images/kovan/ directory. The image name is embedded within the resulting compressed ROM file. For example, the image for kovan-bringup-image is located at oe/build/tmp-angstrom_2010_x-eglibc/deploy/images/kovan/rom-kovan-hw-bringup.img.gz. |
Latest revision as of 14:19, 16 February 2013
Kovan uses a newer, overlay-based version of OpenEmbedded than NeTV. Because of this, recipes tend to be more scattered, however it makes compilation much faster as you can leave out overlays that you do not use.
Contents
Packages you may need
These are packages you may need over a base ubuntu 12.04 install:
git gawk make gcc g++ diffstat texi2html chrpath build-essential texinfo (for makeinfo) subversion gettext (for msgfmt) lzop device-tree-compiler
Furthermore, you will want to change the symlink for /bin/sh to /bin/bash, instead of /bin/dash (which is the default in Ubuntu 12.04)
Before you begin
The build environment should not be on an encrypted partition. These tend to have much lower path lengths, which can break the build in mysterious and hard-to-track-down ways.
You should not use have a symlink in the path of the build system. This can also break things.
Setting up the environment
To set up the environment, first you must fetch the repos, then you must perform initial, one-time configuration. All of these steps only need to be run the first time you set up your build environment.
Fetching source code
There are two approaches you can take to set up the environment: From-scratch, or with a quickstart package. The quickstart method should save you a day or two, as downloading the kernel and webkit sources can take a very long time – on the order of days.
From scratch
Note that these steps are very similar to the generic Building Angstrom steps.
- git clone https://github.com/sutajiokousagi/setup-scripts oe
- cd oe
Quickstart
- Download quickstart.zip.
- Extract it to the location where you want your build system to reside. It expands into a directory called "oe".
- unzip quickstart.zip
- cd oe
Configure the build environment
First, perform initial setup. This creates an environment file you'll use every time you want to do development.
- Configure OE
- ./oebb.sh config kovan
- ./oebb.sh update
Next, edit conf/local.conf. Particularly important variables you might want to changeg are:
- PARALLEL_MAKE – This tells "make" how many threads to spawn. A good rule of thumb is 1.5 times the number of cores present. Be sure to include "-j" before the number.
- BB_NUMBER_THREADS – This tells bitbake how many tasks to run at parallel. Set this equal to around the number of cores present.
Building an image
Set up your session by sourcing the OE environment file:
. ~/.oe/environment-oecore
There are many images available. To list them all, run:
find sources/meta-* sources/openembedded-core -name '*image*.bb'
There is a Kovan bringup image that contains many useful system tools for determining system performance, communicating with various peripherals, and generally bringing up the system. To build this image, run:
bitbake kovan-bringup-image
Troubleshooting
- Bitbake failure when downloading the kernel
There is an issue with the long-running git fetch that bitbake does when it first pulls down the kernel source code. The error looks like:
ERROR: Fetcher failure: Fetch command ... Cloning into bare repository ...
To work around this, manually run the command listed and then retry the bitbake command.
Writing an image to a card
When an image is built, various files are added to the deploy/images/kovan/ directory. The image name is embedded within the resulting compressed ROM file. For example, the image for kovan-bringup-image is located at oe/build/tmp-angstrom_2010_x-eglibc/deploy/images/kovan/rom-kovan-hw-bringup.img.gz.