Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

For Adafruit customers who seek help with microcontrollers

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
SeattleDavid
 
Posts: 100
Joined: Wed Sep 18, 2019 2:26 am

Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

Post by SeattleDavid »

When I check available memory on the CircuiyPy drive for a Pico W it shows a capacity of 502K for CircuitPython 8.0.2.

If I load the non-W image on a Pico W or Pico non-W it shows a capacity of 1MB.

The Pico has 2MB of total memory.

Can somebody direct me to where there is an explanation of why/how 2MB of storage gets whittled down to just ½ MB?

Also, can DualBank be disabled to get more memory? It seems like an "expensive" feature.

I'm new to this, so if I am in the wrong spot, a kind direction to where I should ask questions like this would be appreciated.

Screenshot 2023-02-17 at 23.39.08.png
Screenshot 2023-02-17 at 23.39.08.png (63.75 KiB) Viewed 1132 times

User avatar
neradoc
 
Posts: 542
Joined: Wed Apr 27, 2016 2:38 pm

Re: Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

Post by neradoc »

Hi, the pico W does not implement dualbank. All the space is taken by the Circuitpython firmware, and some more space was needed to make the wifi code fit, which is why there's less space than on a pico. The amount remaining is a compromise between drive space and possible future expansion of the firmware size (for bluetooth in particular).

User avatar
SeattleDavid
 
Posts: 100
Joined: Wed Sep 18, 2019 2:26 am

Re: Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

Post by SeattleDavid »

OK. So if I understand, of the 2MB of memory, ¾ of it is consumed by system overhead and ¼ of it (500K) is available for the application.

If my understanding is correct, that’s pretty tight!

There are some Pico clones out there with more memory. Will the Pico 8.0.2 built automatically recognize the added memory or does the build also define the memory limit?

That is, if the Pico clone is designed to identically match the Raspberry version except having more memory would that additional memory be recognized by CircuitPython 8.0.2?

User avatar
neradoc
 
Posts: 542
Joined: Wed Apr 27, 2016 2:38 pm

Re: Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

Post by neradoc »

We have Circuitpython support for many RP2040 boards with different flash sizes, including some pico "clones". One or more of those builds could work on a generic clone, it depends on the flash chip that is used, and the board module could be incorrect but that's not a big deal. If it's not supported, board definitions could be added to Circuitpython.

Here is a rather generic 16 MB pico clone for example that seemingly only differs by having a button on GP23:
https://circuitpython.org/board/weact_studio_pico_16mb/

There is no pico W clone that I know of however.
For more file space, an SD card breakout can be added, though it's not accessible as a drive when plugging the board at present time and must be loaded on its own.

User avatar
SeattleDavid
 
Posts: 100
Joined: Wed Sep 18, 2019 2:26 am

Re: Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

Post by SeattleDavid »

Thank you. Good informative reply.

I was hoping that the build would automatically adjust for differing EEPROM sizes, but I understand that it's baked into the build. A little less convenient, but workable.

User avatar
neradoc
 
Posts: 542
Joined: Wed Apr 27, 2016 2:38 pm

Re: Pico W Available Memory with CircuitPython 8.0.2 is just ½ MB. Why?

Post by neradoc »

My understanding is that to be used in fast mode, the flash chip model must be known on build, and Circuitpython has a way to specify a list of models to check and their parameters. But the actual size seems to be detected anyway, the question is whether or not the correct settings are then used...
In any case, there should be no harm in trying the pico build on a clone with more flash.
If it doesn't work, just flash another one.

Locked
Please be positive and constructive with your questions and comments.

Return to “Microcontrollers”