About the Raspberry Pi Pico
About the Host Computer
How to Solder and Wire
How to Install Software
A Simple Program to Ensure Things are WorkingChapter 2: Our First Assembly Language Program
About the ARM Processor
Computers and Numbers
CPU Registers
ARM Instruction Format
RP2040 Memory
About the GCC Assembler
Flashing LEDs in Assembly Language
Chapter 3: How to Build and Debug Programs
CMake
GNU Make
Print Statements
GDB
Chapter 4: Loading and Adding
Negative Numbers
Little Endian Format
How to Shift and Rotate
MOV/MVN
ADD/ADCSUB/SBC
Chapter 5: How to Controll Program Flow
Unconditional Branch
About the CPSR
Branch on Condition
About the CMP Instruction
Loops
If/Then/Else
Logical Operators
Design Patterns
Chapter 6: Thanks for the Memories
How to Define Memory Contents
How to Load a Register
PC Relative Addressing
How to Load from Memory
How to Index Through Memory
How to Store a Register
Hardware as Memory
Introduction to DMA
Chapter 7: How to Call Functions and Use the Stack
The Stack
Branch with Link
How to Nest Function Calls
Function Parameters and Return Values
How to Manage the Registers
Summary of the Function Call Algorithm
Stack Frames
Chapter 8: Interacting with C and the SDK
How to Call C Routines
How to Call Assembly Routines from C
How to Deal with Inline C Routines
How to Use SDK Header Files
Chapter 9: How to Program the Built-in Hardware
The GPIO Pins
Analog to Digital
PWM
Chapter 10: How to Set and Catch Interrupts
Overview
How to Create an Interrupt Handler
Timers Example
Chapter 11: How to Initialize and Interact with Programmable I/O
Overview
SDK Support
PIO Instructions
How to Control Timing
Examples
Chapter 12: How to Connect Pico to IoT
Connectivity Options
Using a UART or I2C
Internet Basics
Security
Chapter 13: Multiplication, Division and Floating Point
Multiplication Coprocessor
Division Coprocessor
Interpolation
Floating Point Library
Chapter 14: Multiprocessing
Using Both CPU Cores
How to Synchronize and Share Resources
Audience: Intermediate