Difference between revisions of "Category:BareMetal"
Ruibing Zhao (Talk | contribs) |
Ruibing Zhao (Talk | contribs) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | =Setup the cross compiling environment= | + | ==Setup the cross compiling environment== |
− | The one I used is Sourcery CodeBench Lite Edition, you can get it from [http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ its website] <br /> | + | The one I used is Sourcery CodeBench Lite Edition, you can get it from [http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ its website].<br /> |
− | Please choose the eabi verison and | + | 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 <br /> |
− | Untar the file<br /> | + | Untar the file:<br /> |
$ mkdir ~/overo-standalone | $ mkdir ~/overo-standalone | ||
$ cd ~/overo-standalone | $ cd ~/overo-standalone | ||
$ tar xvjf arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 | $ tar xvjf arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 | ||
− | Add the bin to your PATH<br /> | + | Add the bin to your PATH:<br /> |
$ export PATH=$PATH:~/overo-standalone/arm-2008q3/bin | $ export PATH=$PATH:~/overo-standalone/arm-2008q3/bin | ||
− | =Write the program= | + | ==Write the program== |
− | The following two Hello World | + | The following two Hello World programs have been tested on an overo.<br /> |
− | You can | + | You can get source files from [https://github.com/zhaoruibing/overo-bare-metal-hello-world here]. |
− | =Compile the program= | + | ==Compile the program== |
− | + | Assembly verison: | |
− | + | ||
$ cd asm/ | $ cd asm/ | ||
Use make to compile the asm program<br /> | Use make to compile the asm program<br /> | ||
$ make | $ make | ||
− | + | C version: | |
$ cd c/ | $ cd c/ | ||
Run the compile file in c program folder<br /> | Run the compile file in c program folder<br /> | ||
$ sh compile | $ sh compile | ||
− | =Run the program= | + | ==Run the program== |
− | You needed a flashed, bootable MicroSD. You can make one by using Sakoman's scripts ([http://www.sakoman.com/downloads.html mkcard.sh and mksdcard.sh])<br /> | + | You needed a flashed, bootable MicroSD. You can make one by using Sakoman's scripts ([http://www.sakoman.com/downloads.html mkcard.sh and mksdcard.sh]).<br /> |
− | Copy the .bin file generated by the compiler to the boot drive on the SD card<br /> | + | Copy the .bin file generated by the compiler to the boot drive on the SD card:<br /> |
$ cp *.bin /media/boot/ | $ cp *.bin /media/boot/ | ||
Umount the SD card<br /> | Umount the SD card<br /> | ||
$ umount /media/boot | $ umount /media/boot | ||
$ umount /media/rootfs | $ umount /media/rootfs | ||
− | Plug the SD card in overo and connect the overo on a Tobi expansion board<br /> | + | |
− | Power it up and go into serial console<br /> | + | Plug the SD card in overo and connect the overo on a Tobi expansion board.<br /> |
− | When the console prompt "Hit any key to stop autoboot", please hit any key<br /> | + | Power it up and go into serial console.<br /> |
+ | |||
+ | When the console prompt "Hit any key to stop autoboot", please hit any key to interrupt.<br /> | ||
+ | And run: | ||
# mmc list | # mmc list | ||
# mmc part | # mmc part | ||
# fatls mmc 0:1 | # fatls mmc 0:1 | ||
− | # fatload mmc 0:1 0x80200000 | + | # fatload mmc 0:1 0x80200000 boot.bin |
# go 0x80200000 | # go 0x80200000 | ||
− | By now you should see "Hello world!" poping in the console | + | By now you should see "Hello world!" poping in the console. |
+ | |||
+ | ==References== | ||
+ | |||
+ | '''Code used:'''<br /> | ||
+ | :The Hello World C code is from:<br /> | ||
+ | :http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/<br /> | ||
+ | :The commands used in serial console are from:<br /> | ||
+ | :http://gumstix.8.n6.nabble.com/Running-program-on-bare-metal-Overo-td4965440.html<br /> | ||
+ | :The code used in Hello World is modified from:<br /> | ||
+ | :The Definitive Guide to the ARM Cortex-M3 P172-174<br /> | ||
+ | |||
+ | '''Cross compiling tool used:'''<br /> | ||
+ | :http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/<br /> | ||
+ | |||
+ | '''Manuals:'''<br /> | ||
+ | :Uboot:<br /> | ||
+ | :http://www.denx.de/wiki/view/DULG/Manual<br /> | ||
+ | :Linker script:<br /> | ||
+ | :http://sourceware.org/binutils/docs/ld/Scripts.html#Scripts<br /> | ||
+ | :ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html<br /> | ||
+ | :Compiler:<br /> | ||
+ | :http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html<br /> | ||
+ | |||
+ | '''Futher readings:'''<br /> | ||
+ | :http://stackoverflow.com/questions/6870712/beagleboard-bare-metal-programming<br /> | ||
+ | :http://wiki.osdev.org/Beagleboard<br /> | ||
+ | :Building Bare-Metal ARM Systems with GNU | ||
+ | '''TRM(Technical Reference Manuals):'''<br /> | ||
+ | :TI OMAP35x Applications Processor Technical Reference Manual<br /> | ||
+ | :ARM Architecture Reference Manual<br /> | ||
+ | :ARM Assembly Language Tools User's Guide<br /> | ||
+ | :RealView Platform Baseboard for Cortex-A8 User Guide<br /> |
Latest revision as of 15:05, 21 September 2012
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:
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
- Building Bare-Metal ARM Systems with GNU
TRM(Technical Reference Manuals):
- TI OMAP35x Applications Processor Technical Reference Manual
- ARM Architecture Reference Manual
- ARM Assembly Language Tools User's Guide
- RealView Platform Baseboard for Cortex-A8 User Guide
This category currently contains no pages or media.