Update PlatformIO builder script and docs (#633)
* Update board generation, use renamed function * Update documentation with new platform integration state * Remove accidentally pushed file * Use correct update command * Use correct highlighting * Use correct language * Add section on debugging * Add docs on filesystem, minor corrections * Use -iprefix in compilation, but still expose all include paths to IDE * Add exception and RTTI support, document them * Fix typo
This commit is contained in:
parent
3414b73172
commit
4a94677ee5
34 changed files with 243 additions and 178 deletions
BIN
docs/images/pio_debugging.png
Normal file
BIN
docs/images/pio_debugging.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 119 KiB |
BIN
docs/images/pio_fs_upload.png
Normal file
BIN
docs/images/pio_fs_upload.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -19,14 +19,14 @@ The PlatformIO experience:
|
||||||
|
|
||||||
Refer to the general documentation at https://docs.platformio.org/.
|
Refer to the general documentation at https://docs.platformio.org/.
|
||||||
|
|
||||||
Especially useful is the `Getting started with VSCode + PlatformIO <https://docs.platformio.org/en/latest/integration/ide/vscode.html#installation), [CLI reference](https://docs.platformio.org/en/latest/core/index.html) and [platformio.ini options](https://docs.platformio.org/en/latest/projectconf/index.html)>`__ page.
|
Especially useful is the `Getting started with VSCode + PlatformIO <https://docs.platformio.org/en/latest/integration/ide/vscode.html#installation>`_, `CLI reference <https://docs.platformio.org/en/latest/core/index.html>`_ and the `platformio.ini options <https://docs.platformio.org/en/latest/projectconf/index.html>`_ page.
|
||||||
|
|
||||||
Hereafter it is assumed that you have a basic understanding of PlatformIO in regards to project creation, project file structure and building and uploading PlatformIO projects, through reading the above pages.
|
Hereafter it is assumed that you have a basic understanding of PlatformIO in regards to project creation, project file structure and building and uploading PlatformIO projects, through reading the above pages.
|
||||||
|
|
||||||
Current state of development
|
Current state of development
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
At the time of writing, PlatformIO integration for this core is a work-in-progress and not yet merged into mainline PlatformIO. This is subject to change soon.
|
At the time of writing, PlatformIO integration for this core is a work-in-progress and not yet merged into mainline PlatformIO. This is subject to change once `this pull request <https://github.com/platformio/platform-raspberrypi/pull/36>`_ is merged.
|
||||||
|
|
||||||
If you want to use the PlatformIO integration right now, make sure you first create a standard Raspberry Pi Pico + Arduino project within PlatformIO.
|
If you want to use the PlatformIO integration right now, make sure you first create a standard Raspberry Pi Pico + Arduino project within PlatformIO.
|
||||||
This will give you a project with the ``platformio.ini``
|
This will give you a project with the ``platformio.ini``
|
||||||
|
|
@ -38,8 +38,7 @@ This will give you a project with the ``platformio.ini``
|
||||||
board = pico
|
board = pico
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
|
||||||
Here, you need to change the `platform` to take advantage of the features described hereunder.
|
Here, you need to change the `platform` to take advantage of the features described hereunder and switch to the new core.
|
||||||
You *also* need to inject two PlatformIO packages, one for the compiler toolchain and one for the Arduino core package.
|
|
||||||
|
|
||||||
.. code:: ini
|
.. code:: ini
|
||||||
|
|
||||||
|
|
@ -47,12 +46,34 @@ You *also* need to inject two PlatformIO packages, one for the compiler toolchai
|
||||||
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
|
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
|
||||||
board = pico
|
board = pico
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
board_build.core = earlephilhower
|
||||||
|
|
||||||
|
When the support for this core has been merged into mainline PlatformIO, this notice will be removed and a standard `platformio.ini` as shown above will work as a base.
|
||||||
|
|
||||||
|
Deprecation warnings
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Previous versions of this documentation told users to inject the framework and toolchain package into the project by using
|
||||||
|
|
||||||
|
.. code:: ini
|
||||||
|
|
||||||
; note that download link for toolchain is specific for OS. see https://github.com/earlephilhower/pico-quick-toolchain/releases.
|
; note that download link for toolchain is specific for OS. see https://github.com/earlephilhower/pico-quick-toolchain/releases.
|
||||||
platform_packages =
|
platform_packages =
|
||||||
maxgerhardt/framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git
|
maxgerhardt/framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git
|
||||||
maxgerhardt/toolchain-pico@https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.3.1-a/x86_64-w64-mingw32.arm-none-eabi-7855b0c.210706.zip
|
maxgerhardt/toolchain-pico@https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.3.1-a/x86_64-w64-mingw32.arm-none-eabi-7855b0c.210706.zip
|
||||||
|
|
||||||
When the support for this core has been merged into mainline PlatformIO, this notice will be removed and a standard `platformio.ini` as shown above will work as a base.
|
This is now **deprecated** and should not be done anymore. Users should delete these ``platform_packages`` lines and update the platform integration by issuing the command
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
pio pkg update -g -p https://github.com/maxgerhardt/platform-raspberrypi.git
|
||||||
|
|
||||||
|
in the `PlatformIO CLI <https://docs.platformio.org/en/latest/integration/ide/vscode.html#platformio-core-cli>`_. The same can be achieved by using the VSCode PIO Home -> Platforms -> Updates GUI.
|
||||||
|
|
||||||
|
The toolchain, which was also renamed to ``toolchain-rp2040-earlephilhower`` is downloaded automatically from the registry. The same goes for the ``framework-arduinopico`` toolchain package, which points directly to the Arduino-Pico Github repository.
|
||||||
|
However, users can still select a custom fork or branch of the core if desired so, as detailed in a chapter below.
|
||||||
|
|
||||||
|
As the pull req
|
||||||
|
|
||||||
Selecting the new core
|
Selecting the new core
|
||||||
----------------------
|
----------------------
|
||||||
|
|
@ -61,8 +82,8 @@ Prerequisite for using this core is to tell PlatformIO to switch to it.
|
||||||
There will be board definition files where the Earle-Philhower core will
|
There will be board definition files where the Earle-Philhower core will
|
||||||
be the default since it's a board that only exists in this core (and not
|
be the default since it's a board that only exists in this core (and not
|
||||||
the other https://github.com/arduino/ArduinoCore-mbed). To switch boards
|
the other https://github.com/arduino/ArduinoCore-mbed). To switch boards
|
||||||
for which this is not the default core (e.g. the standard
|
for which this is not the default core (which are only
|
||||||
``board = pico``), the directive
|
``board = pico`` and ``board = nanorp2040connect``), the directive
|
||||||
|
|
||||||
.. code:: ini
|
.. code:: ini
|
||||||
|
|
||||||
|
|
@ -72,6 +93,8 @@ must be added to the ``platformio.ini``. This controls the `core
|
||||||
switching
|
switching
|
||||||
logic <https://github.com/maxgerhardt/platform-raspberrypi/blob/77e0d3a29d1dbf00fd3ec3271104e3bf4820869c/builder/frameworks/arduino/arduino.py#L27-L32>`__.
|
logic <https://github.com/maxgerhardt/platform-raspberrypi/blob/77e0d3a29d1dbf00fd3ec3271104e3bf4820869c/builder/frameworks/arduino/arduino.py#L27-L32>`__.
|
||||||
|
|
||||||
|
When using Arduino-Pico-only boards like ``board = rpipico`` or ``board = adafruit_feather``, this is not needed.
|
||||||
|
|
||||||
Flash size
|
Flash size
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|
@ -154,6 +177,37 @@ either a sing line or a newline-separated expression.
|
||||||
-DDEBUG_RP2040_CORE
|
-DDEBUG_RP2040_CORE
|
||||||
-DDEBUG_RP2040_PORT=Serial2
|
-DDEBUG_RP2040_PORT=Serial2
|
||||||
|
|
||||||
|
C++ Exceptions
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Exceptions are disabled by default. To enable them, use
|
||||||
|
|
||||||
|
.. code:: ini
|
||||||
|
|
||||||
|
; Enable Exceptions
|
||||||
|
build_flags = -DPIO_FRAMEWORK_ARDUINO_ENABLE_EXCEPTIONS
|
||||||
|
|
||||||
|
Stack Protector
|
||||||
|
---------------
|
||||||
|
|
||||||
|
To enable GCC's stack protection feature, use
|
||||||
|
|
||||||
|
.. code:: ini
|
||||||
|
|
||||||
|
; Enable Stack Protector
|
||||||
|
build_flags = -fstack-protector
|
||||||
|
|
||||||
|
|
||||||
|
RTTI
|
||||||
|
----
|
||||||
|
|
||||||
|
RTTI (run-time type information) is disabled by default. To enable it, use
|
||||||
|
|
||||||
|
.. code:: ini
|
||||||
|
|
||||||
|
; Enable RTTI
|
||||||
|
build_flags = -DPIO_FRAMEWORK_ARDUINO_ENABLE_RTTI
|
||||||
|
|
||||||
USB Stack
|
USB Stack
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|
@ -188,8 +242,8 @@ directive to do so. Simply specify that the framework package
|
||||||
Whereas the ``#master`` can also be replaced by a ``#branchname`` or a
|
Whereas the ``#master`` can also be replaced by a ``#branchname`` or a
|
||||||
``#commithash``. If left out, it will pull the default branch, which is ``master``.
|
``#commithash``. If left out, it will pull the default branch, which is ``master``.
|
||||||
|
|
||||||
The ``file://`` pseudo-protocol can also be used instead of ``https://`` to point to a
|
The ``file://`` and ``symlink://`` pseudo-protocols can also be used instead of ``https://`` to point to a
|
||||||
local copy of the core (with e.g. some modifications) on disk.
|
local copy of the core (with e.g. some modifications) on disk (`see documentation <https://docs.platformio.org/en/latest/core/userguide/pkg/cmd_install.html?#local-folder>_`).
|
||||||
|
|
||||||
Note that this can only be done for versions that have the PlatformIO
|
Note that this can only be done for versions that have the PlatformIO
|
||||||
builder script it in, so versions before 1.9.2 are not supported.
|
builder script it in, so versions before 1.9.2 are not supported.
|
||||||
|
|
@ -206,14 +260,50 @@ and 0.5MByte filesystem.
|
||||||
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
|
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
|
||||||
board = pico
|
board = pico
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
; board can use both Arduino cores -- we select Arduino-Pico here
|
||||||
board_build.core = earlephilhower
|
board_build.core = earlephilhower
|
||||||
board_build.filesystem_size = 0.5m
|
board_build.filesystem_size = 0.5m
|
||||||
; note that download link for toolchain is specific for OS. see https://github.com/earlephilhower/pico-quick-toolchain/releases.
|
|
||||||
platform_packages =
|
|
||||||
maxgerhardt/framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git
|
|
||||||
maxgerhardt/toolchain-pico@https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.3.1-a/x86_64-w64-mingw32.arm-none-eabi-7855b0c.210706.zip
|
|
||||||
|
|
||||||
|
|
||||||
The initial project structure should be generated just creating a new
|
The initial project structure should be generated just creating a new
|
||||||
project for the Pico and the Arduino framework, after which the
|
project for the Pico and the Arduino framework, after which the
|
||||||
auto-generated ``platformio.ini`` can be adapted per above.
|
auto-generated ``platformio.ini`` can be adapted per above.
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
---------
|
||||||
|
|
||||||
|
With recent updates to the toolchain and OpenOCD, debugging firmwares is also possible.
|
||||||
|
|
||||||
|
To specify the debugging adapter, use ``debug_tool`` (`documentation <https://docs.platformio.org/en/latest/projectconf/section_env_debug.html#debug-tool>`_). Supported values are:
|
||||||
|
|
||||||
|
* ``picoprobe``
|
||||||
|
* ``cmsis-dap``
|
||||||
|
* ``jlink``
|
||||||
|
* ``raspberrypi-swd``
|
||||||
|
|
||||||
|
These values can also be used in ``upload_protocol`` if you want PlatformIO to upload the regular firmware through this method, which you likely want.
|
||||||
|
|
||||||
|
Especially the PicoProbe method is convenient when you have two Raspberry Pi Pico boards. One of them can be flashed with the PicoProbe firmware (`documentation <https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#debugging-using-another-raspberry-pi-pico>`_) and is then connected to the target Raspberry Pi Pico board (see `documentation <https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf>`_ chapter "Picoprobe Wiring"). Remember that on Windows, you have to use `Zadig <https://zadig.akeo.ie/>`_ to also load "WinUSB" drivers for the "Picoprobe (Interface 2)" device so that OpenOCD can speak to it.
|
||||||
|
|
||||||
|
With that set up, debugging can be started via the left debugging sidebar and works nicely: Setup breakpoints, inspect the value of variables in the code, step through the code line by line. When a breakpoint is hit or execution is halted, you can even see the execution state both Cortex-M0+ cores of the RP2040.
|
||||||
|
|
||||||
|
.. image:: images/pio_debugging.png
|
||||||
|
|
||||||
|
For further information on customizing debug options, like the initial breakpoint or debugging / SWD speed, consult `the documentation <https://docs.platformio.org/en/latest/projectconf/section_env_debug.html>`_.
|
||||||
|
|
||||||
|
Filesystem Uploading
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
For the Arduino IDE, `a plugin <https://github.com/earlephilhower/arduino-pico#uploading-filesystem-images>`_ is available that enables a data folder to be packed as a LittleFS filesystem binary and uploaded to the Pico.
|
||||||
|
|
||||||
|
This functionality is also built-in in the PlatformIO integration. Open the `project tasks <https://docs.platformio.org/en/latest/integration/ide/vscode.html#project-tasks>`_ and expand the "Platform" tasks:
|
||||||
|
|
||||||
|
.. image:: images/pio_fs_upload.png
|
||||||
|
|
||||||
|
The files you want to upload should be placed in a folder called ``data`` inside the project. This can be customized `if needed <https://docs.platformio.org/en/latest/projectconf/section_platformio.html#data-dir>`_.
|
||||||
|
|
||||||
|
The task "Build Filesystem Image" will take all files in the data directory and create a ``littlefs.bin`` file from it using the ``mklittlefs`` tool.
|
||||||
|
|
||||||
|
The task "Upload Filesystem Image" will upload the filesystem image to the Pico via the specified ``upload_protocol``.
|
||||||
|
|
||||||
|
**Note:** Currently only the default ``picotool`` (regular direct USB upload) and the OpenOCD-based debug methods (meaning all but ``jlink``) can transport the filesystem to the Pico.
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_feather",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_feather",
|
|
||||||
"boot2_source": "boot2_w25x10cl_4_padded_checksum.S",
|
"boot2_source": "boot2_w25x10cl_4_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x80f1",
|
"usb_pid": "0x80f1"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "Feather RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_itsybitsy",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_itsybitsy",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x80fd",
|
"usb_pid": "0x80fd"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "ItsyBitsy RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_kb2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_kb2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x8105",
|
"usb_pid": "0x8105"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "KB2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_macropad2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_macropad2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x8107",
|
"usb_pid": "0x8107"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "MacroPad RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_qtpy",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_qtpy",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x80f7",
|
"usb_pid": "0x80f7"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "QT Py RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_stemmafriend",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_stemmafriend",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x80e3",
|
"usb_pid": "0x80e3"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "STEMMA Friend RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "adafruit_trinkeyrp2040qt",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "adafruit_trinkeyrp2040qt",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x239a",
|
"usb_vid": "0x239a",
|
||||||
"usb_pid": "0x8109",
|
"usb_pid": "0x8109"
|
||||||
"usb_manufacturer": "Adafruit",
|
|
||||||
"usb_product": "Trinkey RP2040 QT"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "arduino_nano_connect",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "arduino_nano_connect",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2341",
|
"usb_vid": "0x2341",
|
||||||
"usb_pid": "0x0058",
|
"usb_pid": "0x0058"
|
||||||
"usb_manufacturer": "Arduino",
|
|
||||||
"usb_product": "Nano RP2040 Connect"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "challenger_2040_lora",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "challenger_2040_lora",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1023",
|
"usb_pid": "0x1023"
|
||||||
"usb_manufacturer": "iLabs",
|
|
||||||
"usb_product": "Challenger 2040 LoRa"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "challenger_2040_lte",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "challenger_2040_lte",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x100b",
|
"usb_pid": "0x100b"
|
||||||
"usb_manufacturer": "iLabs",
|
|
||||||
"usb_product": "Challenger 2040 LTE"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "challenger_2040_wifi",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "challenger_2040_wifi",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1006",
|
"usb_pid": "0x1006"
|
||||||
"usb_manufacturer": "iLabs",
|
|
||||||
"usb_product": "Challenger 2040 WiFi"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "challenger_2040_wifi_ble",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "challenger_2040_wifi_ble",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x102C",
|
"usb_pid": "0x102C"
|
||||||
"usb_manufacturer": "iLabs",
|
|
||||||
"usb_product": "Challenger 2040 WiFi/BLE"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "challenger_nb_2040_wifi",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "challenger_nb_2040_wifi",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x100b",
|
"usb_pid": "0x100b"
|
||||||
"usb_manufacturer": "iLabs",
|
|
||||||
"usb_product": "Challenger NB 2040 WiFi"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "cytron_maker_nano_rp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "cytron_maker_nano_rp2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x100f",
|
"usb_pid": "0x100f"
|
||||||
"usb_manufacturer": "Cytron",
|
|
||||||
"usb_product": "Maker Nano RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "cytron_maker_pi_rp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "cytron_maker_pi_rp2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1000",
|
"usb_pid": "0x1000"
|
||||||
"usb_manufacturer": "Cytron",
|
|
||||||
"usb_product": "Maker Pi RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "dfrobot_beetle_rp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "dfrobot_beetle_rp2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x3343",
|
"usb_vid": "0x3343",
|
||||||
"usb_pid": "0x4253",
|
"usb_pid": "0x4253"
|
||||||
"usb_manufacturer": "DFRobot",
|
|
||||||
"usb_product": "Beetle RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "flyboard2040_core",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "flyboard2040_core",
|
|
||||||
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x008a",
|
"usb_pid": "0x008a"
|
||||||
"usb_manufacturer": "DeRuiLab",
|
|
||||||
"usb_product": "FlyBoard2040Core"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "generic",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "generic",
|
|
||||||
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0xf00a",
|
"usb_pid": "0xf00a"
|
||||||
"usb_manufacturer": "Generic",
|
|
||||||
"usb_product": "RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "ilabs_rpico32",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "ilabs_rpico32",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1010",
|
"usb_pid": "0x1010"
|
||||||
"usb_manufacturer": "iLabs",
|
|
||||||
"usb_product": "RPICO32"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "melopero_shake_rp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "melopero_shake_rp2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1005",
|
"usb_pid": "0x1005"
|
||||||
"usb_manufacturer": "Melopero",
|
|
||||||
"usb_product": "Shake RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "rpipico",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "rpipico",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x000a",
|
"usb_pid": "0x000a"
|
||||||
"usb_manufacturer": "Raspberry Pi",
|
|
||||||
"usb_product": "Pico"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "seeed_xiao_rp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "seeed_xiao_rp2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x000a",
|
"usb_pid": "0x000a"
|
||||||
"usb_manufacturer": "Seeed",
|
|
||||||
"usb_product": "XAIO RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "solderparty_rp2040_stamp",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "solderparty_rp2040_stamp",
|
|
||||||
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
||||||
"usb_vid": "0x1209",
|
"usb_vid": "0x1209",
|
||||||
"usb_pid": "0xa182",
|
"usb_pid": "0xa182"
|
||||||
"usb_manufacturer": "Solder Party",
|
|
||||||
"usb_product": "RP2040 Stamp"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "sparkfun_promicrorp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "sparkfun_promicrorp2040",
|
|
||||||
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
|
||||||
"usb_vid": "0x1b4f",
|
"usb_vid": "0x1b4f",
|
||||||
"usb_pid": "0x0026",
|
"usb_pid": "0x0026"
|
||||||
"usb_manufacturer": "SparkFun",
|
|
||||||
"usb_product": "ProMicro RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "sparkfun_thingplusrp2040",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "sparkfun_thingplusrp2040",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x1b4f",
|
"usb_vid": "0x1b4f",
|
||||||
"usb_pid": "0x0026",
|
"usb_pid": "0x0026"
|
||||||
"usb_manufacturer": "SparkFun",
|
|
||||||
"usb_product": "Thing Plus RP2040"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "upesy_rp2040_devkit",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "upesy_rp2040_devkit",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1007",
|
"usb_pid": "0x1007"
|
||||||
"usb_manufacturer": "uPesy",
|
|
||||||
"usb_product": "RP2040 DevKit"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "wiznet_5100s_evb_pico",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "wiznet_5100s_evb_pico",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1027",
|
"usb_pid": "0x1027"
|
||||||
"usb_manufacturer": "WIZnet",
|
|
||||||
"usb_product": "W5100S-EVB-Pico"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "wiznet_5500_evb_pico",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "wiznet_5500_evb_pico",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1029",
|
"usb_pid": "0x1029"
|
||||||
"usb_manufacturer": "WIZnet",
|
|
||||||
"usb_product": "W5500-EVB-Pico"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "wiznet_wizfi360_evb_pico",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "wiznet_wizfi360_evb_pico",
|
|
||||||
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
|
||||||
"usb_vid": "0x2e8a",
|
"usb_vid": "0x2e8a",
|
||||||
"usb_pid": "0x1028",
|
"usb_pid": "0x1028"
|
||||||
"usb_manufacturer": "WIZnet",
|
|
||||||
"usb_product": "WizFi360-EVB-Pico"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -188,14 +188,12 @@ def MakeBoardJSON(name, vendor_name, product_name, vid, pid, pwr, boarddefine, f
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mcu": "rp2040",
|
"mcu": "rp2040",
|
||||||
|
"variant": "VARIANTNAME",
|
||||||
"arduino": {
|
"arduino": {
|
||||||
"earlephilhower": {
|
"earlephilhower": {
|
||||||
"variant": "VARIANTNAME",
|
|
||||||
"boot2_source": "BOOT2.S",
|
"boot2_source": "BOOT2.S",
|
||||||
"usb_vid": "VID",
|
"usb_vid": "VID",
|
||||||
"usb_pid": "PID",
|
"usb_pid": "PID"
|
||||||
"usb_manufacturer": "VENDORNAME",
|
|
||||||
"usb_product": "PRODUCTNAME"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -226,7 +224,7 @@ def MakeBoardJSON(name, vendor_name, product_name, vid, pid, pwr, boarddefine, f
|
||||||
},
|
},
|
||||||
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
|
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
|
||||||
"vendor": "VENDORNAME"
|
"vendor": "VENDORNAME"
|
||||||
}""".replace('VARIANTNAME', name).replace('BOARDDEFINE', boarddefine).replace('BOOT2', boot2).replace('VID', vid).replace('PID', pid).replace('VENDORNAME', vendor_name).replace('PRODUCTNAME', product_name).replace('FLASHSIZE', str(1024*1024*flashsizemb)).replace('USBPWR', str(pwr))
|
}\n""".replace('VARIANTNAME', name).replace('BOARDDEFINE', boarddefine).replace('BOOT2', boot2).replace('VID', vid).replace('PID', pid).replace('VENDORNAME', vendor_name).replace('PRODUCTNAME', product_name).replace('FLASHSIZE', str(1024*1024*flashsizemb)).replace('USBPWR', str(pwr))
|
||||||
jsondir = os.path.abspath(os.path.dirname(__file__)) + "/json"
|
jsondir = os.path.abspath(os.path.dirname(__file__)) + "/json"
|
||||||
f = open(jsondir + "/" + name + ".json", "w")
|
f = open(jsondir + "/" + name + ".json", "w")
|
||||||
f.write(json)
|
f.write(json)
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,8 @@ ram_size = 256 * 1024 # not the 264K, which is 256K SRAM + 2*4K SCRATCH(X/Y).
|
||||||
FRAMEWORK_DIR = platform.get_package_dir("framework-arduinopico")
|
FRAMEWORK_DIR = platform.get_package_dir("framework-arduinopico")
|
||||||
assert os.path.isdir(FRAMEWORK_DIR)
|
assert os.path.isdir(FRAMEWORK_DIR)
|
||||||
|
|
||||||
# read includes from this file to add them into CPPPATH later
|
# read includes from this file to add them into CPPPATH later for good IDE intellisense
|
||||||
|
# will use original -iprefix <prefix> @<file> for compilation though.
|
||||||
includes_file = os.path.join(FRAMEWORK_DIR, "lib", "platform_inc.txt")
|
includes_file = os.path.join(FRAMEWORK_DIR, "lib", "platform_inc.txt")
|
||||||
file_lines = []
|
file_lines = []
|
||||||
includes = []
|
includes = []
|
||||||
|
|
@ -38,10 +39,41 @@ for l in file_lines:
|
||||||
# emulate -iprefix <framework path>.
|
# emulate -iprefix <framework path>.
|
||||||
path = os.path.join(FRAMEWORK_DIR, path)
|
path = os.path.join(FRAMEWORK_DIR, path)
|
||||||
# prevent non-existent paths from being added
|
# prevent non-existent paths from being added
|
||||||
# looking at you here, pico-extras/src/common/pico_audio and co.
|
|
||||||
if os.path.isdir(path):
|
if os.path.isdir(path):
|
||||||
includes.append(path)
|
includes.append(path)
|
||||||
|
|
||||||
|
def is_pio_build():
|
||||||
|
from SCons.Script import COMMAND_LINE_TARGETS
|
||||||
|
return "idedata" not in COMMAND_LINE_TARGETS and "_idedata" not in COMMAND_LINE_TARGETS
|
||||||
|
|
||||||
|
# get all activated macros
|
||||||
|
flatten_cppdefines = env.Flatten(env['CPPDEFINES'])
|
||||||
|
|
||||||
|
#
|
||||||
|
# Exceptions
|
||||||
|
#
|
||||||
|
stdcpp_lib = None
|
||||||
|
if "PIO_FRAMEWORK_ARDUINO_ENABLE_EXCEPTIONS" in flatten_cppdefines:
|
||||||
|
env.Append(
|
||||||
|
CXXFLAGS=["-fexceptions"]
|
||||||
|
)
|
||||||
|
stdcpp_lib = "stdc++-exc"
|
||||||
|
else:
|
||||||
|
env.Append(
|
||||||
|
CXXFLAGS=["-fno-exceptions"]
|
||||||
|
)
|
||||||
|
stdcpp_lib = "stdc++"
|
||||||
|
|
||||||
|
#
|
||||||
|
# RTTI
|
||||||
|
#
|
||||||
|
# standard is -fno-rtti flag. If special macro is present, don't
|
||||||
|
# add that flag.
|
||||||
|
if not "PIO_FRAMEWORK_ARDUINO_ENABLE_RTTI" in flatten_cppdefines:
|
||||||
|
env.Append(
|
||||||
|
CXXFLAGS=["-fno-rtti"]
|
||||||
|
)
|
||||||
|
|
||||||
# update progsize expression to also check for bootloader.
|
# update progsize expression to also check for bootloader.
|
||||||
env.Replace(
|
env.Replace(
|
||||||
SIZEPROGREGEXP=r"^(?:\.boot2|\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*"
|
SIZEPROGREGEXP=r"^(?:\.boot2|\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*"
|
||||||
|
|
@ -57,11 +89,8 @@ env.Append(
|
||||||
"-mcpu=cortex-m0plus",
|
"-mcpu=cortex-m0plus",
|
||||||
"-mthumb",
|
"-mthumb",
|
||||||
"-ffunction-sections",
|
"-ffunction-sections",
|
||||||
"-fdata-sections",
|
"-fdata-sections"
|
||||||
# use explicit include (-I) paths, otherwise it's
|
# -iprefix etc. added lader if in build mode
|
||||||
# not visible in the IDE's intellisense.
|
|
||||||
#"-iprefix" + os.path.join(FRAMEWORK_DIR),
|
|
||||||
#"@%s" % os.path.join(FRAMEWORK_DIR, "lib", "platform_inc.txt")
|
|
||||||
],
|
],
|
||||||
|
|
||||||
CFLAGS=[
|
CFLAGS=[
|
||||||
|
|
@ -70,8 +99,6 @@ env.Append(
|
||||||
|
|
||||||
CXXFLAGS=[
|
CXXFLAGS=[
|
||||||
"-std=gnu++17",
|
"-std=gnu++17",
|
||||||
"-fno-exceptions",
|
|
||||||
"-fno-rtti",
|
|
||||||
],
|
],
|
||||||
|
|
||||||
CPPDEFINES=[
|
CPPDEFINES=[
|
||||||
|
|
@ -114,10 +141,18 @@ env.Append(
|
||||||
# link lib/libpico.a by full path, ignore libstdc++
|
# link lib/libpico.a by full path, ignore libstdc++
|
||||||
LIBS=[
|
LIBS=[
|
||||||
File(os.path.join(FRAMEWORK_DIR, "lib", "libpico.a")),
|
File(os.path.join(FRAMEWORK_DIR, "lib", "libpico.a")),
|
||||||
"m", "c", "stdc++", "c"]
|
"m", "c", stdcpp_lib, "c"]
|
||||||
)
|
)
|
||||||
# expand with read includes
|
|
||||||
env.Append(CPPPATH=includes)
|
# expand with read includes for IDE, but use -iprefix command for actual building
|
||||||
|
if not is_pio_build():
|
||||||
|
env.Append(CPPPATH=includes)
|
||||||
|
else:
|
||||||
|
env.Append(CCFLAGS=[
|
||||||
|
"-iprefix" + os.path.join(FRAMEWORK_DIR),
|
||||||
|
"@%s" % os.path.join(FRAMEWORK_DIR, "lib", "platform_inc.txt")
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
def configure_usb_flags(cpp_defines):
|
def configure_usb_flags(cpp_defines):
|
||||||
global ram_size
|
global ram_size
|
||||||
|
|
@ -223,8 +258,8 @@ linkerscript_cmd = env.Command(
|
||||||
|
|
||||||
# if no custom linker script is provided, we use the command that we prepared to generate one.
|
# if no custom linker script is provided, we use the command that we prepared to generate one.
|
||||||
if not board.get("build.ldscript", ""):
|
if not board.get("build.ldscript", ""):
|
||||||
# execute fetch filesystem info stored in env to alawys have that info ready
|
# execute fetch filesystem info stored in env to always have that info ready
|
||||||
env["fetch_fs_size"](env)
|
env["__fetch_fs_size"](env)
|
||||||
env.Depends("$BUILD_DIR/${PROGNAME}.elf", linkerscript_cmd)
|
env.Depends("$BUILD_DIR/${PROGNAME}.elf", linkerscript_cmd)
|
||||||
env.Replace(LDSCRIPT_PATH=os.path.join("$BUILD_DIR", "memmap_default.ld"))
|
env.Replace(LDSCRIPT_PATH=os.path.join("$BUILD_DIR", "memmap_default.ld"))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue