├── .bazelignore
├── .bazelrc
├── .bazelversion
├── .github
├── pull_request_template.md
└── workflows
│ ├── bazel_build.yml
│ ├── choco_packages.config
│ ├── cmake.yml
│ ├── macOS.yml
│ ├── multi-gcc.yml
│ ├── scripts
│ └── generate_multi_gcc_workflow.py
│ └── windows.yml
├── .gitignore
├── .gitmodules
├── BUILD.bazel
├── CMakeLists.txt
├── CONTRIBUTING.md
├── LICENSE.TXT
├── MODULE.bazel
├── README.md
├── WORKSPACE
├── bazel
├── BUILD.bazel
├── README.md
├── config
│ └── BUILD.bazel
├── constraint
│ └── BUILD.bazel
├── defs.bzl
├── generate_version_header.py
├── include
│ └── pico
│ │ └── config_autogen.h
├── pico_btstack_make_gatt_header.bzl
├── platform
│ └── BUILD.bazel
├── toolchain
│ ├── BUILD.bazel
│ ├── clang.BUILD
│ ├── configurable_feature.bzl
│ ├── gcc_arm_none_eabi.BUILD
│ └── objcopy.bzl
└── util
│ ├── BUILD.bazel
│ ├── label_flag_matches.bzl
│ ├── multiple_choice_flag.bzl
│ ├── sdk_define.bzl
│ └── transition.bzl
├── cmake
├── Platform
│ └── PICO.cmake
├── generic_board.cmake
├── pico_pre_load_platform.cmake
├── pico_pre_load_toolchain.cmake
├── pico_utils.cmake
└── preload
│ ├── platforms
│ ├── combined-docs.cmake
│ ├── host.cmake
│ ├── rp2040.cmake
│ ├── rp2350-arm-s.cmake
│ └── rp2350-riscv.cmake
│ └── toolchains
│ ├── pico_arm_clang_arm.cmake
│ ├── pico_arm_cortex_m0plus_clang.cmake
│ ├── pico_arm_cortex_m0plus_gcc.cmake
│ ├── pico_arm_cortex_m23_gcc.cmake
│ ├── pico_arm_cortex_m33_clang.cmake
│ ├── pico_arm_cortex_m33_gcc.cmake
│ ├── pico_riscv_gcc.cmake
│ ├── pico_riscv_gcc_zcb_zcmp.cmake
│ └── util
│ ├── find_compiler.cmake
│ ├── pico_arm_clang_common.cmake
│ ├── pico_arm_gcc_common.cmake
│ └── set_flags.cmake
├── docs
├── CMakeLists.txt
├── Doxyfile.in
├── DoxygenLayout.xml.in
├── examples.md
├── footer.html
├── header.html
├── index.h
├── logo-mobile.svg
├── logo.svg
├── main.css
├── main.js
├── mainpage.md
├── normalise.css
├── pico.jpg
├── rp2040.png
├── search.svg
├── styles.css
└── weblinks_page.md
├── external
└── pico_sdk_import.cmake
├── pico_sdk_init.cmake
├── pico_sdk_version.cmake
├── src
├── BUILD.bazel
├── CMakeLists.txt
├── boards
│ ├── BUILD.bazel
│ └── include
│ │ └── boards
│ │ ├── 0xcb_helios.h
│ │ ├── adafruit_feather_rp2040.h
│ │ ├── adafruit_feather_rp2040_usb_host.h
│ │ ├── adafruit_feather_rp2350.h
│ │ ├── adafruit_itsybitsy_rp2040.h
│ │ ├── adafruit_kb2040.h
│ │ ├── adafruit_macropad_rp2040.h
│ │ ├── adafruit_qtpy_rp2040.h
│ │ ├── adafruit_trinkey_qt2040.h
│ │ ├── amethyst_fpga.h
│ │ ├── archi.h
│ │ ├── arduino_nano_rp2040_connect.h
│ │ ├── cytron_maker_pi_rp2040.h
│ │ ├── datanoisetv_rp2040_dsp.h
│ │ ├── datanoisetv_rp2350_dsp.h
│ │ ├── defcon32_badge.h
│ │ ├── eetree_gamekit_rp2040.h
│ │ ├── garatronic_pybstick26_rp2040.h
│ │ ├── gen4_rp2350_24.h
│ │ ├── gen4_rp2350_24ct.h
│ │ ├── gen4_rp2350_24t.h
│ │ ├── gen4_rp2350_28.h
│ │ ├── gen4_rp2350_28ct.h
│ │ ├── gen4_rp2350_28t.h
│ │ ├── gen4_rp2350_32.h
│ │ ├── gen4_rp2350_32ct.h
│ │ ├── gen4_rp2350_32t.h
│ │ ├── gen4_rp2350_35.h
│ │ ├── gen4_rp2350_35ct.h
│ │ ├── gen4_rp2350_35t.h
│ │ ├── hellbender_0001.h
│ │ ├── hellbender_2350A_devboard.h
│ │ ├── ilabs_challenger_rp2350_bconnect.h
│ │ ├── ilabs_challenger_rp2350_wifi_ble.h
│ │ ├── ilabs_opendec02.h
│ │ ├── machdyne_werkzeug.h
│ │ ├── melopero_perpetuo_rp2350_lora.h
│ │ ├── melopero_shake_rp2040.h
│ │ ├── metrotech_xerxes_rp2040.h
│ │ ├── net8086_usb_interposer.h
│ │ ├── none.h
│ │ ├── nullbits_bit_c_pro.h
│ │ ├── phyx_rick_tny_rp2350.h
│ │ ├── pi-plates_micropi.h
│ │ ├── pico.h
│ │ ├── pico2.h
│ │ ├── pico2_w.h
│ │ ├── pico_w.h
│ │ ├── pimoroni_badger2040.h
│ │ ├── pimoroni_interstate75.h
│ │ ├── pimoroni_keybow2040.h
│ │ ├── pimoroni_motor2040.h
│ │ ├── pimoroni_pga2040.h
│ │ ├── pimoroni_pga2350.h
│ │ ├── pimoroni_pico_plus2_rp2350.h
│ │ ├── pimoroni_pico_plus2_w_rp2350.h
│ │ ├── pimoroni_picolipo_16mb.h
│ │ ├── pimoroni_picolipo_4mb.h
│ │ ├── pimoroni_picosystem.h
│ │ ├── pimoroni_plasma2040.h
│ │ ├── pimoroni_plasma2350.h
│ │ ├── pimoroni_servo2040.h
│ │ ├── pimoroni_tiny2040.h
│ │ ├── pimoroni_tiny2040_2mb.h
│ │ ├── pimoroni_tiny2350.h
│ │ ├── pololu_3pi_2040_robot.h
│ │ ├── pololu_zumo_2040_robot.h
│ │ ├── seeed_xiao_rp2040.h
│ │ ├── seeed_xiao_rp2350.h
│ │ ├── solderparty_rp2040_stamp.h
│ │ ├── solderparty_rp2040_stamp_carrier.h
│ │ ├── solderparty_rp2040_stamp_round_carrier.h
│ │ ├── solderparty_rp2350_stamp.h
│ │ ├── solderparty_rp2350_stamp_xl.h
│ │ ├── sparkfun_iotnode_lorawan_rp2350.h
│ │ ├── sparkfun_micromod.h
│ │ ├── sparkfun_promicro.h
│ │ ├── sparkfun_promicro_rp2350.h
│ │ ├── sparkfun_thingplus.h
│ │ ├── sparkfun_thingplus_rp2350.h
│ │ ├── switchscience_picossci2_conta_base.h
│ │ ├── switchscience_picossci2_dev_board.h
│ │ ├── switchscience_picossci2_micro.h
│ │ ├── switchscience_picossci2_rp2350_breakout.h
│ │ ├── switchscience_picossci2_tiny.h
│ │ ├── tinycircuits_thumby_color_rp2350.h
│ │ ├── vgaboard.h
│ │ ├── waveshare_pico_cam_a.h
│ │ ├── waveshare_rp2040_ble.h
│ │ ├── waveshare_rp2040_eth.h
│ │ ├── waveshare_rp2040_geek.h
│ │ ├── waveshare_rp2040_lcd_0.96.h
│ │ ├── waveshare_rp2040_lcd_1.28.h
│ │ ├── waveshare_rp2040_matrix.h
│ │ ├── waveshare_rp2040_one.h
│ │ ├── waveshare_rp2040_pizero.h
│ │ ├── waveshare_rp2040_plus_16mb.h
│ │ ├── waveshare_rp2040_plus_4mb.h
│ │ ├── waveshare_rp2040_power_management_hat_b.h
│ │ ├── waveshare_rp2040_tiny.h
│ │ ├── waveshare_rp2040_touch_lcd_1.28.h
│ │ ├── waveshare_rp2040_zero.h
│ │ ├── waveshare_rp2350_eth.h
│ │ ├── waveshare_rp2350_geek.h
│ │ ├── waveshare_rp2350_lcd_0.96.h
│ │ ├── waveshare_rp2350_lcd_1.28.h
│ │ ├── waveshare_rp2350_one.h
│ │ ├── waveshare_rp2350_plus_16mb.h
│ │ ├── waveshare_rp2350_plus_4mb.h
│ │ ├── waveshare_rp2350_tiny.h
│ │ ├── waveshare_rp2350_touch_lcd_1.28.h
│ │ ├── waveshare_rp2350_zero.h
│ │ ├── weact_studio_rp2040_16mb.h
│ │ ├── weact_studio_rp2040_2mb.h
│ │ ├── weact_studio_rp2040_4mb.h
│ │ ├── weact_studio_rp2040_8mb.h
│ │ └── wiznet_w5100s_evb_pico.h
├── cmake
│ ├── no_hardware.cmake
│ ├── on_device.cmake
│ └── rp2_common.cmake
├── combined-docs.cmake
├── common
│ ├── README.md
│ ├── boot_picobin_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── boot
│ │ │ └── picobin.h
│ ├── boot_picoboot_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── boot
│ │ │ ├── picoboot.h
│ │ │ └── picoboot_constants.h
│ ├── boot_uf2_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── boot
│ │ │ └── uf2.h
│ ├── hardware_claim
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── claim.c
│ │ └── include
│ │ │ └── hardware
│ │ │ └── claim.h
│ ├── pico_base_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── generate_config_header.cmake
│ │ └── include
│ │ │ ├── pico.h
│ │ │ └── pico
│ │ │ ├── assert.h
│ │ │ ├── config.h
│ │ │ ├── error.h
│ │ │ ├── types.h
│ │ │ └── version.h.in
│ ├── pico_binary_info
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── binary_info.bzl
│ │ └── include
│ │ │ └── pico
│ │ │ ├── binary_info.h
│ │ │ └── binary_info
│ │ │ ├── code.h
│ │ │ ├── defs.h
│ │ │ └── structure.h
│ ├── pico_bit_ops_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── pico
│ │ │ └── bit_ops.h
│ ├── pico_divider_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── pico
│ │ │ └── divider.h
│ ├── pico_stdlib_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── pico
│ │ │ └── stdlib.h
│ ├── pico_sync
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── critical_section.c
│ │ ├── include
│ │ │ └── pico
│ │ │ │ ├── critical_section.h
│ │ │ │ ├── lock_core.h
│ │ │ │ ├── mutex.h
│ │ │ │ ├── sem.h
│ │ │ │ └── sync.h
│ │ ├── lock_core.c
│ │ ├── mutex.c
│ │ └── sem.c
│ ├── pico_time
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── pico
│ │ │ │ ├── time.h
│ │ │ │ └── timeout_helper.h
│ │ ├── time.c
│ │ └── timeout_helper.c
│ ├── pico_usb_reset_interface_headers
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── pico
│ │ │ └── usb_reset_interface.h
│ └── pico_util
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── datetime.c
│ │ ├── doc.h
│ │ ├── include
│ │ └── pico
│ │ │ └── util
│ │ │ ├── datetime.h
│ │ │ ├── pheap.h
│ │ │ └── queue.h
│ │ ├── pheap.c
│ │ └── queue.c
├── host.cmake
├── host
│ ├── BUILD.bazel
│ ├── README.md
│ ├── boot_stage2.c
│ ├── hardware_divider
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── divider.c
│ │ └── include
│ │ │ └── hardware
│ │ │ └── divider.h
│ ├── hardware_gpio
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── gpio.c
│ │ └── include
│ │ │ └── hardware
│ │ │ └── gpio.h
│ ├── hardware_irq
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── hardware
│ │ │ │ └── irq.h
│ │ └── irq.c
│ ├── hardware_sync
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── hardware
│ │ │ │ └── sync.h
│ │ └── sync_core0_only.c
│ ├── hardware_timer
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── hardware
│ │ │ │ └── timer.h
│ │ └── timer.c
│ ├── hardware_uart
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── hardware
│ │ │ │ └── uart.h
│ │ └── uart.c
│ ├── pico_bit_ops
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── bit_ops.c
│ ├── pico_divider
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── divider.c
│ ├── pico_multicore
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── pico
│ │ │ └── multicore.h
│ ├── pico_platform
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ ├── hardware
│ │ │ │ └── platform_defs.h
│ │ │ └── pico
│ │ │ │ └── platform.h
│ │ └── platform_base.c
│ ├── pico_printf
│ │ ├── BUILD.bazel
│ │ └── CMakeLists.txt
│ ├── pico_runtime
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── pico
│ │ │ │ ├── runtime.h
│ │ │ │ └── runtime_init.h
│ │ └── runtime.c
│ ├── pico_stdio
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── pico
│ │ │ │ └── stdio.h
│ │ └── stdio.c
│ ├── pico_stdlib
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── stdlib.c
│ └── pico_time_adapter
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ └── pico
│ │ │ └── time_adapter.h
│ │ └── time_adapter.c
├── rp2040.cmake
├── rp2040
│ ├── README.md
│ ├── boot_stage2
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── asminclude
│ │ │ └── boot2_helpers
│ │ │ │ ├── exit_from_boot2.S
│ │ │ │ ├── read_flash_sreg.S
│ │ │ │ └── wait_ssi_ready.S
│ │ ├── boot2_at25sf128a.S
│ │ ├── boot2_generic_03h.S
│ │ ├── boot2_is25lp080.S
│ │ ├── boot2_usb_blinky.S
│ │ ├── boot2_w25q080.S
│ │ ├── boot2_w25x10cl.S
│ │ ├── boot_stage2.ld
│ │ ├── compile_time_choice.S
│ │ ├── doc.h
│ │ ├── include
│ │ │ └── boot_stage2
│ │ │ │ └── config.h
│ │ └── pad_checksum
│ ├── hardware_regs
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── RP2040.svd
│ │ └── include
│ │ │ └── hardware
│ │ │ ├── platform_defs.h
│ │ │ └── regs
│ │ │ ├── adc.h
│ │ │ ├── addressmap.h
│ │ │ ├── busctrl.h
│ │ │ ├── clocks.h
│ │ │ ├── dma.h
│ │ │ ├── dreq.h
│ │ │ ├── i2c.h
│ │ │ ├── intctrl.h
│ │ │ ├── io_bank0.h
│ │ │ ├── io_qspi.h
│ │ │ ├── m0plus.h
│ │ │ ├── pads_bank0.h
│ │ │ ├── pads_qspi.h
│ │ │ ├── pio.h
│ │ │ ├── pll.h
│ │ │ ├── psm.h
│ │ │ ├── pwm.h
│ │ │ ├── resets.h
│ │ │ ├── rosc.h
│ │ │ ├── rtc.h
│ │ │ ├── sio.h
│ │ │ ├── spi.h
│ │ │ ├── ssi.h
│ │ │ ├── syscfg.h
│ │ │ ├── sysinfo.h
│ │ │ ├── tbman.h
│ │ │ ├── timer.h
│ │ │ ├── uart.h
│ │ │ ├── usb.h
│ │ │ ├── usb_device_dpram.h
│ │ │ ├── vreg_and_chip_reset.h
│ │ │ ├── watchdog.h
│ │ │ ├── xip.h
│ │ │ └── xosc.h
│ ├── hardware_structs
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── hardware
│ │ │ └── structs
│ │ │ ├── adc.h
│ │ │ ├── bus_ctrl.h
│ │ │ ├── busctrl.h
│ │ │ ├── clocks.h
│ │ │ ├── dma.h
│ │ │ ├── dma_debug.h
│ │ │ ├── i2c.h
│ │ │ ├── interp.h
│ │ │ ├── io_bank0.h
│ │ │ ├── io_qspi.h
│ │ │ ├── iobank0.h
│ │ │ ├── ioqspi.h
│ │ │ ├── m0plus.h
│ │ │ ├── mpu.h
│ │ │ ├── nvic.h
│ │ │ ├── pads_bank0.h
│ │ │ ├── pads_qspi.h
│ │ │ ├── padsbank0.h
│ │ │ ├── pio.h
│ │ │ ├── pll.h
│ │ │ ├── psm.h
│ │ │ ├── pwm.h
│ │ │ ├── resets.h
│ │ │ ├── rosc.h
│ │ │ ├── rtc.h
│ │ │ ├── scb.h
│ │ │ ├── sio.h
│ │ │ ├── spi.h
│ │ │ ├── ssi.h
│ │ │ ├── syscfg.h
│ │ │ ├── sysinfo.h
│ │ │ ├── systick.h
│ │ │ ├── tbman.h
│ │ │ ├── timer.h
│ │ │ ├── uart.h
│ │ │ ├── usb.h
│ │ │ ├── usb_dpram.h
│ │ │ ├── vreg_and_chip_reset.h
│ │ │ ├── watchdog.h
│ │ │ ├── xip.h
│ │ │ ├── xip_ctrl.h
│ │ │ └── xosc.h
│ ├── pico_platform
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── pico
│ │ │ │ ├── asm_helper.S
│ │ │ │ ├── platform.h
│ │ │ │ └── platform
│ │ │ │ └── cpu_regs.h
│ │ └── platform.c
│ └── rp2040_interface_pins.json
├── rp2350-arm-s.cmake
├── rp2350-riscv.cmake
├── rp2350
│ ├── README.md
│ ├── boot_stage2
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── asminclude
│ │ │ └── boot2_helpers
│ │ │ │ ├── exit_from_boot2.S
│ │ │ │ ├── read_flash_sreg.S
│ │ │ │ └── wait_qmi_ready.S
│ │ ├── boot2_at25sf128a.S
│ │ ├── boot2_generic_03h.S
│ │ ├── boot2_is25lp080.S
│ │ ├── boot2_usb_blinky.S
│ │ ├── boot2_w25q080.S
│ │ ├── boot2_w25x10cl.S
│ │ ├── boot_stage2.ld
│ │ ├── compile_time_choice.S
│ │ ├── doc.h
│ │ ├── include
│ │ │ └── boot_stage2
│ │ │ │ └── config.h
│ │ └── pad_checksum
│ ├── hardware_regs
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── RP2350.svd
│ │ └── include
│ │ │ └── hardware
│ │ │ ├── platform_defs.h
│ │ │ └── regs
│ │ │ ├── accessctrl.h
│ │ │ ├── adc.h
│ │ │ ├── addressmap.h
│ │ │ ├── bootram.h
│ │ │ ├── busctrl.h
│ │ │ ├── clocks.h
│ │ │ ├── coresight_trace.h
│ │ │ ├── dma.h
│ │ │ ├── dreq.h
│ │ │ ├── glitch_detector.h
│ │ │ ├── hstx_ctrl.h
│ │ │ ├── hstx_fifo.h
│ │ │ ├── i2c.h
│ │ │ ├── intctrl.h
│ │ │ ├── io_bank0.h
│ │ │ ├── io_qspi.h
│ │ │ ├── m33.h
│ │ │ ├── m33_eppb.h
│ │ │ ├── otp.h
│ │ │ ├── otp_data.h
│ │ │ ├── pads_bank0.h
│ │ │ ├── pads_qspi.h
│ │ │ ├── pio.h
│ │ │ ├── pll.h
│ │ │ ├── powman.h
│ │ │ ├── psm.h
│ │ │ ├── pwm.h
│ │ │ ├── qmi.h
│ │ │ ├── resets.h
│ │ │ ├── riscv_dm.h
│ │ │ ├── rosc.h
│ │ │ ├── rp_ap.h
│ │ │ ├── rvcsr.h
│ │ │ ├── sha256.h
│ │ │ ├── sio.h
│ │ │ ├── spi.h
│ │ │ ├── syscfg.h
│ │ │ ├── sysinfo.h
│ │ │ ├── tbman.h
│ │ │ ├── ticks.h
│ │ │ ├── timer.h
│ │ │ ├── trng.h
│ │ │ ├── uart.h
│ │ │ ├── usb.h
│ │ │ ├── usb_device_dpram.h
│ │ │ ├── watchdog.h
│ │ │ ├── xip.h
│ │ │ ├── xip_aux.h
│ │ │ └── xosc.h
│ ├── hardware_structs
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ └── include
│ │ │ └── hardware
│ │ │ └── structs
│ │ │ ├── accessctrl.h
│ │ │ ├── adc.h
│ │ │ ├── bootram.h
│ │ │ ├── bus_ctrl.h
│ │ │ ├── busctrl.h
│ │ │ ├── clocks.h
│ │ │ ├── coresight_trace.h
│ │ │ ├── dma.h
│ │ │ ├── dma_debug.h
│ │ │ ├── glitch_detector.h
│ │ │ ├── hstx_ctrl.h
│ │ │ ├── hstx_fifo.h
│ │ │ ├── i2c.h
│ │ │ ├── interp.h
│ │ │ ├── io_bank0.h
│ │ │ ├── io_qspi.h
│ │ │ ├── iobank0.h
│ │ │ ├── ioqspi.h
│ │ │ ├── m33.h
│ │ │ ├── m33_eppb.h
│ │ │ ├── mpu.h
│ │ │ ├── nvic.h
│ │ │ ├── otp.h
│ │ │ ├── pads_bank0.h
│ │ │ ├── pads_qspi.h
│ │ │ ├── padsbank0.h
│ │ │ ├── pio.h
│ │ │ ├── pll.h
│ │ │ ├── powman.h
│ │ │ ├── psm.h
│ │ │ ├── pwm.h
│ │ │ ├── qmi.h
│ │ │ ├── resets.h
│ │ │ ├── rosc.h
│ │ │ ├── sau.h
│ │ │ ├── scb.h
│ │ │ ├── sha256.h
│ │ │ ├── sio.h
│ │ │ ├── spi.h
│ │ │ ├── syscfg.h
│ │ │ ├── sysinfo.h
│ │ │ ├── systick.h
│ │ │ ├── tbman.h
│ │ │ ├── ticks.h
│ │ │ ├── timer.h
│ │ │ ├── tmds_encode.h
│ │ │ ├── trng.h
│ │ │ ├── uart.h
│ │ │ ├── usb.h
│ │ │ ├── usb_dpram.h
│ │ │ ├── watchdog.h
│ │ │ ├── xip.h
│ │ │ ├── xip_aux.h
│ │ │ ├── xip_ctrl.h
│ │ │ └── xosc.h
│ ├── pico_platform
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ │ └── pico
│ │ │ │ ├── asm_helper.S
│ │ │ │ ├── platform.h
│ │ │ │ └── platform
│ │ │ │ └── cpu_regs.h
│ │ └── platform.c
│ ├── rp2350a_interface_pins.json
│ └── rp2350b_interface_pins.json
└── rp2_common
│ ├── BUILD.bazel
│ ├── README.md
│ ├── boot_bootrom_headers
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── boot
│ │ └── bootrom_constants.h
│ ├── cmsis
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── cmsis
│ │ │ └── rename_exceptions.h
│ └── stub
│ │ └── CMSIS
│ │ ├── Core
│ │ └── Include
│ │ │ ├── cmsis_armcc.h
│ │ │ ├── cmsis_armclang.h
│ │ │ ├── cmsis_armclang_ltm.h
│ │ │ ├── cmsis_clang.h
│ │ │ ├── cmsis_compiler.h
│ │ │ ├── cmsis_gcc.h
│ │ │ ├── cmsis_iccarm.h
│ │ │ ├── cmsis_version.h
│ │ │ ├── core_cm0plus.h
│ │ │ ├── core_cm33.h
│ │ │ ├── m-profile
│ │ │ ├── armv7m_cachel1.h
│ │ │ ├── armv7m_mpu.h
│ │ │ ├── armv81m_pac.h
│ │ │ ├── armv8m_mpu.h
│ │ │ ├── armv8m_pmu.h
│ │ │ ├── cmsis_armclang_m.h
│ │ │ ├── cmsis_clang_m.h
│ │ │ ├── cmsis_gcc_m.h
│ │ │ ├── cmsis_iccarm_m.h
│ │ │ └── cmsis_tiarmclang_m.h
│ │ │ ├── mpu_armv7.h
│ │ │ ├── mpu_armv8.h
│ │ │ └── tz_context.h
│ │ ├── Device
│ │ ├── RP2040
│ │ │ ├── Include
│ │ │ │ ├── RP2040.h
│ │ │ │ └── system_RP2040.h
│ │ │ └── Source
│ │ │ │ └── system_RP2040.c
│ │ └── RP2350
│ │ │ ├── Include
│ │ │ ├── RP2350.h
│ │ │ └── system_RP2350.h
│ │ │ └── Source
│ │ │ └── system_RP2350.c
│ │ └── LICENSE.txt
│ ├── hardware_adc
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── adc.c
│ └── include
│ │ └── hardware
│ │ └── adc.h
│ ├── hardware_base
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ └── address_mapped.h
│ ├── hardware_boot_lock
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── boot_lock.c
│ └── include
│ │ └── hardware
│ │ └── boot_lock.h
│ ├── hardware_clocks
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── clocks.c
│ ├── include
│ │ └── hardware
│ │ │ └── clocks.h
│ └── scripts
│ │ └── vcocalc.py
│ ├── hardware_dcp
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ └── include
│ │ └── hardware
│ │ ├── dcp_canned.inc.S
│ │ └── dcp_instr.inc.S
│ ├── hardware_divider
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── divider.S
│ ├── divider.c
│ └── include
│ │ └── hardware
│ │ ├── divider.h
│ │ └── divider_helper.S
│ ├── hardware_dma
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── dma.c
│ └── include
│ │ └── hardware
│ │ └── dma.h
│ ├── hardware_exception
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── exception.c
│ ├── exception_table_riscv.S
│ └── include
│ │ └── hardware
│ │ └── exception.h
│ ├── hardware_flash
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── flash.c
│ └── include
│ │ └── hardware
│ │ └── flash.h
│ ├── hardware_gpio
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── gpio.c
│ └── include
│ │ └── hardware
│ │ ├── gpio.h
│ │ └── gpio_coproc.h
│ ├── hardware_hazard3
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ ├── hazard3.h
│ │ └── hazard3
│ │ ├── features.h
│ │ └── instructions.h
│ ├── hardware_i2c
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── i2c.c
│ └── include
│ │ └── hardware
│ │ └── i2c.h
│ ├── hardware_interp
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── interp.h
│ └── interp.c
│ ├── hardware_irq
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── irq.h
│ ├── irq.c
│ └── irq_handler_chain.S
│ ├── hardware_pio
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ ├── pio.h
│ │ │ └── pio_instructions.h
│ └── pio.c
│ ├── hardware_pll
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── pll.h
│ └── pll.c
│ ├── hardware_powman
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── powman.h
│ └── powman.c
│ ├── hardware_pwm
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ └── pwm.h
│ ├── hardware_rcp
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ └── rcp.h
│ ├── hardware_resets
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ └── resets.h
│ ├── hardware_riscv
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ └── riscv.h
│ ├── hardware_riscv_platform_timer
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── hardware
│ │ └── riscv_platform_timer.h
│ ├── hardware_rtc
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── rtc.h
│ └── rtc.c
│ ├── hardware_sha256
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── sha256.h
│ └── sha256.c
│ ├── hardware_spi
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── spi.h
│ └── spi.c
│ ├── hardware_sync
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── sync.h
│ └── sync.c
│ ├── hardware_sync_spin_lock
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── sync
│ │ │ └── spin_lock.h
│ └── sync_spin_lock.c
│ ├── hardware_ticks
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── ticks.h
│ └── ticks.c
│ ├── hardware_timer
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── timer.h
│ └── timer.c
│ ├── hardware_uart
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── uart.h
│ └── uart.c
│ ├── hardware_vreg
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── vreg.h
│ └── vreg.c
│ ├── hardware_watchdog
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── watchdog.h
│ └── watchdog.c
│ ├── hardware_xip_cache
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── xip_cache.h
│ └── xip_cache.c
│ ├── hardware_xosc
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── hardware
│ │ │ └── xosc.h
│ └── xosc.c
│ ├── pico_aon_timer
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── aon_timer.c
│ └── include
│ │ └── pico
│ │ └── aon_timer.h
│ ├── pico_async_context
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── async_context_base.c
│ ├── async_context_freertos.c
│ ├── async_context_poll.c
│ ├── async_context_threadsafe_background.c
│ └── include
│ │ └── pico
│ │ ├── async_context.h
│ │ ├── async_context_base.h
│ │ ├── async_context_freertos.h
│ │ ├── async_context_poll.h
│ │ └── async_context_threadsafe_background.h
│ ├── pico_atomic
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── atomic.c
│ └── include
│ │ └── stdatomic.h
│ ├── pico_bit_ops
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── bit_ops_aeabi.S
│ ├── pico_bootrom
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── bootrom.c
│ ├── bootrom_lock.c
│ └── include
│ │ └── pico
│ │ ├── bootrom.h
│ │ ├── bootrom
│ │ ├── lock.h
│ │ └── sf_table.h
│ │ └── bootrom_constants.h
│ ├── pico_bootsel_via_double_reset
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── pico_bootsel_via_double_reset.c
│ ├── pico_btstack
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── LICENSE.RP
│ ├── btstack.BUILD
│ ├── btstack_flash_bank.c
│ ├── btstack_run_loop_async_context.c
│ ├── btstack_stdin_pico.c
│ ├── doc.h
│ └── include
│ │ └── pico
│ │ ├── btstack_flash_bank.h
│ │ └── btstack_run_loop_async_context.h
│ ├── pico_clib_interface
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ ├── include
│ │ └── llvm_libc
│ │ │ ├── sys
│ │ │ ├── cdefs.h
│ │ │ ├── stat.h
│ │ │ ├── time.h
│ │ │ ├── times.h
│ │ │ └── types.h
│ │ │ ├── time.h
│ │ │ └── unistd.h
│ ├── llvm_libc_interface.c
│ ├── newlib_interface.c
│ └── picolibc_interface.c
│ ├── pico_crt0
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── crt0.S
│ ├── crt0_riscv.S
│ ├── doc.h
│ ├── embedded_end_block.inc.S
│ ├── embedded_start_block.inc.S
│ ├── rp2040
│ │ ├── BUILD.bazel
│ │ ├── memmap_blocked_ram.ld
│ │ ├── memmap_copy_to_ram.ld
│ │ ├── memmap_default.ld
│ │ └── memmap_no_flash.ld
│ └── rp2350
│ │ ├── BUILD.bazel
│ │ ├── memmap_copy_to_ram.ld
│ │ ├── memmap_default.ld
│ │ └── memmap_no_flash.ld
│ ├── pico_cxx_options
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ └── new_delete.cpp
│ ├── pico_cyw43_arch
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── cyw43_arch.c
│ ├── cyw43_arch_freertos.c
│ ├── cyw43_arch_poll.c
│ ├── cyw43_arch_threadsafe_background.c
│ └── include
│ │ └── pico
│ │ ├── cyw43_arch.h
│ │ └── cyw43_arch
│ │ ├── arch_freertos.h
│ │ ├── arch_poll.h
│ │ └── arch_threadsafe_background.h
│ ├── pico_cyw43_driver
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── btstack_chipset_cyw43.c
│ ├── btstack_cyw43.c
│ ├── btstack_hci_transport_cyw43.c
│ ├── cybt_shared_bus
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── cybt_shared_bus.c
│ │ ├── cybt_shared_bus_driver.c
│ │ └── cybt_shared_bus_driver.h
│ ├── cyw43-driver.BUILD
│ ├── cyw43_bus_pio_spi.c
│ ├── cyw43_bus_pio_spi.pio
│ ├── cyw43_driver.c
│ └── include
│ │ ├── cyw43_configport.h
│ │ └── pico
│ │ ├── btstack_chipset_cyw43.h
│ │ ├── btstack_cyw43.h
│ │ ├── btstack_hci_transport_cyw43.h
│ │ └── cyw43_driver.h
│ ├── pico_divider
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── divider_compiler.c
│ └── divider_hardware.S
│ ├── pico_double
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── double_aeabi_dcp.S
│ ├── double_aeabi_rp2040.S
│ ├── double_conv_m33.S
│ ├── double_fma_dcp.S
│ ├── double_init_rom_rp2040.c
│ ├── double_math.c
│ ├── double_none.S
│ ├── double_sci_m33.S
│ ├── double_v1_rom_shim_rp2040.S
│ └── include
│ │ └── pico
│ │ └── double.h
│ ├── pico_fix
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── rp2040_usb_device_enumeration
│ │ ├── BUILD.bazel
│ │ ├── CMakeLists.txt
│ │ ├── include
│ │ └── pico
│ │ │ └── fix
│ │ │ └── rp2040_usb_device_enumeration.h
│ │ └── rp2040_usb_device_enumeration.c
│ ├── pico_flash
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── flash.c
│ └── include
│ │ └── pico
│ │ └── flash.h
│ ├── pico_float
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── float_aeabi_dcp.S
│ ├── float_aeabi_rp2040.S
│ ├── float_common_m33.S
│ ├── float_conv32_vfp.S
│ ├── float_init_rom_rp2040.c
│ ├── float_math.c
│ ├── float_none.S
│ ├── float_sci_m33.S
│ ├── float_sci_m33_vfp.S
│ ├── float_single_hazard3.S
│ ├── float_v1_rom_shim_rp2040.S
│ └── include
│ │ └── pico
│ │ └── float.h
│ ├── pico_i2c_slave
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── i2c_slave.c
│ └── include
│ │ └── pico
│ │ └── i2c_slave.h
│ ├── pico_int64_ops
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── int64_ops.h
│ └── pico_int64_ops_aeabi.S
│ ├── pico_lwip
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ ├── include
│ │ ├── arch
│ │ │ └── cc.h
│ │ └── pico
│ │ │ ├── lwip_freertos.h
│ │ │ └── lwip_nosys.h
│ ├── lwip.BUILD
│ ├── lwip_freertos.c
│ ├── lwip_nosys.c
│ └── tools
│ │ ├── CMakeLists.txt
│ │ └── makefsdata.py
│ ├── pico_malloc
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── malloc.h
│ └── malloc.c
│ ├── pico_mbedtls
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── sha256_alt.h
│ └── pico_mbedtls.c
│ ├── pico_mem_ops
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── mem_ops.h
│ ├── mem_ops.c
│ └── mem_ops_aeabi.S
│ ├── pico_multicore
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── multicore.h
│ └── multicore.c
│ ├── pico_platform_compiler
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── pico
│ │ └── platform
│ │ └── compiler.h
│ ├── pico_platform_panic
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── platform
│ │ │ └── panic.h
│ └── panic.c
│ ├── pico_platform_sections
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── pico
│ │ └── platform
│ │ └── sections.h
│ ├── pico_printf
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── include
│ │ └── pico
│ │ │ └── printf.h
│ ├── printf.c
│ └── printf_none.S
│ ├── pico_rand
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── rand.h
│ └── rand.c
│ ├── pico_runtime
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── runtime.h
│ └── runtime.c
│ ├── pico_runtime_init
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── runtime_init.h
│ ├── runtime_init.c
│ ├── runtime_init_clocks.c
│ └── runtime_init_stack_guard.c
│ ├── pico_sha256
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── sha256.h
│ └── sha256.c
│ ├── pico_standard_binary_info
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ └── standard_binary_info.c
│ ├── pico_standard_link
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ ├── pico_flash_region.bzl
│ └── pico_flash_region.template.ld
│ ├── pico_stdio
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ ├── stdio.h
│ │ │ └── stdio
│ │ │ └── driver.h
│ └── stdio.c
│ ├── pico_stdio_rtt
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── SEGGER
│ │ ├── Config
│ │ │ └── SEGGER_RTT_Conf.h
│ │ └── RTT
│ │ │ ├── SEGGER_RTT.c
│ │ │ └── SEGGER_RTT.h
│ ├── include
│ │ └── pico
│ │ │ └── stdio_rtt.h
│ └── stdio_rtt.c
│ ├── pico_stdio_semihosting
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── stdio_semihosting.h
│ └── stdio_semihosting.c
│ ├── pico_stdio_uart
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── stdio_uart.h
│ └── stdio_uart.c
│ ├── pico_stdio_usb
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ ├── pico
│ │ │ ├── stdio_usb.h
│ │ │ └── stdio_usb
│ │ │ │ └── reset_interface.h
│ │ └── tusb_config.h
│ ├── reset_interface.c
│ ├── stdio_usb.c
│ └── stdio_usb_descriptors.c
│ ├── pico_stdlib
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── stdlib.c
│ ├── pico_time_adapter
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── pico
│ │ └── time_adapter.h
│ ├── pico_unique_id
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── include
│ │ └── pico
│ │ │ └── unique_id.h
│ └── unique_id.c
│ └── tinyusb
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── doc.h
│ ├── include
│ └── bsp
│ │ └── board.h
│ └── tinyusb.BUILD
├── test
├── CMakeLists.txt
├── cmsis_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── cmsis_test.c
├── hardware_irq_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── hardware_irq_test.c
├── hardware_pwm_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── hardware_pwm_test.c
├── hardware_sync_spin_lock_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── hardware_sync_spin_lock_test.c
├── kitchen_sink
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── btstack_config.h
│ ├── kitchen_sink.c
│ ├── kitchen_sink_cpp.cpp
│ ├── lwipopts.h
│ └── mbedtls_config.h
├── pico_divider_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── pico_divider_nesting_test.c
│ └── pico_divider_test.c
├── pico_float_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── custom_double_funcs_test.c
│ ├── custom_float_funcs_test.c
│ ├── hazard3_test_gen.c
│ ├── llvm
│ │ ├── LICENSE.TXT
│ │ ├── call_apsr.S
│ │ └── call_apsr.h
│ ├── m33.c
│ ├── pico_double_test.c
│ ├── pico_float_test.c
│ ├── pico_float_test_hazard3.c
│ └── vectors
│ │ ├── hazard3_addsf.inc
│ │ └── hazard3_mulsf.inc
├── pico_sem_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── pico_sem_test.c
├── pico_sha256_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── pico_sha256_test.c
├── pico_stdio_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── pico_stdio_test.c
├── pico_stdlib_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── pico_stdlib_test.c
├── pico_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── include
│ │ └── pico
│ │ ├── test.h
│ │ └── test
│ │ └── xrand.h
└── pico_time_test
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── pico_time_test.c
└── tools
├── BUILD.bazel
├── CMakeLists.txt
├── Findpicotool.cmake
├── Findpioasm.cmake
├── bazel_build.py
├── bazel_common.py
├── build_all_headers.py
├── check_all_board_headers.sh
├── check_board_header.py
├── check_configs.sh
├── check_doxygen_groups.py
├── check_source_files_in_bazel_build.py
├── compare_build_systems.py
├── copro_dis.py
├── extract_build_defines.py
├── extract_cmake_configs.py
├── extract_configs.py
├── pioasm
├── BUILD.bazel
├── CMakeLists.txt
├── ada_output.cpp
├── c_sdk_output.cpp
├── cmake
│ └── pioasmConfig.cmake
├── gen
│ ├── lexer.cpp
│ ├── location.h
│ ├── parser.cpp
│ └── parser.hpp
├── go_output.cpp
├── hex_output.cpp
├── json_output.cpp
├── lexer.ll
├── main.cpp
├── output_format.h
├── parser.yy
├── pio_assembler.cpp
├── pio_assembler.h
├── pio_disassembler.cpp
├── pio_disassembler.h
├── pio_enums.h
├── pio_types.h
├── python_output.cpp
└── test
│ └── amethyst.pio
├── run_all_bazel_checks.py
└── uf2_aspect.bzl
/.bazelignore:
--------------------------------------------------------------------------------
1 | # Don't accidentally pick up external CMake deps with Bazel build files.
2 | build
3 | # Don't treat submodules as part of this project.
4 | lib
5 |
--------------------------------------------------------------------------------
/.bazelrc:
--------------------------------------------------------------------------------
1 | # Silence all C/C++ warnings in external code.
2 | common --per_file_copt=external/.*@-w
3 | common --host_per_file_copt=external/.*@-w
4 |
5 | # Produce useful output when the build fails.
6 | common --verbose_failures
7 |
--------------------------------------------------------------------------------
/.bazelversion:
--------------------------------------------------------------------------------
1 | 7.2.1
2 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | _Instructions: (please delete)_
2 | - _please do not submit against `master`, use `develop` instead_
3 | - _please make sure there is an associated issue for your PR, and reference it via "Fixes #num" in the description_
4 | - _please enter a detailed description_
5 |
--------------------------------------------------------------------------------
/.github/workflows/choco_packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.github/workflows/windows.yml:
--------------------------------------------------------------------------------
1 | name: Build on Windows
2 | on:
3 | workflow_dispatch:
4 | push:
5 | branches:
6 | - 'develop'
7 | - 'master'
8 | - 'test_workflow'
9 |
10 | jobs:
11 | build:
12 | runs-on: windows-2022
13 | steps:
14 | - name: Clean workspace
15 | shell: bash
16 | run: |
17 | echo "Cleaning up previous run"
18 | rm -rf "${{ github.workspace }}/pico-sdk"
19 | - name: Checkout repo
20 | uses: actions/checkout@v4
21 | - name: Checkout submodules
22 | run: git submodule update --init
23 | - name: Install dependencies
24 | run: choco install .github/workflows/choco_packages.config
25 |
26 | - name: Build Project
27 | shell: pwsh
28 | run: |
29 | mkdir build
30 | cd build
31 | cmake .. -G Ninja -DPICO_SDK_TESTS_ENABLED=1 -DCMAKE_BUILD_TYPE=Debug -DPICO_BOARD=pico_w
32 | cmake --build .
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .vscode
3 | cmake-*
4 | .cache
5 | .DS_Store
6 | build
7 | build-*
8 |
9 | bazel-*
10 |
11 | # Ignore until https://github.com/bazelbuild/bazel/issues/20369 is fixed.
12 | MODULE.bazel.lock
13 | __pycache__/
14 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "tinyusb"]
2 | path = lib/tinyusb
3 | url = https://github.com/hathach/tinyusb.git
4 | [submodule "lib/cyw43-driver"]
5 | path = lib/cyw43-driver
6 | url = https://github.com/georgerobotics/cyw43-driver.git
7 | [submodule "lib/lwip"]
8 | path = lib/lwip
9 | url = https://github.com/lwip-tcpip/lwip.git
10 | [submodule "lib/mbedtls"]
11 | path = lib/mbedtls
12 | url = https://github.com/Mbed-TLS/mbedtls.git
13 | [submodule "lib/btstack"]
14 | path = lib/btstack
15 | url = https://github.com/bluekitchen/btstack.git
16 |
--------------------------------------------------------------------------------
/BUILD.bazel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raspberrypi/pico-sdk/ee68c78d0afae2b69c03ae1a72bf5cc267a2d94c/BUILD.bazel
--------------------------------------------------------------------------------
/WORKSPACE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raspberrypi/pico-sdk/ee68c78d0afae2b69c03ae1a72bf5cc267a2d94c/WORKSPACE
--------------------------------------------------------------------------------
/bazel/include/pico/config_autogen.h:
--------------------------------------------------------------------------------
1 | // Rather than auto-generating as part of the build, this header
2 | // is checked in directly.
3 | //
4 | // You can change what is included by configuring these `label_flag`s:
5 | // --@pico-sdk//bazel/config:PICO_CONFIG_EXTRA_HEADER=//my_proj:my_custom_headers
6 | // --@pico-sdk//bazel/config:PICO_CONFIG_PLATFORM_HEADER=//my_proj:my_custom_headers
7 |
8 | // This header must be provided by //bazel/config:PICO_CONFIG_EXTRA_HEADER:
9 | #include "pico_config_extra_headers.h"
10 |
11 | // This header must be provided by //bazel/config:PICO_CONFIG_PLATFORM_HEADER:
12 | #include "pico_config_platform_headers.h"
13 |
--------------------------------------------------------------------------------
/bazel/platform/BUILD.bazel:
--------------------------------------------------------------------------------
1 | package(default_visibility = ["//visibility:public"])
2 |
3 | platform(
4 | name = "rp2040",
5 | constraint_values = [
6 | "@pico-sdk//bazel/constraint:rp2040",
7 | "@platforms//cpu:armv6-m",
8 | ],
9 | )
10 |
11 | platform(
12 | name = "rp2350",
13 | constraint_values = [
14 | "@pico-sdk//bazel/constraint:rp2350",
15 | "@platforms//cpu:armv8-m",
16 | ],
17 | )
18 |
--------------------------------------------------------------------------------
/bazel/util/BUILD.bazel:
--------------------------------------------------------------------------------
1 | package(default_visibility = ["//visibility:public"])
2 |
--------------------------------------------------------------------------------
/bazel/util/label_flag_matches.bzl:
--------------------------------------------------------------------------------
1 | """A wrapper that enables a `config_setting` matcher for label_flag flags."""
2 |
3 | load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo")
4 | load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", "use_cpp_toolchain")
5 |
6 | def _match_label_flag_impl(ctx):
7 | matches = str(ctx.attr.expected_value.label) == str(ctx.attr.flag.label)
8 | return [
9 | config_common.FeatureFlagInfo(value = str(matches)),
10 | BuildSettingInfo(value = matches),
11 | ]
12 |
13 | _match_label_flag = rule(
14 | implementation = _match_label_flag_impl,
15 | attrs = {
16 | "expected_value": attr.label(
17 | mandatory = True,
18 | doc = "The expected flag value",
19 | ),
20 | "flag": attr.label(
21 | mandatory = True,
22 | doc = "The flag to extract a value from",
23 | ),
24 | },
25 | )
26 |
27 | def label_flag_matches(*, name, flag, value):
28 | _match_label_flag(
29 | name = name + "._impl",
30 | expected_value = native.package_relative_label(value),
31 | flag = flag,
32 | )
33 |
34 | native.config_setting(
35 | name = name,
36 | flag_values = {":{}".format(name + "._impl"): "True"},
37 | )
38 |
--------------------------------------------------------------------------------
/cmake/Platform/PICO.cmake:
--------------------------------------------------------------------------------
1 | # this is included because toolchain file sets SYSTEM_NAME=PICO
2 |
3 | set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
4 | set(CMAKE_EXECUTABLE_SUFFIX .elf)
5 |
6 | # include paths to find installed tools
7 | if(CMAKE_HOST_WIN32)
8 | include(Platform/WindowsPaths)
9 | else()
10 | include(Platform/UnixPaths)
11 | endif()
12 |
--------------------------------------------------------------------------------
/cmake/pico_utils.cmake:
--------------------------------------------------------------------------------
1 | function(pico_message param)
2 | if (${ARGC} EQUAL 1)
3 | message("${param}")
4 | return()
5 | endif ()
6 |
7 | if (NOT ${ARGC} EQUAL 2)
8 | message(FATAL_ERROR "Expect at most 2 arguments")
9 | endif ()
10 | message("${param}" "${ARGV1}")
11 | endfunction()
12 |
13 | macro(assert VAR MSG)
14 | if (NOT ${VAR})
15 | message(FATAL_ERROR "${MSG}")
16 | endif ()
17 | endmacro()
18 |
19 | function(pico_find_in_paths OUT PATHS NAME)
20 | foreach(PATH IN LISTS ${PATHS})
21 | if (EXISTS ${PATH}/${NAME})
22 | get_filename_component(FULLNAME ${PATH}/${NAME} ABSOLUTE)
23 | set(${OUT} ${FULLNAME} PARENT_SCOPE)
24 | return()
25 | endif()
26 | endforeach()
27 | set(${OUT} "" PARENT_SCOPE)
28 | endfunction()
--------------------------------------------------------------------------------
/cmake/preload/platforms/combined-docs.cmake:
--------------------------------------------------------------------------------
1 | set(PICO_DEFAULT_COMPILER "pico_arm_cortex_m33_gcc")
2 | set(PICO_CHIP rp2350)
3 |
4 |
--------------------------------------------------------------------------------
/cmake/preload/platforms/host.cmake:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raspberrypi/pico-sdk/ee68c78d0afae2b69c03ae1a72bf5cc267a2d94c/cmake/preload/platforms/host.cmake
--------------------------------------------------------------------------------
/cmake/preload/platforms/rp2040.cmake:
--------------------------------------------------------------------------------
1 | set(PICO_DEFAULT_COMPILER "pico_arm_cortex_m0plus_gcc")
2 | set(PICO_CHIP rp2040)
3 |
--------------------------------------------------------------------------------
/cmake/preload/platforms/rp2350-arm-s.cmake:
--------------------------------------------------------------------------------
1 | set(PICO_DEFAULT_COMPILER "pico_arm_cortex_m33_gcc")
2 | set(PICO_CHIP rp2350)
3 |
4 |
--------------------------------------------------------------------------------
/cmake/preload/platforms/rp2350-riscv.cmake:
--------------------------------------------------------------------------------
1 | set(PICO_DEFAULT_COMPILER "pico_riscv_gcc")
2 | set(PICO_CHIP rp2350)
3 |
4 |
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_arm_cortex_m0plus_clang.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus)
2 |
3 | # these are all the directories under LLVM embedded toolchain for ARM (newlib or pibolibc) and under llvm_libc
4 | set(PICO_CLANG_RUNTIMES armv6m_soft_nofp armv6m-unknown-none-eabi)
5 |
6 | set(PICO_COMMON_LANG_FLAGS "--target=armv6m-none-eabi -mfloat-abi=soft -march=armv6m")
7 |
8 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_clang_common.cmake)
9 |
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_arm_cortex_m0plus_gcc.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus)
2 |
3 | set(PICO_DEFAULT_GCC_TRIPLE arm-none-eabi)
4 | # on ARM -mcpu should not be mixed with -march
5 | set(PICO_COMMON_LANG_FLAGS " -mcpu=cortex-m0plus -mthumb")
6 |
7 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_gcc_common.cmake)
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_arm_cortex_m23_gcc.cmake:
--------------------------------------------------------------------------------
1 | # todo there is probably a more "cmake" way of doing this going thru the standard path with our "PICO" platform
2 | # i.e. CMakeInformation and whatnot
3 |
4 | set(CMAKE_SYSTEM_PROCESSOR cortex-m23)
5 | set(PICO_DEFAULT_GCC_TRIPLE arm-none-eabi)
6 |
7 | # todo amy should this be -mfloat-abi=hard?
8 | set(PICO_COMMON_LANG_FLAGS " -mcpu=cortex-m23 -mthumb -march=armv8-m.base")
9 | # todo probably need a setting here, also do we want `softfp`?
10 | set(PICO_COMMON_LANG_FLAGS "${PICO_COMMON_LANG_FLAGS} -mfloat-abi=softfp")
11 | if (NOT PICO_NO_CMSE)
12 | set(PICO_COMMON_LANG_FLAGS "${PICO_COMMON_LANG_FLAGS} -mcmse")
13 | endif()
14 |
15 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_gcc_common.cmake)
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_arm_cortex_m33_clang.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_SYSTEM_PROCESSOR cortex-m33)
2 |
3 | # these are all the directories under LLVM embedded toolchain for ARM (newlib or pibolibc) and under llvm_libc
4 | set(PICO_CLANG_RUNTIMES armv8m.main_soft_nofp armv8m.main-unknown-none-eabi)
5 |
6 | set(PICO_COMMON_LANG_FLAGS "-mcpu=cortex-m33 --target=armv8m.main-none-eabi -mfloat-abi=softfp -march=armv8m.main+fp+dsp")
7 | set(PICO_DISASM_OBJDUMP_ARGS --mcpu=cortex-m33 --arch=armv8m.main+fp+dsp)
8 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_clang_common.cmake)
9 |
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_arm_cortex_m33_gcc.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_SYSTEM_PROCESSOR cortex-m33)
2 | set(PICO_DEFAULT_GCC_TRIPLE arm-none-eabi)
3 |
4 | set(PICO_COMMON_LANG_FLAGS " -mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp")
5 | set(PICO_COMMON_LANG_FLAGS "${PICO_COMMON_LANG_FLAGS} -mfloat-abi=softfp")
6 | if (NOT PICO_NO_CMSE)
7 | set(PICO_COMMON_LANG_FLAGS "${PICO_COMMON_LANG_FLAGS} -mcmse")
8 | endif()
9 |
10 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_gcc_common.cmake)
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_riscv_gcc.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_SYSTEM_PROCESSOR hazard3)
2 |
3 | set(PICO_DEFAULT_GCC_TRIPLE riscv32-unknown-elf riscv32-corev-elf)
4 |
5 | set(PICO_COMMON_LANG_FLAGS " -march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32")
6 |
7 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_gcc_common.cmake)
8 |
--------------------------------------------------------------------------------
/cmake/preload/toolchains/pico_riscv_gcc_zcb_zcmp.cmake:
--------------------------------------------------------------------------------
1 | # todo there is probably a more "cmake" way of doing this going thru the standard path with our "PICO" platform
2 | # i.e. CMakeInformation and whatnot
3 |
4 | set(CMAKE_SYSTEM_PROCESSOR hazard3)
5 |
6 | set(PICO_DEFAULT_GCC_TRIPLE riscv32-unknown-elf riscv32-corev-elf)
7 |
8 | set(PICO_COMMON_LANG_FLAGS " -march=rv32ima_zicsr_zifencei_zba_zbb_zbs_zbkb_zca_zcb_zcmp -mabi=ilp32")
9 |
10 | include(${CMAKE_CURRENT_LIST_DIR}/util/pico_arm_gcc_common.cmake)
11 |
--------------------------------------------------------------------------------
/cmake/preload/toolchains/util/set_flags.cmake:
--------------------------------------------------------------------------------
1 | option(PICO_DEOPTIMIZED_DEBUG "Build debug builds with -O0" 0)
2 | option(PICO_DEBUG_INFO_IN_RELEASE "Include debug info in release builds" 1)
3 |
4 | get_property(IS_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE)
5 | foreach(LANG IN ITEMS C CXX ASM)
6 | set(CMAKE_${LANG}_FLAGS_INIT "${PICO_COMMON_LANG_FLAGS}")
7 | unset(CMAKE_${LANG}_FLAGS_DEBUG CACHE)
8 | if (PICO_DEOPTIMIZED_DEBUG)
9 | set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-O0")
10 | else()
11 | set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-Og")
12 | endif()
13 | if (PICO_DEBUG_INFO_IN_RELEASE)
14 | set(CMAKE_${LANG}_FLAGS_RELEASE_INIT "-g")
15 | set(CMAKE_${LANG}_FLAGS_MINSIZEREL_INIT "-g")
16 | endif()
17 | set(CMAKE_${LANG}_LINK_FLAGS "-Wl,--build-id=none")
18 |
19 | # try_compile is where the feature testing is done, and at that point,
20 | # pico_standard_link is not ready to be linked in to provide essential
21 | # functions like _exit. So pass -nostdlib so it doesn't link in an exit()
22 | # function at all.
23 | if(IS_IN_TRY_COMPILE)
24 | set(CMAKE_${LANG}_LINK_FLAGS "${CMAKE_${LANG}_LINK_FLAGS} -nostdlib")
25 | endif()
26 | endforeach()
27 |
--------------------------------------------------------------------------------
/docs/examples.md:
--------------------------------------------------------------------------------
1 | ## Examples Index {#examples_page}
2 |
3 | This page links to the various example code fragments in this documentation. For more complete examples, please see the [pico-examples](https://github.com/raspberrypi/pico-examples) repository, which contains complete buildable projects.
4 |
5 | - [RTC example](@ref rtc_example)
6 | - [UART example](@ref uart_example)
7 | - [ADC example](@ref adc_example)
8 | - [I2C example](@ref i2c_example)
9 | - [Clock example](@ref clock_example)
10 | - [Timer example](@ref timer_example)
11 | - [Flash programming example](@ref flash_example)
12 | - [Watchdog example](@ref watchdog_example)
13 | - [Divider example](@ref divider_example)
14 | - [PWM example](@ref pwm_example)
15 | - [Multicore example](@ref multicore_example)
16 | - [Reset example](@ref reset_example)
17 |
18 |
19 | All examples are "Copyright (c) 2020 Raspberry Pi (Trading) Ltd", and are released under a 3-Clause BSD licence. Briefly, this means you are free to use the example code
20 | as long as you retain the copyright notice. Full details on the licence can be found [here](https://opensource.org/licenses/BSD-3-Clause).
21 |
22 |
--------------------------------------------------------------------------------
/docs/footer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |