OLinuXino EEPROM content – one step ahead to single Linux image for all A20 boards


We are struggling for some time now to make one single image which to work on all A20 boards we have.

Our problem is that we have more than 20 different A20 boards/revisions/ etc and every time we have to add or improve something we have to generate and test enormous amount of images.

It’s not so easy task as this image should run on different boards with differnt memory speed etc settings, different ports connections etc.

To achieve one single image which to boot to all A20 boards our first step is to add some content in the EEPROM which all OLinuXino has.

The EEPROM now contain this info: Header, ID, Revision, Serial number, Configuration, Reserved area for future (MAC etc), Checkcum.

The new image we work on now (based on Armbian with mainline kernel) will automatically recognize the board from the EEPROM content and run.

What will happen if no valid EEPROM content is read (i.e. old boards), there is tool which to be used to write EEPROM content based on board revision.

We are going to release this image soon.


7 Comments (+add yours?)

  1. Johan Myréen
    Dec 04, 2017 @ 14:00:23

    Could you please include the MAC address too in this info, instead of always deferring it to the future. It’s my understanding this EEPROM was originally intended to contain the MAC, but if nobody with authority steps up and actually defines how the MAC should be stored there, we will never get a standard and it will forever be RFU.


  2. ZupoLlask
    Dec 04, 2017 @ 16:24:32

    I agree with Johan that MAC should be flashed right now in the EEPROM, following the same logic currently used by u-boot (MAC is predictably based on A20 serial number).


  3. SK
    Dec 04, 2017 @ 17:11:07

    The format for amount of memory seems strange, you cannot represent all intermediate values but only 1-9 of each unit e.g. how are you going to represent 16GB?


    • SK
      Dec 05, 2017 @ 09:49:10

      If you meant the second didigt to be a power of 2, then it is not OK again – how do you represent 3GB, 6GB, 10GB, 12GB, etc. Also bear in mind that traditional HDDs measure their capacity in decimal GBs, and not binary GiB as other media.


  4. iamnotastring
    Dec 12, 2017 @ 13:34:38

    Just a spelling correction: Checkcum -> Checksum. Thanks for the great work (I own a Olinuxinu A20 micro)


  5. Ralf
    Dec 23, 2017 @ 17:36:53

    Can you explain why you want to do this with the eeprom? Isn’t the Device Tree the way to go to use the same kernel for different boards?


  6. olliv3r
    Feb 19, 2018 @ 09:48:26

    I’ve been working on this for a while now actually, https://github.com/ultimaker/u-boot/tree/opinicus-2016.05_0 is what we use on our machines. I’ve started the upstreaming process 2 or so years ago, and its still WiP :p

    What I was working on last i checked, was for Maxime’s EEPROM patches to get merged (No idea what that status is right now) and I wanted to integrate the EEPROM layout feature already present in u-boot.

    Having said that, yes, this is mostly all up to the devicetree, except for the memory timings and boot medium selection. E.g. the SPL.

    What we are doing right now, is store a device specific code in the eeprom and then based on this code, load a specific DTS. This covers most of the load, except the SPL memory timings requirement for starters. Now one way to solve this is what olimex probably tries to do with this feature, store a memory timings identifier in the eeprom? But i’m sure we need a little more engineering here to get this working more widely across more products. E.g. ‘generic u-boot’ for all boards that have an eeprom, vs specific u-boot lacking storage accessable from the SPL (and that’s assuming we have enough space in the SPL left to do this.

    Finally, as for MAC addresses, I talked to Tsvetan about this a few years back, and since Olimex did not have a block of MAC addresses, they did not ship boards with a proper MAC address, hence that this is a future todo thing.


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 )

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: