This class is about developing software for embedded Linux. So far we have been doing all of our development on the Beagle. This works well for small (and not so small) programs. However, we are now moving into kernel development and that's best done on a more powerful host computer. [[EBC_Exercise_01_Using_bitbake_for_Kernel_and_U-boot | Here]] you learned how to download and install the cross-compilers and the source for kernel and u-boot. Now we'll use those tools.

+

This class is about developing software for embedded Linux. So far we have been doing all of our development on the Beagle. This works well for small (and not so small) programs. However, we are now moving into kernel development and that's best done on a more powerful host computer. In [[EBC Exercise 08 Installing Development Tools]] you learned how to download and install the cross-compilers and the source for kernel and u-boot. Now we'll use those tools.

−

+

−

First we'll check everything by compiling the Hello World program, then we'll try the kernel and u-boot.

Listing 2-4 on page 29 of the text is an embedded version of Hello World. If you've set up your git repository you will find it in '''helloWorld.c''' when you do a''' git pull'''. Compile and run it on your host to be sure it works.

Listing 2-4 on page 29 of the text is an embedded version of Hello World. If you've set up your git repository you will find it in '''helloWorld.c''' when you do a''' git pull'''. Compile and run it on your host to be sure it works.

Line 17:

Line 19:

This address (0x601020) is in our data section

This address (0x601020) is in our data section

−

Now that you know it's working, let's cross compile it. First set the paths to find the cross-compilers. Put the following in a file, call it ~/.oe/'''crossCompileEnv.sh'''. Make sure the path is correct for your system. This is for a 32-bit linux.

+

Now that you know it's working, let's cross compile it. First set the paths to find the cross-compiler. Put the following in a file, call it ~/.oe/'''crossCompile.sh'''.

Revision as of 20:01, 29 October 2012

This class is about developing software for embedded Linux. So far we have been doing all of our development on the Beagle. This works well for small (and not so small) programs. However, we are now moving into kernel development and that's best done on a more powerful host computer. In EBC Exercise 08 Installing Development Tools you learned how to download and install the cross-compilers and the source for kernel and u-boot. Now we'll use those tools.

Cross-compiling Hello World

Listing 2-4 on page 29 of the text is an embedded version of Hello World. If you've set up your git repository you will find it in helloWorld.c when you do a git pull. Compile and run it on your host to be sure it works.

host$ gcc helloWorld.c
host$ ./a.out
Hello, World! Main is executing at 0x400524
This address (0x7fff8260bdf8) is in our stack frame
This address (0x601038) is in our bss section
This address (0x601020) is in our data section

Now that you know it's working, let's cross compile it. First set the paths to find the cross-compiler. Put the following in a file, call it ~/.oe/crossCompile.sh.

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-

Now source the file and compile again. (Note: you only have to source once per terminal session.)