8+ MB XIP QSPI Flash version of a small M4-class platform?
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

8+ MB XIP QSPI Flash version of a small M4-class platform?

by debrouxl on Thu Apr 25, 2019 2:31 am

TL;DR: I'd like to raise the matter of larger Flash memory versions of the smaller footprint M4 family members, i.e. the Metro M4 and most of all the ItsyBitsy M4 Express and Feather M4 Express, which would make it possible to target new use cases, probably not just mine.

In detail...

1) Why on earth do I want small footprint hardware with lots of Flash memory?
I have another weird use case for CircuitPython ;)
The first one was the TI-Python Adapter, a small I/O-less ATSAMD21-based platform recently created by TI Education to be a companion device for the TI-83 Premium CE graphing calcs which use an eZ80-based ASIC (pending a new version of that model which integrates Python functionality inside the calculator's plastic casing, in an unspecified manner). On the TI-Python Adapter, or equivalent, we want DPFP, cmath, special math functions and MPZ long integers for algorithm-oriented school teaching purposes, but we can let go of I/O support.
The other use case I'm going to describe is a possibly slightly reduced build of the powerful giac CAS ( https://www-fourier.ujf-grenoble.fr/~parisse/giac.html ) wrapped by a thin Python layer, embedded into one of the boards supported by CircuitPython and/or MicroPython, to provide a tiny platform for expanding a lower-end calculator's functionality with CAS functionality.
The development process needs to be easy because we're doing that on our free time and money. For potential users, the target board needs to be cheap (ideally less than 20 USD, definitely less than 30 USD), small, and shall not provide "too much" I/O capability, especially wireless communication, which is superfluous for teaching algorithmic programming (and a non-starter for standardized testing, not all of which forbids the usage of a CAS, but external devices are usually forbidden in such setups anyway).

Admittedly, the set of users for this particular use case might not be that large; however, more Flash memory would open up other use cases.

2) Giac on a low-end platform?
giac is known to be scalable down to mildly low-end devices. Bernard Parisse himself ported the giac engine to multiple graphing calculator models (TI-Nspire series, Graph 90+E / fx-CG50, and giac is at the core of the HP Prime's CAS), and zardam ported it to a modified NumWorks calculator featuring a STM32F4 SoC (256 KB of RAM), into which he soldered a 8 or 16 MB QSPI NOR Flash chip onto the appropriate unpopulated area of the PCB. zardam wrote on TI-Planet that the binary of his NumWorks build of giac (without a Python wrapper) was slightly less than 4 MB. The fx-CG50 version of giac, for a SH4, was crammed into less than 2 MB because of a software limit, but the feature set suffered.
8 MB would be a safer target than 4 MB, all the more TI has implemented a protection against devices not running their patched firmware (sigh...), and in time, it might become necessary to store the full image of a TI-Python Adapter firmware in order to pose as a genuine TI-Python Adapter...

3) Which board?
* the ItsyBitsy M4 Express is nice because it's small and cheap;
* the Feather M4 Express has more I/O and a prototyping area, which we don't need, and it's more expensive;
* the Metro M4 is borderline large, has I/O and headers we don't need, and its price tag is nearly twice that of the ItsyBitsy M4 Express;
* the NeoTrellis M4 and Grand Central M4 Express already have a 8 MB Flash chip, but they are even larger, have even more superfluous / unwanted I/O and are too expensive;
* the Teensy series has too much I/O and is too expensive;
* higher-end ESP32-based platforms have megabytes of RAM and 8 or 16 MB of Flash, a working port of MicroPython, and they're cheaper, but WiFi / BLE chips are non-starters;
* Pyboard D series devices such as PYBD-SF6-W4F2 have WiFi + BLE and they're way too expensive anyway;
* the MAX32620FTHR / MAX32630FTHR are fairly small, they have I/O and would support a QSPI XIP Flash chip, but there's no CircuitPython/MicroPython port to those boards, AFAICT, so no easy development;
* MattairTech's Xeno Mini exists in a 16 MB Flash version, but that version is borderline expensive, and the board it has too much I/O;
* any other suitable board?

4) Higher capacity flash chips, how?
* ItsyBitsy M4 Express / Feather M4 Express: the packages of the GD25Q16C chips used in these seem to be USON8 3x2mm, and the GD25Q32C and GD25Q64C only exist in respectively 3x3mm and 4x4mm USON8 packages, at the smallest. The GD25Q32C's USON8 3x3mm version has the same 0.5mm pitch and pinout as the GD25Q16C's USON 3x2mm version, and would be on the verge of fitting on the ItsyBitsy M4 Express, without the "01C" component next to the "MO" pin... On the Feather M4 Express, the Flash chip is too close to the ATSAMD51 to envision using even a 3x3mm chip on the existing pin pads, though.
With some form of adapter / redistribution layer, possibly a thick one so that we can use the third dimension to offset the chip enough to solve mechanical collisions with components near the pin pads of the PCBs, larger USON8 / WSON8 chips with different pitch could be accessible... but I can't find USON8 -> larger USON8 / WSON8 (/ SOP8) adapters, and there must be a good reason for that, though I can't really see it (soldering issues ??).

* a path of lower resistance would be equipping the Metro M4 with the GD25Q64C chips you already use on the NeoTrellis M4 / Grand Central M4 Express (all three boards seem to use the same Flash chip package ?). A header-less, USB-power-only version of the Metro M4 should have a price tag closer to that of the Feather M4 Express, but the Metro M4 PCB's area will remain 6x larger than that of the ItsyBitsy M4 Express' PCB :(

Thanks for reading up to here :)

Posts: 1
Joined: Thu Apr 25, 2019 2:21 am

Please be positive and constructive with your questions and comments.