Markk
Well-known member
Hi
I'm a newcomer to "embedded" and evaluating different microcontrollers and so far Teensy 3.x is at the top.
But actually I'm not really happy.
I might have missed something, but so far there seems to be this inherent "gap" between the world of microcontrollers and the world of SoCs like Raspberry Pi etc. One world stops at ~100kBytes, ~100MHz, the other starts at ~100MB, ~500MHz (typical). And along with the spec, there is the corresponding gap in power consumption, complexity, price, etc.
Why?
Strangely both worlds now employ 32bit and even the CPU cores seem to be quite similar. So I can't see an inherent technical reason for having this gap.
Especially the RAM gap is almost unbelievable for the newcomer. Why on earth does a microcontroller like the Teensy's just have 64k RAM? Not 64M (which would be about OK) but 64k! A full factor of 1000(!) to the smallest of the SoC world.
Why!?
I can see that there are many applications where you don't need much RAM and I can see how RAM adds many transistors to the chip, bloats the die footprint, increases rate of defective chips etc. I can see that there is a market for 1 cent microcontrollers and 10 cents are already too much.
But do those "cheap" applications really need a Cortex-M4 processor? What on earth can you process at 96MHz, 32bit when you only have 64k RAM? This seems to be a grotesque mismatch when you look at the evolution of CPUs. It's like putting Usain Bolt in a phone booth!
But isn't there a (big) market for more advanced applications too?
My project should be powered by a small solar panel, so it needs to be efficient. The project involves creating and maintaining histograms. When I store one histogram in full 32bit, the RAM's half gone! I would like to maintain many of those histograms for different time spans, calculate differences (trends) etc. I may be able to reduce to 16bit, but then I would have to constantly watch over my shoulder for possible overflows, do scaling and other unnecessary ugly stuff. Same goes for the time span aggregates. Might wrestle with swapping them in and out from the SD card but this is really adding so much complexity, so many opportunities to introduce bugs, so many reasons for the code to become unmaintainable and inflexible, that what actually was a simple job in the first place, becomes a nightmare!
Or have I missed something? Is there a system (similar to Teensy 3.1 but with 100 times more RAM) that I have overlooked?
All insights (including simple confirmation that there is no solution) are welcome.
-Mark
I'm a newcomer to "embedded" and evaluating different microcontrollers and so far Teensy 3.x is at the top.
But actually I'm not really happy.
I might have missed something, but so far there seems to be this inherent "gap" between the world of microcontrollers and the world of SoCs like Raspberry Pi etc. One world stops at ~100kBytes, ~100MHz, the other starts at ~100MB, ~500MHz (typical). And along with the spec, there is the corresponding gap in power consumption, complexity, price, etc.
Why?
Strangely both worlds now employ 32bit and even the CPU cores seem to be quite similar. So I can't see an inherent technical reason for having this gap.
Especially the RAM gap is almost unbelievable for the newcomer. Why on earth does a microcontroller like the Teensy's just have 64k RAM? Not 64M (which would be about OK) but 64k! A full factor of 1000(!) to the smallest of the SoC world.
Why!?
I can see that there are many applications where you don't need much RAM and I can see how RAM adds many transistors to the chip, bloats the die footprint, increases rate of defective chips etc. I can see that there is a market for 1 cent microcontrollers and 10 cents are already too much.
But do those "cheap" applications really need a Cortex-M4 processor? What on earth can you process at 96MHz, 32bit when you only have 64k RAM? This seems to be a grotesque mismatch when you look at the evolution of CPUs. It's like putting Usain Bolt in a phone booth!
But isn't there a (big) market for more advanced applications too?
My project should be powered by a small solar panel, so it needs to be efficient. The project involves creating and maintaining histograms. When I store one histogram in full 32bit, the RAM's half gone! I would like to maintain many of those histograms for different time spans, calculate differences (trends) etc. I may be able to reduce to 16bit, but then I would have to constantly watch over my shoulder for possible overflows, do scaling and other unnecessary ugly stuff. Same goes for the time span aggregates. Might wrestle with swapping them in and out from the SD card but this is really adding so much complexity, so many opportunities to introduce bugs, so many reasons for the code to become unmaintainable and inflexible, that what actually was a simple job in the first place, becomes a nightmare!
Or have I missed something? Is there a system (similar to Teensy 3.1 but with 100 times more RAM) that I have overlooked?
All insights (including simple confirmation that there is no solution) are welcome.
-Mark