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.
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 https://github.com/RIOT-OS/RIOT/wiki/Board:-UDOO
And on this board, RIOT runs on the Arduino part of the hardware, not on the quad-core.
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.
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
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?
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…
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.
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?
Yes that helped a lot! Thank you
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.
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.
Thank you so much to you all