Picoware (Open-Source Custom Firmware)

Hey! I created an open source firmware called “Picoware”. It has support for 3 languages/SDKs (Circuit Python, Arduino IDE, and C/C++ SDK) and already has many features included (social media, weather, GPS, Bluetooth functions, Games, Screensavers, WiFi functions, and more).

Here’s the GitHub link: GitHub - jblanked/Picoware: Open-source custom firmware for PicoCalc, Video Game Module, and other Raspberry Pi Pico devices

Let me know your thoughts and if you’re interested in helping.

12 Likes

Looks promising! Let us know when there is a PicoCalc version available. I will definitely try it out.

1 Like

Thanks for your support! It shouldn’t take longer than 1 week after I receive the Pico Calc. I’ll keep this forum updated.

1 Like

This looks good!

I see you are using TFT_eSPI. Here is a starting config for the LCD:

The model is not an ILI9488 per se, so you might have to poke around. Using the LCD without a framebuffer is rather slow. Better use 16bit or 3bit mode and send full frames from the second core. You can get around 40fps that way.

Keyboard driver: GitHub - cuu/arduino_picocalc_kbd: Arduino library for interfacing the PicoCalc Keyboard over I2C

There is also a nice starter pack by BlairLeduc: GitHub - BlairLeduc/picocalc-text-starter: Get started on the PicoCalc using the Pico-Series C/C++ SDK.
It’s not Arduino, but it includes basic building blocks in C.

3 Likes

This is a huge step forward (especially the keyboard), thanks a lot Ben!! I’ll look into those and plan integration for when my Pico Calc arrives. Also feel free to fork and request edits/new additions; all contributions are welcomed.

That depends. The text-only display driver in my starter pack is limited by the lcd refresh rate of 60fps. It is performing full screen updates at over 400 fps, but that is rather an apples to oranges comparison because it is not updating a full frame manually.

It leverages the displaying controller to do the heavy lifting of a text-only display that requires a lot less bandwidth. It is heavily optimized for exactly this narrow use case.

1 Like

One thing to consider is that using RGB565 color for a full 320x320 framebuffer will eat 200K of RAM. As a result, to save RAM, I opted for a RGB332 framebuffer for my graphical PicoCalc terminal emulator, with up-converting to RGB565 using a lookup table per scanline transmitted to the display at the time of actually transmitting data.

I agree! Picoware currently uses 8-bit double-buffering (there’s an option for 16-bit too), and with my 320x240 custom setup, we still have about 50k bytes free.

I really want to create an external app system (much like the Flipper Zero’s) that will load apps from the SD card. I want to really make use of the Calc’s 8MB PSRAM too.

1 Like

PSRAM is hard to use.

On pico1 you can copy data from and to it, but not use it in the RAM address space (I have seen a workaround using a hardfault handler but I don’t know how fast that can be). Performance is not great (an order of magnitude slower than onchip RAM).

On pico2 the pin that enables putting it in RAM address space is not wired / available.

On pimoroni pico 2, you might be able to use the onboard PSRAM (haven’t tried) but it suffers from the same problem as pico2.

I need to look into your code, then :wink:

With the proper configuration using the on-board PSRAM of the Pimoroni Pico Plus 2 should not be a problem. For zeptoforth it can be enabled, and it can be used as a RAM disk containing a FAT32 filesystem.

1 Like

Interesting; this’ll be good to know for sure. Do you have any reference links?

You can see how to configure the PSRAM on an RP2350B in the following source file: zeptoforth/src/rp2350/psram.s at master · tabemann/zeptoforth · GitHub. Note that this code is in ARM Cortex-M assembly.

Also note that on the Pimoroni Pico Plus 2 and Pico Plus 2 W the Chip Select pin for the PSRAM is tied to GPIO 47, which is a ‘high’ GPIO only available on the RP2350B.

Looks like Arduino IDE greatly simplified using PSRAM: RP2350 PSRAM Support — Arduino-Pico 4.6.0 documentation

Circuitpython auto-detects if PSRAM is available? PSRAM Test | Adafruit Feather RP2350 with HSTX | Adafruit Learning System

My Pico Calc just made it into the U.S. so it should be here in a few days at the latest. I’m very excited to start the integration.

1 Like

Thx a ton for an interesting solution! I’d be glad to run some kind of OS where i can learn how to make apps.

If this can be useful for you, here are first test results:
Arduino version on Picocalc: screen does not initialize. During compilation i also had to install extra libs (ArduinoHTTP and few more).
There is typo in Picoware library (weather app is located in Weather directory, but in applications.hpp path uses “weather” directory.

Things to consider: adding serial debug (usb-c or microusb). Maybe i overlooked it.

Python version: i got weird bug “GP10 is in use” that prevents ViewManager from start, i digged the whole project and made sure GP10 is used only for display SCK pin in picocalc. I also added another code section in system/draw.py to define picocalc display board, but after i did it, i got “GP10 is in use” message.
Maybe i defined display twice somehow, maybe it’s micropython/circuitpython bug. I tried pico 2040 and Pico 2W original boards.

1 Like

Thanks for taking the lead! Do you have a fork of Picoware somewhere? I’d love to take a look.

Do you remember which extra libraries you had to install (other than the ones listed in Development.md) for the ArduinoIDE version?

I also saw that weird “GP10 is in use” (in the circuit python version) on my custom Pico setup (I attempted to solve that with an init loop). I think it has something to do with the framebuffer/display init with the driver that adafruit provides. I didn’t have this issue in micropython TFT projects. The main reason I went with circuit python is because micropython (currently) doesnt have a PicoDVI library

1 Like

Good news! My PicoCalc is out for delivery and is expected to be here within 12 hours :fire:

2 Likes

I started a fork of Picoware here for the Pico Calc: GitHub - jblanked/Picoware at pico-calc

My PicoCalc should be here within 6 hours though typically UPS delivers to my area about 2-3 hours from now.

1 Like