An interview with Stephen Smith, author of RP2040 Assembly Language Programming #Python @Code

Apress will release in November the book RP2040 Assembly Language Programming: ARM Cortex M0+ on the Raspberry Pi Pico. Adafruit asked author Stephen Smith some questions about himself and the book:

Is this your first book? What do you do, a little about yourself, etc.
No, this is my third book on Assembly Language programming, all with Apress. The first is “Raspberry Pi Assembly Language Programming”, that covers ARM 32-Bit Assembly Language including the FPU and NEON coprocessors. The second is “Programming with 64-Bit ARM Assembly Language” including 64-bit Raspberry Pi along with programming Apple and Android phones and tablets. I also wrote two Science Fiction novels: “Influence” and “Unification”, available on Amazon.
What inspired you to write a book on RP2040 assembly?
I wanted to write a book on microcontrollers or Arduino, but there is such a variety of them, it’s hard to write a book for a large enough audience. Then when the RP2040 was announced, that was really exciting, a full 32-bit dual core processor with lots of memory, PIO and a ton of integrated components, I was really excited. The first board I managed to obtain was an Adafruit RP2040 Feather which worked great. After playing with the RP2040 SDK and experimenting with “thumb” Assembly Language and the PIO, I knew I wanted to write a book and submitted a proposal to Apress which was enthusiastically accepted.
Who is your target audience? Who do you think will benefit most from this?
This book is for people that have already mastered at least one high level programming language such as Python or C and now wishes to take their programming to the next level. I think it’s important that programmers know the underlying architecture they are programming and how things work at a lower level. In the microcontroller world, you may need to use Assembly Language to interface to the hardware that is part of your project, or you may need to get the best performance possible out of these powerful little chips.
Why write a book on RP2040 assembly when there are other resources available? Why not blog posts or a video series? Or do you plan on doing some videos and more later for the book?
There is a lot of reference type documentation on the RP2040 and a lot of information on the RP2040 SDK, but reading this isn’t a good way to learn how things work. My book endeavors to teach the low level architecture and Assembly Language programming in an approachable way. To show how to put the individual parts together, how to start simple and combine things to write larger programs. To give a good overview of how the various hardware components are designed and used.
I have a blog where I’ll be writing complementary content. I created a video last year for LinuxFest Northwest and would like to create some more videos.
Do I need a particular background to follow along? Do you have any recommendations?
The best background is if you know C or Arduino C, but proficiency with any high level language is fine. The only real way to learn programming is by doing, so you should have an RP2040 board, and I recommend programming it from a full Raspberry Pi.
What’s your favorite chapter?
My favorite chapter is “Chapter 14: How  to Connect Pico to IoT” which is the last chapter in the book where we create a larger project to collect data from the RP2040 using its built-in temperature sensor and send it to a Raspberry Pi. In this project we put all the knowledge from the previous chapters to work and produce a useful program 100% in Assembly Language, all talking directly to the RP2040 hardware registers.
The niftiest peripheral on the RP2040 is the PIO engine – what is the coolest thing you’ve seen implemented with PIO? Likewise, is there anything that you want to see ported to PIO that hasn’t been yet?
The coolest thing I’ve seen is generating VGA output to drive a monitor. I’m starting to see PCBs produced that you can plug multiple RP2040 chips into. I think the PIOs can be used to enhance inter-processor communications. If the RP2040 gets a little faster, then an HDMI driver would be really cool. And of course PIO Assembly Programming is covered in my book.
So I’ve finished reading this book, what is the next step?
To start incorporating Assembly Language into your projects, Either to achieve better performance or to get the RP2040 to perform tasks that aren’t supported from MicroPython or C.
Are you planning any additional books in the future?
I’ll definitely be writing more books, but I haven’t decided what is next. I’m keeping an eye on the RISC-V world, but until they have something equivalent to the Raspberry Pi, I’m not sure if it’s worthwhile. The technology world moves quickly, so my next book could easily be on something that hasn’t been announced yet.

Thank you Stephen for your responses!

You can find RP2040 Assembly Language Programming: ARM Cortex M0+ on the Raspberry Pi Pico at bookstores soon and preorder online at Apress and Amazon.

Website: and Twitter: @smist08

Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at !

No Comments

No comments yet.

Sorry, the comment form is closed at this time.