Category:BareMetal
Contents
Setup the cross compiling environment
The one I used is Sourcery CodeBench Lite Edition, you can get it from its website.
Please choose the eabi verison and the tar.bz2 one. I used arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
Untar the file:
$ mkdir ~/overo-standalone $ cd ~/overo-standalone $ tar xvjf arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
Add the bin to your PATH:
$ export PATH=$PATH:~/overo-standalone/arm-2008q3/bin
Write the program
The following two Hello World programs have been tested on an overo.
You can get source files from here.
Compile the program
Assembly verison:
$ cd asm/
Use make to compile the asm program
$ make
C version:
$ cd c/
Run the compile file in c program folder
$ sh compile
Run the program
You needed a flashed, bootable MicroSD. You can make one by using Sakoman's scripts (mkcard.sh and mksdcard.sh).
Copy the .bin file generated by the compiler to the boot drive on the SD card:
$ cp *.bin /media/boot/
Umount the SD card
$ umount /media/boot $ umount /media/rootfs
Plug the SD card in overo and connect the overo on a Tobi expansion board.
Power it up and go into serial console.
When the console prompt "Hit any key to stop autoboot", please hit any key to interrupt.
And run:
# mmc list # mmc part # fatls mmc 0:1 # fatload mmc 0:1 0x80200000 boot.bin # go 0x80200000
By now you should see "Hello world!" poping in the console.
References
Code used:
The Hello World C code is from:
http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/
The commands used in serial console are from:
http://gumstix.8.n6.nabble.com/Running-program-on-bare-metal-Overo-td4965440.html
The code used in Hello World is modified from:
The Definitive Guide to the ARM Cortex-M3 P172-174
Cross compiling tool used:
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/
Manuals:
Uboot:
http://www.denx.de/wiki/view/DULG/Manual
Linker script:
http://sourceware.org/binutils/docs/ld/Scripts.html#Scripts
ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html
Compiler:
http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
Futher readings:
http://stackoverflow.com/questions/6870712/beagleboard-bare-metal-programming
http://wiki.osdev.org/Beagleboard
This category currently contains no pages or media.