A13-OLinuXino Bare Metal Programming without Linux and Android



Sometimes it’s not necessary to have OS for your application and in this case all processor resources are at your disposal, Scott (aka forum member saand) started thread at our forum about this https://www.olimex.com/forum/index.php?topic=1208.0 and after a while he succeeded to run his “hello world” code right from uboot before starting Linux or Android, the benefit, instant code run without waiting seconds for OS to boot.

5 Comments (+add yours?)

  1. Iain Cunningham (@IainIsm)
    May 01, 2013 @ 11:38:31

    Forums!? I missed that before now!


  2. notzed
    May 02, 2013 @ 04:40:07

    I did some similar work on a beagleboard a few years ago, most of it ended up here: http://code.google.com/p/puppybits/

    I had the benefit of all the public docs from TI (for the most part, exhaustively detailed) as well as some ARM stuff I found on the net.

    Although much of my effort was focused on the SOC specific stuff like video/audio/dma, there is some A8 initialisation code that might be useful. e.g. without cpu caches performance is terrible, and you need to enable virtual memory to be able to turn on the caches which is a bit fiddly. I also did some work with interrupts and context switching and so on.

    This was based on the u-boot of the time, and the boot interface may have changed since then. Fortunately u-boot setup the ram and some of the dozens of clocks on the omap.

    It was all quite fun until I hit USB …

    USB is such a crap protocol and the driver is too complex (no surprise for something from intel – and dissapointing as the *whole*point* of the ARM board was to escape their junk at last) – and without USB one is pretty restricted (at least, given the equipment I have).

    Apart from the fun-factor, i’m not sure how useful it is to go this route though. With a pre-built /dev tree and a sane init, it should be possible to boot an arm board very fast without all the bloat of a distribution. I broke my beagle-board xm by choosing sysvinit from the build tool (funny me, I thought an option provided should work) and now it boots in a couple of seconds to a network+shell.

    (although having access to interrupts and dma without needing to delve into Linux has it’s bonuses).


  3. Vincent B
    May 03, 2013 @ 10:55:53

    Hi, I also did a similar project on an ARM926ej-s. My project consists (for the moment) of an premptive OS and Round Robin algorithm. I’ll add soon the support of the MMU. (All code runs on QEMU)


  4. Vincent B
    May 03, 2013 @ 11:09:51

    I forgot to say that i don’t use u-boot, i did my own bootloader


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: