Last time, I covered the basics of doing ARM assembly programming on the Raspberry Pi Pico’s RP2040 microcontroller. Now it’s time to get to grips with the dozens of instructions to which the RP2040’s Cortex-M0+ cores respond.
Category Archives: Raspberry Pi
Get Started with ARM Assembly on the Pi Pico
When I got my first microcomputer, I already knew Basic programming. My machine had a different Basic dialect from the one I’d learned at school, and there was a stack of graphics and sound functionality to get to grips with too, but it wasn’t long before I felt I’d mastered the high-level stuff and that it was time to move on to machine code. That’s how I’ve come to feel about the Raspberry Pi Pico’s RP2040 chip. The time’s right to learn ARM assembly programming on the Pico.
FreeRTOS and the Pi Pico: timers
I made use of FreeRTOS’ timer functionality in the most recent post in this series, but I didn’t go into detail because the post was focused on other features. It’s time to address that deficiency. Today I’m talking about timers.Continue reading
How to do DNS over HTTPS on a Raspberry Pi
Last year, at the recommendation of a work colleague, I grabbed one of my spare Raspberry Pi 4s and installed the DNS proxy and content blocker Pi-Hole. It’s now handling all the DNS queries on my home network. Recently, I upgraded my Pi-Hole server to make its DNS requests over HTTPS.
FreeRTOS and the Pi Pico: interrupts, semaphores and notifications
One of the reasons why an embedded application developer might choose to build their code on top of a real-time operating system like FreeRTOS is to emphasise the event-driven nature of the application. For “events” read data coming in on a serial link or from an I²C peripheral, or a signal to a GPIO from a sensor that a certain threshold has been exceeded. These events are typically announced by interrupting whatever job the host microcontroller is engaged upon, so interrupts are what I’ve chosen to examine next in my exploration of FreeRTOS on the Raspberry Pi RP2040 chip.
FreeRTOS and the Pi Pico: sizing up scheduling
FreeRTOS scheduling is hard in as much at can be difficult to decide how to configure it. I wanted to try and figure out the options.
The popular real-time operating system provides the
configUSE_PREEMPTION as settings values. You can add them to your
FreeRTOSConfig.h file Tasks themselves can be assigned priority values, and there are API calls to allows tasks to sleep, to yield up the CPU, and be suspended and subsequently resumed.
How to use FreeRTOS with the Raspberry Pi Pico
While documenting Twilio’s in-development Microvisor IoT platform, I’ve been working with FreeRTOS, the Amazon-owned open source real-time operating system for embedded systems. Does FreeRTOS work with the Raspberry Pi Pico’s RP2040 chip? I wondered. It turns out that it can, and this is how you set up a very basic FreeRTOS project which also serves as a demo.
Build a Raspberry Pi Pico WiFi IoT Device
Last Summer, I explored using the Raspberry Pi Pico as the basis of a cellular IoT device. That done, I wanted to try out WiFi connectivity. To do so, I ordered a Pimoroni PicoWireless.Continue reading
Recreating the Motorola 6809 in a Raspberry Pi Pico
This is a little project I’ve been working off and on now for some time. It’s one of those efforts where you do a heap of work and then leave it alone for months on end while you go off and do something else entirely. Eventually you come back and do a little more, and then something else distracts you. But you know you’ll complete it in the end, and the journey is as much fun as reaching the destination.Continue reading
Raspberry Pi Pico development on the iPad Pro: almost, but not quite there
I recently upgraded my ageing iPad to a new iPad Pro 11. This has a USB C port, and I immediately wondered if I could use this to connect a USB C equipped Raspberry Pi RP2040-based device like the Adafruit Feather RP2040, and do development on the iPad rather than a Mac. The answer is a cautious ‘yes’, provided you can work to a very specific limitation: your RP2040-side application environment has to be CircuitPython.Continue reading