Size of the my project

Hello, I’m new to this mailing list and to RIOT, I hope I can have some help.

I want to use a board like the udoo where to put RIOT and my program that I’m developing, the question is: since the udoo, as well as all the other boards, have a limited amount of memory (ram and rom) how big can my project be? I’m developing a project which is more than 20MB of size is that too much? As far as I got, usually the in the boards the ROM is 256KB or 512KB, but the udoo has the possibility to put an external memory card, so the available memory would be bigger?

I’m probably doing a lot of confusion and I’m sorry if my question is dumb, but I hope someone can clarify to me this thing.

Thanks. Cheers Mark

Hi Mark, which Udoo board are you talking about exactly? The memory constraint is dictated by the hardware, essentially. The Udoo board supported by RIOT so far is this one And on this board, RIOT runs on the Arduino part of the hardware, not on the quad-core. Cheers, Emmanuel

Hi Emmanuel, Yes exactly that one.

The UDOO’s hardware has 512KB of flash memory, but there’s a possibility to add a micro SD card of 8GB or more, so since that my project is 20MB, is it okay or still it has to be less than 512KB? Because if I can’t overcome that size then everything I did is wrong. That’s why it’s important for me to know it.

Thank you. Mark

Hi Mark!

The UDOO's hardware has 512KB of flash memory, but there's a possibility to add a micro SD card of 8GB or more, so since that my project is 20MB, is it okay or still it has to be less than 512KB?

Well, first of all you would have to write a driver to support this card reader on the board (which, normally, shouldn't be too much of a problem). But more problematic is the fact that you won't be able to execute any code from the card directly, but would have to implement some swapping mechanism, which is probably a really challenging task.

If you just want too offload some data to the memory card, then it's much easier.

Because if I can't overcome that size then everything I did is wrong. That's why it's important for me to know it.

May I ask you how you managed to write a program or library that requires 20MB of memory? Do you have a pointer to your code?

Cheers, Oleg

Hello Mark Bul,

I don’t think that it’s possible to extend the native address space onto an external flash memory, which is probably driven by SPI.

Do you really need 20 MB of coding size, or are parts of that big files like pictures/videos/music files? Those can be loaded at runtime and then accessed/worked on without problems.

If you really need 20 MB of code, then I don’t see a simple solution here. You probably could split your program into small parts and load these parts on demand from the SD flash memory into the SRAM of your microcontroller and execute the code snip from RAM, but this degrades the overall performance is very hard to maintain…

Best, Cenk

Hello Oleg and Chenk.

What is occuping more size is a server that I download and then I apply some patches, maybe I have to find another way. If there’s not that, the program would be of 3MB, still to much, but I’m compiling in native. Hopefully compiling for a board the size will be smaller…



I ask sorry for the dumb question in advance, but I have a beginner doubt. My project has to be less then 512KB since that that is the maximum ROM size of my board (the UDOO). What I don’t understand is: RIOT itself is about 50MB so how can it fit in the board, in 512KB of ROM? And if RIOT is 50MB why can’t I do a project who is like 20MB?

I know for sure that I have a huge lack in knowledge, but I’m a beginner. Thanks, Mark

Hello Mark,

there are no dumb questions, only dumb answers (: Where did you get that 50MB from? When you compile for your board then you have a binary representation of the source code parts that are necessary for your board + the desired modules configured in the Makefiles. Additionally, the compiler does a good job at optimizing the binary for a smaller size. Furthermore, there are plenty of extra tools in the RIOT folder that have nothing to do with your board per se, but merely assist in testing RIOT or doing other housekeeping stuff.

When I build the default project residing in the examples folder for the udoo platform, then I get a binary blob which would take up 12,5kb of ROM on the flash.

Did that help?

Best, Cenk

Hi Cenk,

Yes that helped a lot! Thank you :smiley: But now I have another doubt: let’s say my folder/project is the directory “A” in the folder example of RIOT, before your answer I thought that all the folder A would go to the board, so to see if my project was too big to fit into the board I would simply right click on the folder A, then properties and I saw how big was the folder, but now from your answer I got that only a binary, plus other modules configured in the makefile go to the board. Right? Well, then how can I know the size of that “binary plus the other modules” which goes to the board? So I can see if my project is to big or not.

Thanks again, Mark

Regards, Mark

Hi Mark,

From Q: How much memory (ROM/RAM) will it need?

text data bss dec hex filename 77732 296 24272 102300 18f9c applications/sixlowapp/bin/iot-lab_M3/sixlowapp.elf The required RAM is data + bss, ROM is text + data.

Best Regards, Bruno Melo.

Thank you so much to you all

Regards Mark