# Software

The Ardupico is a versatile microcontroller board that supports all the standard software ecosystems of the Pico. Whether you prefer to code in C/C++, MicroPython, CircuitPython, or any other language, the Ardupico has got you covered.&#x20;

We recommend using the [Arduino-Pico](https://github.com/earlephilhower/arduino-pico) for easy development and programming. With the Ardupico, you can explore your creativity and bring your ideas to life with ease.

## C/C++

Please refer to the Raspberry Pi Documentation --> [Raspberry Pi Pico C/C++ SDK](https://www.raspberrypi.com/documentation/microcontrollers/c_sdk.html)

## MicroPython

Please refer to the Raspberry Pi Documentation --> [MicroPython](https://www.raspberrypi.com/documentation/microcontrollers/micropython.html)

## CircuitPython

Please refer to the CircuitPython Documentation --> [getting-started-with-raspberry-pi-pico-circuitpython](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython)

## Arduino-Pico

{% hint style="info" %}
The following is taken from <https://github.com/earlephilhower/arduino-pico>&#x20;

Please visit the link for more content
{% endhint %}

> Raspberry Pi Pico Arduino core, for all RP2040 boards
>
> This is a port of the RP2040 (Raspberry Pi Pico processor) to the Arduino ecosystem. It uses the bare Raspberry Pi Pico SDK and a custom GCC 10.3/Newlib 4.0 toolchain.

### Installation

Open up the Arduino IDE and go to File->Preferences.

In the dialog that pops up, enter the following URL in the "Additional Boards Manager URLs" field:

```
// https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
```

<figure><img src="/files/KA1eVubkX8dj4NEDkdnh" alt=""><figcaption></figcaption></figure>

Hit OK to close the dialog.

Go to Tools->Boards->Board Manager in the IDE

Type "pico" in the search box and select "Add":

<figure><img src="/files/8YbBcOU65jJkZDaCZuyt" alt=""><figcaption></figcaption></figure>

## Uploading Sketches

To upload your first sketch, you will need to hold the BOOTSEL button down while plugging in the Pico to your computer. Then hit the upload button and the sketch should be transferred and start to run.

After the first upload, this should not be necessary as the `arduino-pico` core has auto-reset support. Select the appropriate serial port shown in the Arduino Tools->Port->Serial Port menu once (this setting will stick and does not need to be touched for multiple uploads). This selection allows the auto-reset tool to identify the proper device to reset. Them hit the upload button and your sketch should upload and run.

In some cases the Pico will encounter a hard hang and its USB port will not respond to the auto-reset request. Should this happen, just follow the initial procedure of holding the BOOTSEL button down while plugging in the Pico to enter the ROM bootloader.

## Debugging with Picoprobe/pico-debug, OpenOCD, and GDB

The installed tools include a version of OpenOCD (in the pqt-openocd directory) and GDB (in the pqt-gcc directory). These may be used to run GDB in an interactive window as documented in the Pico Getting Started manuals from the Raspberry Pi Foundation. For [pico-debug](https://github.com/majbthrd/pico-debug/), replace the raspberrypi-swd and picoprobe example OpenOCD arguments of "-f interface/raspberrypi-swd.cfg -f target/rp2040.cfg" or "-f interface/picoprobe.cfg -f target/rp2040.cfg" respectively in the Pico Getting Started manual with "-f board/pico-debug.cfg".


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.wisdpi.com/iot/ardu2040m/software.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
