How low can you go?

The other day I ran across a few Atmel Raven[0] development boards that I’d forgotten I had ​ (it never ceases to amaze the amount of random electronics I own and have completely forgotten about) . It got me thinking, now that​ heavy lifting of porting​ RIOT​ to its first 8 bit micro and running on the Arduino Mega with its ATmega2560 how small of an​ micro​ would it be possible to port RIOT to?

Each of the boards contains an ATmega1284P[1] is connected ​via SPI ​ to​ a n AT86RF230 transceiver[2], with a second micro, an ATmega3290P[3] used to drive the LCD and other peripherals.

​A quick look at the data sheets seems to show ​that the​​ 1284P​ and its much larger cousin, the​ 2560​ are quite similar.

​ 1284P​ 2560 3290P
Flash: 128 256 32
SRAM: 16 8 2
MHz: 16 20 20
EEPROM: 4096 4096 1024
Max I/O: 86 32 69

​The 3290 is a little on the small side but I wonder if someone could cram RIOT in there. Is it possible to build RIOT without a networking stack; how much could that reduce the memory footprint? What are RIOT’s hardware requirements? The homepage says the minimum RAM is about 1.5k and 5k of ROM, are those numbers still accurate?

There’s already a driver for for Atmel’s AT86RF231 in the tree and while the AT86RF230 on the Raven boards are nearly the same the 230 lacks a couple minor features, namely a crypto processor and RNG. So, the RF link would be wide open but for experimentation and learning sacrifices are often necessary.

Anyways, I thought working on a port might be fun (I find enjoyment in strange things) and wanted check you more knowledgeable folks to see if it would be worth the effort or at least possible.

Thanks.

–adam

[0] http://www.atmel.com/tools/avrraven.aspx [1] http://www.atmel.com/devices/ATMEGA1284P.aspx [2] http://www.atmel.com/devices/AT86RF230.aspx [3] http://www.atmel.com/devices/ATMEGA3290P.aspx

Hey Adam!

The other day I ran across a few Atmel Raven[0] development boards that I'd forgotten I had (it never ceases to amaze the amount of random electronics I own and have completely forgotten about).

Sounds familiar. :wink:

It got me thinking, now that heavy lifting of porting RIOT ​ to its first 8 bit micro and running on the Arduino Mega with its ATmega2560 how small of an ​ micro​ would it be possible to port RIOT to?

In principle, I would guess that this is possible.

​A quick look at the data sheets seems to show

​that the ​​ 1284P ​ and its much larger cousin, the​ 2560 ​ are quite similar.

        1284P | 2560 | 3290P --------------|------|------- Flash: 128 | 256 | 32 SRAM: 16 | 8 | 2 MHz: 16 | 20 | 20 EEPROM: 4096 | 4096 | 1024 Max I/O: 86 | 32 | 69

Knowing that the 2560 is working somehow, this looks promising for the 1284P: RAM is usually a bigger issue than ROM.

​The 3290 is a little on the small side but I wonder if someone could cram RIOT in there. Is it possible to build RIOT without a networking stack; how much could that reduce the memory footprint? What are RIOT's hardware requirements? The homepage says the minimum RAM is about 1.5k and 5k of ROM, are those numbers still accurate?

These numbers were taken from the output of size [1] for a TI MSP430 (and thus a 16bit) platform. A quick check for the MSB-430 platform revealed, that this would still hold more or less. For the default example (which is a basic RIOT application without network stack) you'll have about 17k ROM and 1.5k RAM (I think the numbers were taken for hello-world, where it is 7.9k ROM and 1.2k RAM).

For the ATmega2560 it shows 16.1k ROM and 2.1k RAM for default and 8.8k ROM and 1.3k RAM for hello-world. So, even the 3290P might be feasible for some constrained application.

There's already a driver for for Atmel's AT86RF231 in the tree and while the AT86RF230 on the Raven boards are nearly the same the 230 lacks a couple minor features, namely a crypto processor and RNG. So, the RF link would be wide open but for experimentation and learning sacrifices are often necessary.

As far as I know there were some considerations and work done towards a generic AT86RF23x or even AT86RF2xx driver. Thomas, am I right?

Cheers, Oleg

[1] size (GNU Binary Utilities)

Hi,

Hi,

That's great news! I have seen some compatibility issues when I have been attempting to use the 231 driver for the 212B (sub-GHz band), but I assume this is because every limit etc. is configured to work with the 2.4 GHz register values on the 231.

BR, Joakim