This page was updated to the following versions - and was subsequently updated to fix a few errata.

*Ubuntu - Maverick Merkat (10.10)

*Ubuntu - Maverick Merkat (10.10)

*ARM GNU/LINUX GCC - 4.5.1

*ARM GNU/LINUX GCC - 4.5.1

*ARM EABI GCC - 4.4.1

*ARM EABI GCC - 4.4.1

−

*Code Generation Tools v7.2.2

+

*Code Generation Tools v7.2.4

*Bios User-space binaries v5.33.06

*Bios User-space binaries v5.33.06

+

*Additional notes for Overo

= Introduction =

= Introduction =

Line 19:

Line 20:

:*Build everything from sources when possible.

:*Build everything from sources when possible.

:*Be on the "''bleeding edge''", be it compilers, source code, whatever.

:*Be on the "''bleeding edge''", be it compilers, source code, whatever.

−

This page is not meant to duplicate any previous work and I will link to existing work whenever possible. I used the page [http://elinux.org/BeagleBoardUbuntu BeagleBoardUbuntu] that is hosted at this site as my main reference.

+

This page is not meant to duplicate any previous work and I will link to existing work whenever possible. I used the page [[BeagleBoardUbuntu]] that is hosted at this site as my main reference.

−

This page was written on a generic Intel Core2 running a fresh installation of 32-bit Xubuntu 10.10 Maverick Meerkat. My BeagleBoard is a rev C3 version.

+

This page was written on a generic Intel Core2 running a fresh installation of 32-bit Ubuntu 10.10 Maverick Meerkat. My BeagleBoard is a rev C3 version.

Please note that along the way, you will need to install any dependencies that are not present on your machine. This is a straightforward process. In cases where a script dies without warning due to a missing dependency, I will warn you ahead of time.

Please note that along the way, you will need to install any dependencies that are not present on your machine. This is a straightforward process. In cases where a script dies without warning due to a missing dependency, I will warn you ahead of time.

Line 29:

Line 30:

== ARM Cross Compiler ==

== ARM Cross Compiler ==

−

At the time of this writing, the ARM GNU/LINUX Compiler Collection available from Ubuntu is version 4.5.1. It can be installed via the Synaptic package manager or from the command line. [http://www.codesourcery.com CodeSourcery] also provides version 4.5.1 of the ARM GNU/LINUX Compiler Collection. They are one of the leading contributors to the ARM GCC cross-compiler. They regularly push their updates upstream for inclusion into the main branch. They provide a LITE version of their ARM GCC cross-compiler for free. They provide 32-bit binaries, but the sources are available. It would be an interesting project to compile 64-bit binaries, but we'll save that for another day.

+

At the time of this writing, the ARM GNU/LINUX Compiler Collection available from Ubuntu is version 4.5.1. It can be installed via the Synaptic package manager or from the command line. [http://www.codesourcery.com CodeSourcery] also provides version 4.5.1/4.5.2 of the ARM GNU/LINUX Compiler Collection. They are one of the leading contributors to the ARM GCC cross-compiler. They regularly push their updates upstream for inclusion into the main branch. They provide a LITE version of their ARM GCC cross-compiler for free. They provide 32-bit binaries, but the sources are available. It would be an interesting project to compile 64-bit binaries, but we'll save that for another day.

=== ARM GNU/LINUX ===

=== ARM GNU/LINUX ===

To install ARM GNU/LINUX compiler collection from Ubuntu, use the Synaptic package manager or enter the following at the command line.

To install ARM GNU/LINUX compiler collection from Ubuntu, use the Synaptic package manager or enter the following at the command line.

sudo apt-get install gcc-4.5-arm-linux-gnueabi

sudo apt-get install gcc-4.5-arm-linux-gnueabi

−

If you choose, the Codesourcery ARM/LINUX Lite compiler collection can be found at [http://www.codesourcery.com/sgpp/lite/arm/portal/release1600 Sourcery G++ Lite 2010.09-50]. All [http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057 previous versions] are also available.

+

If you choose, the Codesourcery ARM/LINUX Lite compiler collection can be found at [http://www.codesourcery.com/sgpp/lite/arm/portal/release1803 Sourcery G++ Lite 2011.03-41 for ARM GNU/Linux]. All [http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057 previous versions] are also available.

''If you elect to use the Codesourcery ARM GCC, take care to install the two CodeSourcery versions into separate directories.''

''If you elect to use the Codesourcery ARM GCC, take care to install the two CodeSourcery versions into separate directories.''

=== ARM EABI ===

=== ARM EABI ===

−

At the time of this writing, the latest Codesourcery ARM/EABI Lite compiler collection (v4.5.1) can be found at [http://www.codesourcery.com/sgpp/lite/arm/portal/release1592 Sourcery G++ Lite 2010.09-51]. U-boot did not start when compiled with this compiler, but does start when compiled with the previous version (v4.4.1), which can be found at [http://www.codesourcery.com/sgpp/lite/arm/portal/release1294 Sourcery G++ Lite 2010q1-188 for ARM EABI]. All [http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3053 previous versions] are also available.

+

At the time of this writing, the latest Codesourcery ARM/EABI Lite compiler collection (v4.5.2) can be found at [http://www.codesourcery.com/sgpp/lite/arm/portal/release1802 Sourcery G++ Lite 2011.03-42 for ARM EABI]. U-boot did not start when compiled with this compiler, but does start when compiled with a previous version (v4.4.1), which can be found at [http://www.codesourcery.com/sgpp/lite/arm/portal/release1294 Sourcery G++ Lite 2010q1-188 for ARM EABI]. All [http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3053 previous versions] are also available.

=== Other Compilers ===

=== Other Compilers ===

Line 46:

Line 47:

== TI DSP Compiler ==

== TI DSP Compiler ==

−

TI's proprietary compiler has been in use for a long time and is the standard for C6000 DSPs. At the time of this writing, the latest version is [https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm C6000 Code Generation Tools v7.2.2]. You will need to register with TI before you can access the downloads.

+

TI's proprietary compiler has been in use for a long time and is the standard for C6000 DSPs. At the time of this writing, the latest version is [https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm C6000 Code Generation Tools v7.2.4]. You will need to register with TI before you can access the downloads.

'''''Recommendation: The scripts to build the [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#DSP_Bridge_Userspace_Utilities DSP Bridge Userspace Utilties] require that [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#DSP_BIOS DSP BIOS] and the compiler be installed in the same directory. I chose to keep the default /opt/TI.'''''

'''''Recommendation: The scripts to build the [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#DSP_Bridge_Userspace_Utilities DSP Bridge Userspace Utilties] require that [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#DSP_BIOS DSP BIOS] and the compiler be installed in the same directory. I chose to keep the default /opt/TI.'''''

Line 62:

Line 63:

make CROSS_COMPILE=arm-none-eabi- omap3530beagle_config

make CROSS_COMPILE=arm-none-eabi- omap3530beagle_config

make CROSS_COMPILE=arm-none-eabi-

make CROSS_COMPILE=arm-none-eabi-

+

'''''Alternatively, use 'overo_config' for an overo board.'''''

+

This will create x-load.bin in the working directory. This file will need to be "signed", which essentially pre-pends the load address and length to the image. A good source for a signing tool can be found at [http://code.google.com/p/beagleboard/downloads/list Google's Beagleboard Project download page]. You can download a pre-built "signGP" or download "signGP.c" to examine and build the source yourself. To do so, save signGP.c in your xloader/mainline directory and enter the following.

This will create x-load.bin in the working directory. This file will need to be "signed", which essentially pre-pends the load address and length to the image. A good source for a signing tool can be found at [http://code.google.com/p/beagleboard/downloads/list Google's Beagleboard Project download page]. You can download a pre-built "signGP" or download "signGP.c" to examine and build the source yourself. To do so, save signGP.c in your xloader/mainline directory and enter the following.

gcc signGP.c -o signGP

gcc signGP.c -o signGP

Line 76:

Line 79:

make CROSS_COMPILE=arm-none-eabi- omap3_beagle_config

make CROSS_COMPILE=arm-none-eabi- omap3_beagle_config

make CROSS_COMPILE=arm-none-eabi-

make CROSS_COMPILE=arm-none-eabi-

+

'''''Alternatively, use 'omap3_overo_config' for an overo board.'''''

+

The result is a u-boot.bin in the main directory. Copy this to the boot partition of your SD card.

The result is a u-boot.bin in the main directory. Copy this to the boot partition of your SD card.

cp u-boot.bin /media/boot/u-boot.bin

cp u-boot.bin /media/boot/u-boot.bin

Line 87:

Line 92:

= Build & Prepare the Kernel =

= Build & Prepare the Kernel =

== Kernel Source ==

== Kernel Source ==

−

Using the recommendation found [http://elinux.org/BeagleBoardUbuntu#Official_Ubuntu_Kernel here], I have chosen to use the kernel source provided by the [https://launchpad.net/~beagleboard-kernel BeagleBoard Kernel] project. They have several [https://code.launchpad.net/~beagleboard-kernel branches]. In keeping with being on the "bleeding edge", I have chosen to use the [https://code.launchpad.net/~beagleboard-kernel/+junk/2.6-stable 2.6-stable] branch because it is the branch that is most often updated. To get the kernel source, do the following.

+

Using the recommendation found [http://elinux.org/BeagleBoardUbuntu#Official_Ubuntu_Kernel here], I have chosen to use the kernel source provided by the [https://launchpad.net/~beagleboard-kernel BeagleBoard Kernel] project. They have several branches. In keeping with being on the "bleeding edge", I have chosen to use the [https://github.com/RobertCNelson/stable-kernel stable-kernel] branch because it is the branch that is most often updated. To get the kernel source, do the following.

The Ubuntu ARM project uses '''rootstock''' to build the complete filesystem, which includes kernel, modules, and kernel headers. In order to include these files into the root file system, rootstock requires that the kernel and associated files be bundled into a .deb package that is served from a webserver. The Ubuntu kernel build scripts have a facility for this.

+

The Ubuntu ARM project uses '''rootstock''' to build the complete filesystem, which includes kernel, modules, and kernel headers. In order to include these files into the root file system, rootstock requires that the kernel and associated files be bundled into a .deb package that is served from a webserver. The Ubuntu kernel build scripts have a facility for this. You will be required to copy "system.sh.sample" to "system.sh" and modify it. At a minimum, you will need to uncomment the "CC=" line.

−

You will need to install "dpg-dev" prior to building the kernel. To build the kernel, simply enter:

+

You will need to install "dpkg-dev" prior to building the kernel. To build the kernel, simply enter:

./build_kernel.sh

./build_kernel.sh

./build_deb.sh (for *.deb)

./build_deb.sh (for *.deb)

−

You will be required to copy "system.sh.sample" to "system.sh" and modify it. At a minimum, you will need to uncomment the "CC=" line.

At the menuconfig stage, include the following changes if you choose to compile the DSP driver into the kernel:

At the menuconfig stage, include the following changes if you choose to compile the DSP driver into the kernel:

Line 117:

Line 120:

=== Copy Kernel uImage to SD Card ===

=== Copy Kernel uImage to SD Card ===

In the "2.6-stable/deploy" folder you will find a uImage. The uImage kernel version will be prepended to the filename. Copy this to the boot partition of your SD card. An example is given below.

In the "2.6-stable/deploy" folder you will find a uImage. The uImage kernel version will be prepended to the filename. Copy this to the boot partition of your SD card. An example is given below.

−

cp deploy/2.6.37.3-x5.uImage /media/boot/uImage

+

cp deploy/2.6.39-x1.uImage /media/boot/uImage

=== Put .deb bundle on a webserver ===

=== Put .deb bundle on a webserver ===

Line 123:

Line 126:

An example is given below. Note that the prepended kernel version will change over time.

An example is given below. Note that the prepended kernel version will change over time.

−

sudo cp deploy/linux-image-2.6.37.6-x5_1.0cross_armel.deb /var/www/

+

sudo cp deploy/linux-image-2.6.39-x1_1.0cross_armel.deb /var/www/

= Userspace File System =

= Userspace File System =

Line 129:

Line 132:

A great overview of building the Ubuntu root filesystem can be found [http://elinux.org/BeagleBoardUbuntu#RootStock:_Build_an_Ubuntu_root_file_system here]. This is the second time in the process where we don't compile something for ourselves (the first being the cross-compiler). Rootstock downloads pre-compiled user space applications and libraries. I am not too worried about this because these are not in the kernel space. Rootstock is an Ubuntu supported ARM root filesystem builder, so I will trust that their user space binaries are up to par.

A great overview of building the Ubuntu root filesystem can be found [http://elinux.org/BeagleBoardUbuntu#RootStock:_Build_an_Ubuntu_root_file_system here]. This is the second time in the process where we don't compile something for ourselves (the first being the cross-compiler). Rootstock downloads pre-compiled user space applications and libraries. I am not too worried about this because these are not in the kernel space. Rootstock is an Ubuntu supported ARM root filesystem builder, so I will trust that their user space binaries are up to par.

−

Before we proceed, you will need to install rootstock and dctrl-tools (to process .deb bundles on the command line). You will also need to create a new folder to hold the root filesystem and then cd into it.

+

Before we proceed, you will need to install rootstock and dctrl-tools (to process .deb bundles on the command line). You will also need to create a new folder to hold the root filesystem and then cd into it. Also, please note that '--fqdn beagleboard' specifies the fully qualified domain name is 'beagleboard'. You may use any fqdn you prefer, and it does not restrict the root filesystem to a particular board type. The root filesystem is not board specific and will work for any OMAP based system, and quite possibly many other ARM based systems.

=== lxde root filesystem ===

=== lxde root filesystem ===

The following will build a root filesystem for a '''''maverick''''' distribution running the lxde GUI environment. This example will incorporate the kernel, modules, and kernel headers from the webserver that we set up in the [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#Put_.deb_bundle_on_a_webserver previous section]. Also, please note that the following example references the specific .deb file from the examples above. This will change over time.

The following will build a root filesystem for a '''''maverick''''' distribution running the lxde GUI environment. This example will incorporate the kernel, modules, and kernel headers from the webserver that we set up in the [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#Put_.deb_bundle_on_a_webserver previous section]. Also, please note that the following example references the specific .deb file from the examples above. This will change over time.

The following will build a root filesystem for a '''''maverick''''' minimal distribution that boots to a command prompt. Again, please note that the following example references the specific .deb file from the examples above. This will change over time.

The following will build a root filesystem for a '''''maverick''''' minimal distribution that boots to a command prompt. Again, please note that the following example references the specific .deb file from the examples above. This will change over time.

Finally, we are ready to start working on DSP. There are several approaches to this. Please have a look at [[BeagleBoard/DSP Clarification]]. I have chosen to pursue the dsp-bridge approach at this time. This is mainly because it is supported in the Ubuntu kernel. Ultimately I want to use the DSP in the most efficient manner with GStreamer. I want to minimize dsp-kernel-user space transfers, so I will evaluate all of the approaches and settle on one. At this time, for simplicity, let's go with dsp-bridge.

+

Finally, we are ready to start working on DSP. There are several approaches to this. Please have a look at [[BeagleBoard/DSP Clarification]]. This area has undergone quite a bit of change in the last year. Previously, I had chosen to use the kernel's DSP Bridge driver along with DSP Bridge Userspace Utilities. A new project called gst-dsp has started up and it seeks to reduce the dependence on external libraries and also to reduce the number of kernel to user-space transfers. The [http://www.elinux.org/BeagleBoard_Ubuntu_%26_DSP_From_Sources#Build_.26_Prepare_the_Kernel kernel package] provided from Ubuntu includes scripts to build gst-dsp. You can copy the libraries directly onto your target device.

−

+

−

But before we do, if you are interested in using dsp-bridge, please read [[BeagleBoard/DSP Howto]].

+

−

If you followed the directions up to this point, the kernel has the dsp-bridge driver. We now need to get the DSP BIOS operating system for the C64x DSP controller and we need to build the user space binaries and libraries. From this point forward, we will be following the writeup for the omapzoom at [http://omappedia.org/wiki/DSPBridge_Project DSPBridge Project].

+

If you wish to continue using DSP Bridge, the instructions are provided as follows. If you followed the directions up to this point, the kernel has the dsp-bridge driver. We now need to get the DSP BIOS operating system for the C64x DSP controller and we need to build the user space binaries and libraries. From this point forward, we will be following the writeup for the omapzoom at [http://omappedia.org/wiki/DSPBridge_Project DSPBridge Project].

== DSP BIOS ==

== DSP BIOS ==

Line 163:

Line 164:

== DSP Bridge Userspace Utilities ==

== DSP Bridge Userspace Utilities ==

−

DSP Bridge requires user space binaries. At some point, I will investigate whether this is the most efficient way to use the DSP in Linux. But for the time being, I am using this setup because it is well supported. To build the DSP Bridge user space binaries, create a folder, cd into it and do the following:

+

DSP Bridge requires user space binaries. To build the DSP Bridge user space binaries, create a folder, cd into it and do the following:

There are several bugs in the build scripts. These are fixed in the following patch (although we are using CGT 7.2.2, the patch is still valid): [[File:Dspbridge-userspace-cgt7_0_2-bios5-33-06.patch‎]]

+

There are several bugs in the build scripts. These are fixed in the following patch (although we are using CGT 7.2.4, the patch is still valid): [[File:Dspbridge-userspace-cgt7_0_2-bios5-33-06.patch‎]]

To apply the patch, save the patch file one directory level higher than your DSP Bridge user space binaries directory and then do the following:

To apply the patch, save the patch file one directory level higher than your DSP Bridge user space binaries directory and then do the following:

Updates to this page

This page was updated to the following versions - and was subsequently updated to fix a few errata.

Ubuntu - Maverick Merkat (10.10)

ARM GNU/LINUX GCC - 4.5.1

ARM EABI GCC - 4.4.1

Code Generation Tools v7.2.4

Bios User-space binaries v5.33.06

Additional notes for Overo

Introduction

The purpose of this page is to demonstrate how to build and run a DSP enabled (ARM EABI) Ubuntu distribution for the BeagleBoard. We will build two variants of the Ubuntu distribution: an lxde GUI-based version and a minimal console-based version. The following guidelines apply.

Build everything from sources when possible.

Be on the "bleeding edge", be it compilers, source code, whatever.

This page is not meant to duplicate any previous work and I will link to existing work whenever possible. I used the page BeagleBoardUbuntu that is hosted at this site as my main reference.

This page was written on a generic Intel Core2 running a fresh installation of 32-bit Ubuntu 10.10 Maverick Meerkat. My BeagleBoard is a rev C3 version.

Please note that along the way, you will need to install any dependencies that are not present on your machine. This is a straightforward process. In cases where a script dies without warning due to a missing dependency, I will warn you ahead of time.

Compilers

We will need three cross-compilers for the OMAP 3530. We will use both the ARM GNU/LINUX compiler collection from Ubuntu to compile the kernel, modules, and user space files. We will use the ARM EABI GNU compiler collection from CodeSourcery to compile the X-Loader and U-Boot bootloaders. We will use the latest TI C6000 Code Generation Tools for the C64x digital signal processor.

ARM Cross Compiler

At the time of this writing, the ARM GNU/LINUX Compiler Collection available from Ubuntu is version 4.5.1. It can be installed via the Synaptic package manager or from the command line. CodeSourcery also provides version 4.5.1/4.5.2 of the ARM GNU/LINUX Compiler Collection. They are one of the leading contributors to the ARM GCC cross-compiler. They regularly push their updates upstream for inclusion into the main branch. They provide a LITE version of their ARM GCC cross-compiler for free. They provide 32-bit binaries, but the sources are available. It would be an interesting project to compile 64-bit binaries, but we'll save that for another day.

ARM GNU/LINUX

To install ARM GNU/LINUX compiler collection from Ubuntu, use the Synaptic package manager or enter the following at the command line.

TI DSP Compiler

TI's proprietary compiler has been in use for a long time and is the standard for C6000 DSPs. At the time of this writing, the latest version is C6000 Code Generation Tools v7.2.4. You will need to register with TI before you can access the downloads.
Recommendation: The scripts to build the DSP Bridge Userspace Utilties require that DSP BIOS and the compiler be installed in the same directory. I chose to keep the default /opt/TI.

SD Card Boot

We will boot the Beagleboard from an SD card. A great tutorial exists and doesn't need any further explanation. I named my boot partition "boot" and my root file system partition "rootfs".

BootLoaders

The OMAP 3530 boots in three stages. The first stage is the ROM boot vector. This stage then jumps to the X-Loader that comes pre-installed in the onboard Flash memory. The X-Loader will then jump to a U-Boot bootloader that is installed in Flash or to a U-Boot bootloader that is on a properly configured SD card if present. The second and third stage bootloaders can be replaced or configured as needed.

X-Loader

X-Loader is Texas Instruments' first stage bootloader that will load a second stage bootloader such as U-Boot. The X-Loader project is hosted at x-load-omap3 and can help you get started. Do the following to build X-Loader.

This will create x-load.bin in the working directory. This file will need to be "signed", which essentially pre-pends the load address and length to the image. A good source for a signing tool can be found at Google's Beagleboard Project download page. You can download a pre-built "signGP" or download "signGP.c" to examine and build the source yourself. To do so, save signGP.c in your xloader/mainline directory and enter the following.

gcc signGP.c -o signGP
./signGP
cp x-load.bin.ift /media/boot/MLO

MLO is now installed on the boot partition of the SD card. Note that X-Loader has been recommended to be the first file on your boot partition and should be titled MLO. More recent versions of X-Loader and U-boot do not seem to be affected by the ordering of files in the boot partition.

U-Boot

There are several U-Boot trees for the BeagleBoard. Previously, I chose to use the mainline tree from Denx because it worked well enough. However, with multiple versions Beagleboards out there, the main tree may not work for an older board such as Rev C3. The U-boot Beagleboard maintainer is Sakoman, Inc.. Their experimental branch is the most up-to-date and supports all Beagleboard revisions. Do the following to build and install U-Boot.

Build & Prepare the Kernel

Kernel Source

Using the recommendation found here, I have chosen to use the kernel source provided by the BeagleBoard Kernel project. They have several branches. In keeping with being on the "bleeding edge", I have chosen to use the stable-kernel branch because it is the branch that is most often updated. To get the kernel source, do the following.

Build the Kernel

The Ubuntu ARM project uses rootstock to build the complete filesystem, which includes kernel, modules, and kernel headers. In order to include these files into the root file system, rootstock requires that the kernel and associated files be bundled into a .deb package that is served from a webserver. The Ubuntu kernel build scripts have a facility for this. You will be required to copy "system.sh.sample" to "system.sh" and modify it. At a minimum, you will need to uncomment the "CC=" line.

You will need to install "dpkg-dev" prior to building the kernel. To build the kernel, simply enter:

./build_kernel.sh
./build_deb.sh (for *.deb)

At the menuconfig stage, include the following changes if you choose to compile the DSP driver into the kernel:

This error is generated because the cross-compiler is a 32-bit binary and 'libfakeroot-sysv.so' is a 64-bit binary. I have extracted the kernel image from the .deb bundle and it boots. So the error is just an annoyance.

Deploy the Kernel

Copy Kernel uImage to SD Card

In the "2.6-stable/deploy" folder you will find a uImage. The uImage kernel version will be prepended to the filename. Copy this to the boot partition of your SD card. An example is given below.

cp deploy/2.6.39-x1.uImage /media/boot/uImage

Put .deb bundle on a webserver

As previously mentioned, rootstock needs to access a .deb bundle that contains the kernel, modules, and kernel headers from a webserver. These are essential to correctly build a root filesystem. If you don't have access to one, install "lighttpd" - a fast and simple webserver. You can access your new homepage by entering "localhost" in your browser. This page will give you lots of helpful information to include the fact that your webserver root is located at /var/www/. You can copy your .deb files to this location whenever you need them.

An example is given below. Note that the prepended kernel version will change over time.

sudo cp deploy/linux-image-2.6.39-x1_1.0cross_armel.deb /var/www/

Userspace File System

Build the root filesystem

A great overview of building the Ubuntu root filesystem can be found here. This is the second time in the process where we don't compile something for ourselves (the first being the cross-compiler). Rootstock downloads pre-compiled user space applications and libraries. I am not too worried about this because these are not in the kernel space. Rootstock is an Ubuntu supported ARM root filesystem builder, so I will trust that their user space binaries are up to par.

Before we proceed, you will need to install rootstock and dctrl-tools (to process .deb bundles on the command line). You will also need to create a new folder to hold the root filesystem and then cd into it. Also, please note that '--fqdn beagleboard' specifies the fully qualified domain name is 'beagleboard'. You may use any fqdn you prefer, and it does not restrict the root filesystem to a particular board type. The root filesystem is not board specific and will work for any OMAP based system, and quite possibly many other ARM based systems.

lxde root filesystem

The following will build a root filesystem for a maverick distribution running the lxde GUI environment. This example will incorporate the kernel, modules, and kernel headers from the webserver that we set up in the previous section. Also, please note that the following example references the specific .deb file from the examples above. This will change over time.

minimal root filesystem

The following will build a root filesystem for a maverick minimal distribution that boots to a command prompt. Again, please note that the following example references the specific .deb file from the examples above. This will change over time.

DSP

Finally, we are ready to start working on DSP. There are several approaches to this. Please have a look at BeagleBoard/DSP Clarification. This area has undergone quite a bit of change in the last year. Previously, I had chosen to use the kernel's DSP Bridge driver along with DSP Bridge Userspace Utilities. A new project called gst-dsp has started up and it seeks to reduce the dependence on external libraries and also to reduce the number of kernel to user-space transfers. The kernel package provided from Ubuntu includes scripts to build gst-dsp. You can copy the libraries directly onto your target device.

If you wish to continue using DSP Bridge, the instructions are provided as follows. If you followed the directions up to this point, the kernel has the dsp-bridge driver. We now need to get the DSP BIOS operating system for the C64x DSP controller and we need to build the user space binaries and libraries. From this point forward, we will be following the writeup for the omapzoom at DSPBridge Project.

DSP BIOS

DSP BIOS is the operating system that runs on the DSP. DSP BIOS can be downloaded here. Currently, the latest version is 5.4x, but for once we won't be on the bleeding edge. The reason is because scripts to build the userspace files require version 5.33.x. This will be a project to move to the latest DSP BIOS version.

At this time, we will use DSP BIOS 5.33.06. Download the installer and install into a location of your choice. (Note: The DSP Bridge Userspace Utilties require that DSP BIOS and Code Generation Tools are installed into the same directory. To work with the compiler default install directory, I installed into /opt/TI)

DSP Bridge Userspace Utilities

DSP Bridge requires user space binaries. To build the DSP Bridge user space binaries, create a folder, cd into it and do the following:

Host Machine Dependencies

Before we get started, now is a good time to point out the the build script has a dependency on the 32-bit version of libstdc++. If you are using a 32-bit system, then you have no problem here. If you are using a 64-bit system, you will need to install the 32-bit version of the library. Debian provides a 32-bit version of libstdc++. Once downloaded, the following command will add this library to your system. Note: The version of this library will update over time.

sudo dpkg --force-architecture -i libstdc++5_3.3.6-18_i386.deb

Host Machine Permissions

The build script will fail due to permissions in the xdctools folder of your DSP BIOS installation. To fix this, I added 544 permissions to the required folders.