2
\$\begingroup\$

The 32-bit ARM SAM3X8E has 512KB ROM and 96KB of RAM onboard. This means that if I flash a binary to it that is, say, 400KB in size, and that consumes, say, 80KB RAM (max) at runtime, then that binary will "fit" on that MCU. However, I would not be able to flash an 800KB-sized binary onto the chip, nor would I be able to run a binary that consumes 1MB RAM at runtime. Makes sense.

Then there's the latest Raspberry Pi, sporting a 32-bit ARM A7 that has 1GB RAM on it (I couldn't find its ROM size). This has me wondering about what kind of voodoo and sorcery is at play with these ARM MCUs that are in the RPi:

  • Is the ARM A7 really that much more powerful (1GB vs 96KB?!?!) than the SAM3X8E?; or
  • Does the RPi have some kind of "supporting hardware" onboard that helps scale/extend the ARM A7 beyond its normal, KB-scale, capabilities?; or
  • Am I completely misunderstanding the A7's 1GB capability, and perhaps that 1GB is coming from a combination of the RPI's A& plus off-MCU memory, somewhere else on the board? In this case then I'm wondering what the RPi's MCU's ROM/RAM limits actually are, and why a SAM3X8E couldn't have been used instead.

Anyway I cut it, it just doesn't add up or make sense to me. How is one ARM product seemingly 10,000 times larger (memory capacity-wise) than another?!?

\$\endgroup\$
1
  • \$\begingroup\$ Note that all of this RAM draws power. Running a RaspberryPi from battery means using a mobile phone power bank and draining it within hours, while small microcontrollers can be run off a few AAA cells for weeks (not all of the difference is power consumed by RAM, obviously). \$\endgroup\$ – Simon Richter Mar 1 '18 at 18:18
4
\$\begingroup\$

The RAM on the Raspberry Pi is off the CPU. On the original models this was in a package-on-package - the newer models have it mounted underneath the CPU, on the other side of the board.

You may well find that you could extend the SAM3X8E in the same way - most MCUs have an external memory interface for this sort of thing - search the datasheet for EMIF.

The reason you can't find the Raspberry Pi's ROM size is that it has a small binary blob on the CPU that then supports boot from flash - again external, and in the form of a micro SD card.

Oh, and as to why the Raspberry Pi uses the CPU it does? Eben Upton works for Broadcom...

\$\endgroup\$
4
  • \$\begingroup\$ Thanks @stefandz (+1) - so is it fair to say that the ARM A7 is a microprocessor that has a pinout for an external memory bus, and because of that, can integrate with off-chip RAM? And, that the ARM SAM3X8E is a microcontroller that has no such external memory bus capabilities, and is therefore limited to the on-chip memory? If both those understandings are correct, then please just confirm them and I'll happily give you the "green check"! And if I'm still misunderstanding their difference, please just clarify for me. Thanks again! \$\endgroup\$ – smeeb Aug 13 '15 at 14:13
  • 1
    \$\begingroup\$ Technically (and this is a fine distinction, but an important one) the Broadcom BCM2835 is an SOC - en.wikipedia.org/wiki/System_on_a_chip This Wiki article covers the difference between MCUs and SOCs, but the lines can be blurred. The SAM3X8E does have an EMIF so it can interface with external memory if you wish. Overall the SAM3X8E is a bit more general purpose whereas the BCM2835 is tailored towards a mini Linux PC type configuration with an output display - a bit like the Pi! \$\endgroup\$ – stefandz Aug 13 '15 at 14:19
  • \$\begingroup\$ Thanks @stefandz (+1 again) - Sorry for the ignorant questions here, last 2 followups (I promise): (1) can you confirm that what I'm referring to as the "A7" is what you're calling the "BCM2835"? And (2) Can you point me in the direction of documentation that states the SAM3X8E has an external memory interface (I can't seem to find it)? Thanks again! \$\endgroup\$ – smeeb Aug 13 '15 at 14:29
  • \$\begingroup\$ (1): Sorry, it's actually the BCM2836 that is an A7 (if you scroll down on the wiki page you linked you can see it mentioned, along with the Raspberry Pi 2 being the target). I was thrown by you originally mentioning the Pi 1 (which has an ARM11 core). A7 and ARM11 are cores (central processor technology implementations) - BCM2835 and BCM2836 are specific parts that use those cores. (2): atmel.com/devices/sam3x8e.aspx "The 16-bit external bus interface supports SRAM, PSRAM, NOR and NAND Flash with error code correction." SRAM / PSRAM are memory - hence the bus interface is an EMIF. \$\endgroup\$ – stefandz Aug 13 '15 at 14:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.