2

I'm trying to create an array in Arduino Due and when the array exceeds the size of 32768 integer elements the compiler (Atmel Studio) complains.

I read that Arduino Due SRAM size is 96K in 2 banks. 64Kb and 32Kb.

Anyone knows any details?

2 Answers 2

2

Size of int in arduino due is 4Bytes. If you're trying to create array of 32768 integers, it means you need 128kB of free space.

0
1

I've read in several places that e.g. PROGMEM const int foo[] = { 1, 2, 3, ... } would work, but was unable to do it in my environment ( debian, arduino-mk package ). I had a number of arrays I needed to commit to flash to conserve sram. This worked fine for all variables, but not for arrays. Try that... What say the wizards?

Note to moderators and others: I know I am not answering the question definitively, but it is relevant to OP's question.

3
  • On ARM chips, like all Princeton architecture chips, you don't need to do fancy things with PROGMEM - just make them const.
    – Majenko
    Jul 14, 2016 at 22:35
  • So it's completely unnecessary? How awesome is that ;)
    – user400344
    Jul 14, 2016 at 22:36
  • PROGMEM is used to lock const data into flash and prevent CRT0 from copying it into RAM. On ARM it doesn't need to copy it into RAM because it can directly access it without special register instructions, so the PROGMEM isn't needed.
    – Majenko
    Jul 14, 2016 at 22:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.