-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RP2040 SPI RAM performance is very poor for most workloads #5
Comments
Is there any chance that yocto-8 project author will create external library to handle spi flash but only in C instead of C++? It will be first open source library available for everyone. Could be very helpful to a lot of people and it can open a door to more advanced projects like using QSPI ram via PIO for LCD double buffering or to compress/decompress large amount of data using minilzo or unzipLIB. We can use it as RAM for ucLinux too. I'm actually working on QSPI driver using 2 state machines but actually i get only dual spi and have some problems with that but i think i can make it work but it takes some time. Regards ;) |
The entire code for this lives at https://github.com/yocto-8/yocto-8/tree/main/src/arch/pico/extmem ... But this SPI RAM driver is very primitive (you can get away with ~100 LoC), and that code is essentially useless if you wanted to implement QSPI RAM using PIO, other than to serve as a reference alongside the datasheet for these PSRAM chips. For now, I don't have much time or interest in implementing this unfortunately :( |
That, of course, is only relevant if what you want is transparently using external RAM as if it was regular memory: If you need to do predictable bulk copies, such as with your double buffering example, then doing the reads explicitly from code is going to be much faster and much less hacky. Performance is still depressingly bad if you're doing anything remotely looking like random accesses :) |
There are several reasons for this:
The text was updated successfully, but these errors were encountered: