Difference between revisions of "Developping U-Boot standalone programs"
From ArmadeusWiki
(→Developping your own app) |
(→Developping your own app) |
||
(One intermediate revision by the same user not shown) | |||
Line 20: | Line 20: | ||
==Developping your own app== | ==Developping your own app== | ||
− | * At first sight all this might be considered as | + | * At first sight, all this might be considered as [[APF6 Bare-metal programming|bare-metal development]], but you will see that you are still closely linked to U-Boot and may even access to some (most ?!) of its useful API. |
* For the moment we can only advise you to hack ''examples/standalone/hello_world.c'' in U-Boot sources... | * For the moment we can only advise you to hack ''examples/standalone/hello_world.c'' in U-Boot sources... | ||
* More to come soon... | * More to come soon... | ||
Line 34: | Line 34: | ||
[[Category:U-Boot]] | [[Category:U-Boot]] | ||
+ | [[Category:Bare-metal]] |
Latest revision as of 11:49, 30 May 2016
Introduction
Fed up with Linux tons of useful librairies, memory protection to avoid programs to crash your system and facilities to launch multiple executables at the same time ? Then U-Boot offers you the possibility to develop and run "standalone" applications inside U-Boot. Here you will learn how to get back hands on the possibility to crash your APF with your own software ;-).
Installation/Launching
- An example is compiled with U-Boot and you will find it in U-Boot sources at examples/standalone/hello_world.bin. Copy it to your /tftpboot/ directory:
$ . armadeus_env.sh $ cp $ARMADEUS_UBOOT_DIR/examples/standalone/hello_world.bin /tftpboot/
- In U-Boot, load the binary through TFTP:
BIOS> tftp ${loadaddr} hello_world.bin
- All Armadeus board's U-Boot are configured to generate standalone apps relocable to ${loadaddr}, thanks to CONFIG_STANDALONE_LOAD_ADDR config option. So don't load your program anywhere else unless you changed this option !!
- Then launch your program (here example is given on APF6 where loadaddr is 0x01200000. Explanation why loadaddr+0x1 is used as jump address is given [1]):
BIOS> go 0x01200001 (on APF6 only !!)
Developping your own app
- At first sight, all this might be considered as bare-metal development, but you will see that you are still closely linked to U-Boot and may even access to some (most ?!) of its useful API.
- For the moment we can only advise you to hack examples/standalone/hello_world.c in U-Boot sources...
- More to come soon...
Tips
- Showing assembler code of your app:
$ /xxx/buildroot/output/host/usr/bin/arm-linux-gnueabihf-objdump -d examples/standalone/hello_world