forked from platformio/platformio-core
Merge branch 'release/v3.1.0'
This commit is contained in:
@ -12,11 +12,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
[run]
|
||||
omit =
|
||||
platformio/builder/*
|
||||
source = platformio
|
||||
|
||||
[report]
|
||||
# Regexes for lines to exclude from consideration
|
||||
exclude_lines =
|
||||
|
60
HISTORY.rst
60
HISTORY.rst
@ -4,6 +4,66 @@ Release Notes
|
||||
PlatformIO 3.0
|
||||
--------------
|
||||
|
||||
3.1.0 (2016-09-19)
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* New! Dynamic variables/templates for `Project Configuration File "platformio.ini" <http://docs.platformio.org/en/stable/projectconf.html>`__
|
||||
(`issue #705 <https://github.com/platformio/platformio/issues/705>`_)
|
||||
* Summary about processed environments
|
||||
(`issue #777 <https://github.com/platformio/platformio/issues/777>`_)
|
||||
* Implemented LocalCache system for API and improved a work in off-line mode
|
||||
* Improved Project Generator when custom ``--project-option`` is passed to
|
||||
`platformio init <http://docs.platformio.org/en/stable/userguide/cmd_init.html>`__
|
||||
command
|
||||
* Deprecated ``lib_force`` option, please use `lib_deps <http://docs.platformio.org/en/stable/projectconf.html#lib-deps>`__ instead
|
||||
* Return valid exit code from ``plaformio test`` command
|
||||
* Fixed Project Generator for CLion IDE using Windows OS
|
||||
(`issue #785 <https://github.com/platformio/platformio/issues/785>`_)
|
||||
* Fixed SSL Server-Name-Indication for Python < 2.7.9
|
||||
(`issue #774 <https://github.com/platformio/platformio/issues/774>`_)
|
||||
|
||||
-------
|
||||
|
||||
* Development platform `Espressif 8266 <https://github.com/platformio/platform-espressif8266>`__
|
||||
|
||||
+ Add support for `SparkFun Blynk Board <https://www.sparkfun.com/products/13794>`_
|
||||
+ Created `staging <http://docs.platformio.org/en/stable/platforms/espressif8266.html#using-arduino-framework-with-staging-version>`__
|
||||
branch to work with development version of Arduino Framework
|
||||
|
||||
* Development platform `Freescale Kinetis <https://github.com/platformio/platform-freescalekinetis>`__
|
||||
|
||||
+ Added support for new boards: FRDM-KL26Z, FRDM-KL27Z, FRDM-KL43Z, Hexiwear
|
||||
|
||||
* Development platform `Nordic nRF51 <https://github.com/platformio/platform-nordicnrf51>`__
|
||||
|
||||
+ Added support for new boards: Seeed Arch BLE, Seeed Arch Link, Switch
|
||||
Science mbed TY51822r3, y5 nRF51822 mbug, JKSoft Wallbot BLE
|
||||
|
||||
* Development platform `NXP LPC <https://github.com/platformio/platform-nxplpc>`__
|
||||
|
||||
+ Added support for new boards: ARM mbed LPC11U24 (+CAN), Bambino-210E,
|
||||
CoCo-ri-Co!, DipCortex M3, LPCXpresso11U68, LPCXpresso824-MAX, mBuino,
|
||||
MicroNFCBoard, NXP LPC11C24, NXP LPC11U34, EA LPC11U35 QuickStart Board,
|
||||
NXP LPC11U37, NXP LPC2368, NXP LPC2460, NXP LPC800-MAX, Seeed Arch GPRS V2,
|
||||
Seeed Xadow M0, Smeshlink xbed LPC1768, Switch Science mbed LPC824
|
||||
|
||||
* Development platform `ST STM32 <https://github.com/platformio/platform-ststm32>`__
|
||||
|
||||
+ New Arduino framework for ST STM32 -
|
||||
`STM32Duino <https://github.com/rogerclarkmelbourne/Arduino_STM32>`__.
|
||||
Supported boards: BluePill F103C8, Generic STM32F103C8, Generic STM32F103R8,
|
||||
Generic STM32F103RB, Generic STM32F103RC, Generic STM32F103RE, Olimexino STM32
|
||||
|
||||
+ Added support for new ARM mbed based boards: ST 32F746GDISCOVER,
|
||||
MultiTech mDot, ST Nucleo F207ZG, ST Nucleo F429ZI, ST Nucleo F446ZE,
|
||||
ST Nucleo F746ZG, ST Nucleo F767ZI, ST Nucleo L011K4, ST Nucleo L432KC,
|
||||
Seeed Arch Max
|
||||
|
||||
* Development platform `Teensy <https://github.com/platformio/platform-teensy>`__
|
||||
|
||||
+ Added support for Teensy 3.5 and 3.6 boards
|
||||
+ Updated Arduino Framework for Teensy to v130
|
||||
|
||||
3.0.1 (2016-09-08)
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -18,7 +18,7 @@ PlatformIO
|
||||
.. image:: https://img.shields.io/pypi/l/platformio.svg
|
||||
:target: https://pypi.python.org/pypi/platformio/
|
||||
:alt: License
|
||||
.. image:: https://img.shields.io/community/PlatformIO.png
|
||||
.. image:: https://img.shields.io/PlatformIO/Community.png
|
||||
:alt: Community Forums
|
||||
:target: https://community.platformio.org
|
||||
.. image:: https://img.shields.io/PlatformIO/Plus.png?color=orange
|
||||
|
@ -23,6 +23,7 @@ Here are recent articles/reviews about PlatformIO:
|
||||
2016
|
||||
^^^^
|
||||
|
||||
* Sep 12, 2016 - **Pedro Minatel** - `OTA – Como programar o ESP8266 pelo WiFi no platformIO (OTA programming for ESP8266 via Wi-Fi using PlatformIO, Portuguese) <http://pedrominatel.com.br/esp8266/ota-como-programar-o-esp8266-pelo-wifi-no-platformio/>`_
|
||||
* Sep 2, 2016 - **Tinkerman** `ESP8266: Optimizing files for SPIFFS with Gulp <http://tinkerman.cat/optimizing-files-for-spiffs-with-gulp/>`_
|
||||
* Aug 28, 2016 - **Tom Parker** `Using the BBC micro:bit with PlatformIO <http://www.lshift.net/blog/2016/08/28/using-the-bbc-microbit-with-platformio/>`_
|
||||
* Aug 24, 2016 - **Primal Cortex** `Cloud based continuous integration and delivery for IOT using PlatformIO <https://primalcortex.wordpress.com/2016/08/24/cloud-based-continuous-integration-and-delivery-for-iot-using-platformio/>`_
|
||||
|
@ -55,7 +55,7 @@ Library Manager
|
||||
Used in demo
|
||||
~~~~~~~~~~~~
|
||||
|
||||
1. :ref:`userguide_lib`
|
||||
1. :ref:`cmd_lib`
|
||||
2. :ref:`platformio lib search 1-wire <cmd_lib_search>` command
|
||||
3. :ref:`platformio lib install 54 <cmd_lib_install>` command
|
||||
4. :ref:`platformio lib search -f mbed <cmd_lib_search>` command
|
||||
|
@ -163,6 +163,6 @@ Allows to override setting :ref:`setting_enable_telemetry`.
|
||||
Allows to override setting :ref:`setting_force_verbose`.
|
||||
|
||||
|
||||
.. envvar:: PLATFORMIO_SETTING_DISABLE_SSL
|
||||
.. envvar:: PLATFORMIO_SETTING_ENABLE_SSL
|
||||
|
||||
Allows to override setting :ref:`setting_disable_ssl`.
|
||||
Allows to override setting :ref:`setting_enable_ssl`.
|
||||
|
@ -45,6 +45,9 @@ Platforms
|
||||
* - :ref:`platform_nordicnrf51`
|
||||
- The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell.
|
||||
|
||||
* - :ref:`platform_ststm32`
|
||||
- The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.
|
||||
|
||||
* - :ref:`platform_teensy`
|
||||
- Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port.
|
||||
|
||||
@ -856,7 +859,7 @@ Espressif
|
||||
- ESP8266
|
||||
- 80 MHz
|
||||
- 4096 Kb
|
||||
- 50 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``phoenix_v1``
|
||||
- `Phoenix 1.0 <http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family>`_
|
||||
@ -906,6 +909,68 @@ Fubarino
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
Generic
|
||||
~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``bluepill_f103c8``
|
||||
- `BluePill F103C8 <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103c8.html>`_
|
||||
- STM32F103C8T6
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103C8``
|
||||
- `STM32F103C8 (20k RAM. 64k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103c8.html>`_
|
||||
- STM32F103C8
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103CB``
|
||||
- `STM32F103CB (20k RAM. 128k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103cb.html>`_
|
||||
- STM32F103CB
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103R8``
|
||||
- `STM32F103R8 (20k RAM. 64 Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103r8.html>`_
|
||||
- STM32F103R8
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103RB``
|
||||
- `STM32F103RB (20k RAM. 128k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103rb.html>`_
|
||||
- STM32F103RB
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103RC``
|
||||
- `STM32F103RC (48k RAM. 256k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103rc.html>`_
|
||||
- STM32F103RC
|
||||
- 72 MHz
|
||||
- 256 Kb
|
||||
- 48 Kb
|
||||
|
||||
* - ``genericSTM32F103RE``
|
||||
- `STM32F103RE (64k RAM. 512k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103re.html>`_
|
||||
- STM32F103RE
|
||||
- 72 MHz
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
Generic ATTiny
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
@ -1233,6 +1298,13 @@ Olimex
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``maple``
|
||||
- `Olimexino STM32 <https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/>`_
|
||||
- STM32F103RB_MAPLE
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 16.6015625 Kb
|
||||
|
||||
* - ``modwifi``
|
||||
- `Olimex MOD-WIFI-ESP8266(-DEV) <https://www.olimex.com/Products/IoT/MOD-WIFI-ESP8266-DEV/open-source-hardware>`_
|
||||
- ESP8266
|
||||
@ -1590,6 +1662,13 @@ SparkFun
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``sparkfunBlynk``
|
||||
- `SparkFun Blynk Board <https://www.sparkfun.com/products/13794>`_
|
||||
- ESP8266
|
||||
- 80 MHz
|
||||
- 4096 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``sparkfun_digitalsandbox``
|
||||
- `SparkFun Digital Sandbox <https://www.sparkfun.com/products/12651>`_
|
||||
- ATMEGA328P
|
||||
@ -1749,6 +1828,20 @@ Teensy
|
||||
- 256 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``teensy35``
|
||||
- `Teensy 3.5 <https://www.pjrc.com>`_
|
||||
- MK64FX512
|
||||
- 120 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
|
||||
* - ``teensy36``
|
||||
- `Teensy 3.6 <https://www.pjrc.com>`_
|
||||
- MK66FX1M0
|
||||
- 180 MHz
|
||||
- 1024 Kb
|
||||
- 256 Kb
|
||||
|
||||
* - ``teensylc``
|
||||
- `Teensy LC <http://www.pjrc.com/teensy/teensyLC.html>`_
|
||||
- MKL26Z64
|
||||
|
@ -170,6 +170,26 @@ Delta
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
Elektor Labs
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``elektor_cocorico``
|
||||
- `CoCo-ri-Co! <https://developer.mbed.org/platforms/CoCo-ri-Co/>`_
|
||||
- LPC812
|
||||
- 30 MHz
|
||||
- 16 Kb
|
||||
- 4 Kb
|
||||
|
||||
Embedded Artists
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -184,7 +204,7 @@ Embedded Artists
|
||||
- RAM
|
||||
|
||||
* - ``lpc11u35``
|
||||
- `Embedded Artists LPC11U35 QuickStart Board <https://developer.mbed.org/platforms/EA-LPC11U35/>`_
|
||||
- `EA LPC11U35 QuickStart Board <https://developer.mbed.org/platforms/EA-LPC11U35/>`_
|
||||
- LPC11U35
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
@ -259,6 +279,27 @@ Freescale
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl26z``
|
||||
- `Freescale Kinetis FRDM-KL26Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl16-and-kl26-mcus-up-to-128-kb-flash:FRDM-KL26Z>`_
|
||||
- MKL26Z128VLH4
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl27z``
|
||||
- `Freescale Kinetis FRDM-KL27Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl17-and-kl27-mcus:FRDM-KL27Z>`_
|
||||
- MKL27Z64VLH4
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl43z``
|
||||
- `Freescale Kinetis FRDM-KL43Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl43-kl33-kl27-kl17-and-kl13-mcus:FRDM-KL43Z>`_
|
||||
- MKL43Z256VLH4
|
||||
- 48 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
* - ``frdm_kl46z``
|
||||
- `Freescale Kinetis FRDM-KL46Z <https://developer.mbed.org/platforms/FRDM-KL46Z/>`_
|
||||
- MKL46Z256VLL4
|
||||
@ -266,6 +307,26 @@ Freescale
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
GHI Electronics
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``oc_mbuino``
|
||||
- `mBuino <https://developer.mbed.org/platforms/mBuino/>`_
|
||||
- LPC11U24
|
||||
- 50 MHz
|
||||
- 32 Kb
|
||||
- 10 Kb
|
||||
|
||||
Generic
|
||||
~~~~~~~
|
||||
|
||||
@ -299,13 +360,53 @@ JKSoft
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``wallBotBLE``
|
||||
* - ``wallbot_ble``
|
||||
- `JKSoft Wallbot BLE <https://developer.mbed.org/platforms/JKSoft-Wallbot-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
Micromint
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc4330_m4``
|
||||
- `Bambino-210E <https://developer.mbed.org/platforms/Micromint-Bambino-210E/>`_
|
||||
- LPC4330
|
||||
- 204 MHz
|
||||
- 8192 Kb
|
||||
- 264 Kb
|
||||
|
||||
MikroElektronika
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``hexiwear``
|
||||
- `Hexiwear <https://developer.mbed.org/platforms/Hexiwear/>`_
|
||||
- MK64FN1M0VDC12
|
||||
- 120 MHz
|
||||
- 1024 Kb
|
||||
- 256 Kb
|
||||
|
||||
MultiTech
|
||||
~~~~~~~~~
|
||||
|
||||
@ -319,6 +420,13 @@ MultiTech
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``mts_mdot_f405rg``
|
||||
- `MultiTech mDot <https://developer.mbed.org/platforms/MTS-mDot-F411/>`_
|
||||
- STM32F411RET6
|
||||
- 100 MHz
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``mts_mdot_f411re``
|
||||
- `MultiTech mDot F411 <https://developer.mbed.org/platforms/MTS-mDot-F411/>`_
|
||||
- STM32F411RET6
|
||||
@ -359,6 +467,13 @@ NXP
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc11c24``
|
||||
- `NXP LPC11C24 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/scalable-entry-level-32-bit-microcontroller-mcu-based-on-arm-cortex-m0-plus-m0-cores:LPC11C24FBD48>`_
|
||||
- LPC11C24
|
||||
- 48 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u24``
|
||||
- `NXP mbed LPC11U24 <https://developer.mbed.org/platforms/mbed-LPC11U24/>`_
|
||||
- LPC11U24
|
||||
@ -366,6 +481,34 @@ NXP
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u24_301``
|
||||
- `ARM mbed LPC11U24 (+CAN) <https://developer.mbed.org/handbook/mbed-NXP-LPC11U24>`_
|
||||
- LPC11U24
|
||||
- 48 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u34_421``
|
||||
- `NXP LPC11U34 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/40kb-flash-8kb-sram-lqfp48-package:LPC11U34FBD48?lang_cd=en>`_
|
||||
- LPC11U34
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u37_501``
|
||||
- `NXP LPC11U37 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/128kb-flash-10kb-sram-lqfp48-package:LPC11U37FBD48?lang_cd=en>`_
|
||||
- LPC11U37
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 10 Kb
|
||||
|
||||
* - ``lpc11u68``
|
||||
- `LPCXpresso11U68 <https://developer.mbed.org/platforms/LPCXpresso11U68/>`_
|
||||
- LPC11U68
|
||||
- 50 MHz
|
||||
- 256 Kb
|
||||
- 36 Kb
|
||||
|
||||
* - ``lpc1549``
|
||||
- `NXP LPCXpresso1549 <https://developer.mbed.org/platforms/LPCXpresso1549/>`_
|
||||
- LPC1549
|
||||
@ -380,6 +523,41 @@ NXP
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``lpc2368``
|
||||
- `NXP LPC2368 <https://developer.mbed.org/platforms/mbed-LPC2368/>`_
|
||||
- LPC2368
|
||||
- 72 MHz
|
||||
- 512 Kb
|
||||
- 58 Kb
|
||||
|
||||
* - ``lpc2460``
|
||||
- `NXP LPC2460 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-arm7-arm9-mcus/lpc-arm7-mcus/lpc2100-200-300-400/flashless-16-bit-32-bit-microcontroller-ethernet-can-isp-iap-usb-2.0-device-host-otg-external-memory-interface:LPC2460FBD208>`_
|
||||
- LPC2460
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``lpc812``
|
||||
- `NXP LPC800-MAX <https://developer.mbed.org/platforms/NXP-LPC800-MAX/>`_
|
||||
- LPC812
|
||||
- 30 MHz
|
||||
- 16 Kb
|
||||
- 4 Kb
|
||||
|
||||
* - ``lpc824``
|
||||
- `LPCXpresso824-MAX <https://developer.mbed.org/platforms/LPCXpresso824-MAX/>`_
|
||||
- LPC824
|
||||
- 30 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``micronfcboard``
|
||||
- `MicroNFCBoard <https://developer.mbed.org/platforms/MicroNFCBoard/>`_
|
||||
- LPC11U34
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
Nordic
|
||||
~~~~~~
|
||||
|
||||
@ -530,6 +708,13 @@ ST
|
||||
- 1024 Kb
|
||||
- 384 Kb
|
||||
|
||||
* - ``disco_f746ng``
|
||||
- `ST 32F746GDISCOVERY <http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f746gdiscovery.html>`_
|
||||
- STM32F746NGH6
|
||||
- 216 MHz
|
||||
- 1024 Kb
|
||||
- 320 Kb
|
||||
|
||||
* - ``disco_l053c8``
|
||||
- `ST 32L0538DISCOVERY <http://www.st.com/web/en/catalog/tools/PF260319>`_
|
||||
- STM32L053C8T6
|
||||
@ -593,6 +778,13 @@ ST
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``nucleo_f207zg``
|
||||
- `ST Nucleo F207ZG <https://developer.mbed.org/platforms/ST-Nucleo-F207ZG/>`_
|
||||
- STM32F207ZGT6
|
||||
- 120 MHz
|
||||
- 1024 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f302r8``
|
||||
- `ST Nucleo F302R8 <https://developer.mbed.org/platforms/ST-Nucleo-F302R8/>`_
|
||||
- STM32F302R8T6
|
||||
@ -642,6 +834,13 @@ ST
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f429zi``
|
||||
- `ST Nucleo F429ZI <https://developer.mbed.org/platforms/ST-Nucleo-F429ZI/>`_
|
||||
- STM32F429ZIT6
|
||||
- 180 MHz
|
||||
- 2048 Kb
|
||||
- 256 Kb
|
||||
|
||||
* - ``nucleo_f446re``
|
||||
- `ST Nucleo F446RE <https://developer.mbed.org/platforms/ST-Nucleo-F446RE/>`_
|
||||
- STM32F446RET6
|
||||
@ -649,6 +848,34 @@ ST
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f446ze``
|
||||
- `ST Nucleo F446ZE <https://developer.mbed.org/platforms/ST-Nucleo-F446ZE/>`_
|
||||
- STM32F446ZET6
|
||||
- 180 MHz
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f746zg``
|
||||
- `ST Nucleo F746ZG <https://developer.mbed.org/platforms/ST-Nucleo-F446ZE/>`_
|
||||
- STM32F746ZGT6
|
||||
- 216 MHz
|
||||
- 1024 Kb
|
||||
- 320 Kb
|
||||
|
||||
* - ``nucleo_f767zi``
|
||||
- `ST Nucleo F767ZI <https://developer.mbed.org/platforms/ST-Nucleo-F767ZI/>`_
|
||||
- STM32F746ZGT6
|
||||
- 216 MHz
|
||||
- 2048 Kb
|
||||
- 512 Kb
|
||||
|
||||
* - ``nucleo_l011k4``
|
||||
- `ST Nucleo L011K4 <https://developer.mbed.org/platforms/ST-Nucleo-L011K4/>`_
|
||||
- STM32L011K4T6
|
||||
- 32 MHz
|
||||
- 16 Kb
|
||||
- 2 Kb
|
||||
|
||||
* - ``nucleo_l031k6``
|
||||
- `ST Nucleo L031K6 <https://developer.mbed.org/platforms/ST-Nucleo-L031K6/>`_
|
||||
- STM32L031K6T6
|
||||
@ -677,6 +904,13 @@ ST
|
||||
- 512 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``nucleo_l432kc``
|
||||
- `ST Nucleo L432KC <https://developer.mbed.org/platforms/ST-Nucleo-L432KC/>`_
|
||||
- STM32L432KCU6
|
||||
- 80 MHz
|
||||
- 256 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``nucleo_l476rg``
|
||||
- `ST Nucleo L476RG <https://developer.mbed.org/platforms/ST-Nucleo-L476RG/>`_
|
||||
- STM32L476RGT6
|
||||
@ -697,27 +931,55 @@ SeeedStudio
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``seeedArchMax``
|
||||
- `SeeedStudio Arch Max <https://developer.mbed.org/platforms/Seeed-Arch-Max/>`_
|
||||
- STM32F407VET6
|
||||
- 168 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
* - ``seeedArchBLE``
|
||||
- `Seeed Arch BLE <https://developer.mbed.org/platforms/Seeed-Arch-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``seeedTinyBLE``
|
||||
- `SeeedStudio Seeed Tiny BLE <http://developer.mbed.org/platforms/Seeed-Tiny-BLE/>`_
|
||||
* - ``seeedArchGPRS``
|
||||
- `Seeed Arch GPRS V2 <https://www.seeedstudio.com/Arch-GPRS-V2-p-2026.html>`_
|
||||
- LPC11U37
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 10 Kb
|
||||
|
||||
* - ``seeedArchLink``
|
||||
- `Seeed Arch Link <https://developer.mbed.org/platforms/Seeed-Arch-Link/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``seeeduinoArchPro``
|
||||
- `SeeedStudio Seeeduino-Arch-Pro <https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/>`_
|
||||
* - ``seeedArchMax``
|
||||
- `Seeed Arch Max <https://developer.mbed.org/platforms/Seeed-Arch-Max/>`_
|
||||
- STM32F407VET6
|
||||
- 168 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
|
||||
* - ``seeedArchPro``
|
||||
- `Seeed Arch Pro <https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/>`_
|
||||
- LPC1768
|
||||
- 96 MHz
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``seeedTinyBLE``
|
||||
- `Seeed Tiny BLE <http://developer.mbed.org/platforms/Seeed-Tiny-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``xadow_m0``
|
||||
- `Seeed Xadow M0 <https://developer.mbed.org/platforms/Seeed-Xadow-M0/>`_
|
||||
- LPC11U35
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
Silicon Labs
|
||||
~~~~~~~~~~~~
|
||||
|
||||
@ -773,6 +1035,26 @@ Silicon Labs
|
||||
- 32 Kb
|
||||
- 4 Kb
|
||||
|
||||
Smeshlink
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``xbed_lpc1768``
|
||||
- `Smeshlink xbed LPC1768 <https://developer.mbed.org/platforms/xbed-LPC1768/>`_
|
||||
- LPC1768
|
||||
- 96 MHz
|
||||
- 512 Kb
|
||||
- 32 Kb
|
||||
|
||||
Solder Splash Labs
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -793,6 +1075,26 @@ Solder Splash Labs
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
SolderSplash Labs
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc1347``
|
||||
- `DipCortex M3 <https://developer.mbed.org/platforms/DipCortex-M3/>`_
|
||||
- LPC1347
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 12 Kb
|
||||
|
||||
Switch Science
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
@ -820,6 +1122,20 @@ Switch Science
|
||||
- 32 Kb
|
||||
- 4 Kb
|
||||
|
||||
* - ``ssci824``
|
||||
- `Switch Science mbed LPC824 <https://developer.mbed.org/platforms/Switch-Science-mbed-LPC824/>`_
|
||||
- LPC824
|
||||
- 30 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``ty51822r3``
|
||||
- `Switch Science mbed TY51822r3 <https://developer.mbed.org/platforms/Switch-Science-mbed-TY51822r3/>`_
|
||||
- NRF51822
|
||||
- 32 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
Teensy
|
||||
~~~~~~
|
||||
|
||||
@ -860,4 +1176,24 @@ u-blox
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
y5 design
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``nrf51822_y5_mbug``
|
||||
- `y5 nRF51822 mbug <https://developer.mbed.org/platforms/Y5-NRF51822-MBUG/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
.. include:: mbed_extra.rst
|
||||
|
@ -15,8 +15,8 @@
|
||||
|
||||
* Cross-platform build system without external dependencies to the OS software:
|
||||
|
||||
- 250+ embedded boards
|
||||
- 20+ development platforms
|
||||
- 300+ embedded boards
|
||||
- 15+ development platforms
|
||||
- 10+ frameworks
|
||||
|
||||
* C/C++ Intelligent code completion
|
||||
|
@ -18,8 +18,8 @@ PlatformIO IDE is the next-generation integrated development environment for IoT
|
||||
|
||||
* Cross-platform build system without external dependencies to the OS software:
|
||||
|
||||
- 250+ embedded boards
|
||||
- 20+ development platforms
|
||||
- 300+ embedded boards
|
||||
- 15+ development platforms
|
||||
- 10+ frameworks
|
||||
|
||||
* C/C++ Intelligent Code Completion
|
||||
|
@ -167,6 +167,8 @@ For upgrading ``platformio`` to the latest version:
|
||||
|
||||
pip install -U platformio
|
||||
|
||||
.. _installation_develop:
|
||||
|
||||
Development Version
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -196,7 +196,7 @@ dash. `Semantic Versioning <http://semver.org>`_ IS RECOMMENDED.
|
||||
field is defined.
|
||||
|
||||
|PIOAPICR| will use the
|
||||
`CVS <http://en.wikipedia.org/wiki/Concurrent_Versions_System>`_ revision from
|
||||
`VCS <http://en.wikipedia.org/wiki/Concurrent_Versions_System>`_ revision from
|
||||
the latest commit as "current version". For example, ``13`` (*SVN*) or first
|
||||
10 chars of *SHA* digest ``e4564b7da4`` (*Git*). If :ref:`libjson_repository`
|
||||
``branch`` is not specified, then default branch will be used.
|
||||
|
@ -44,34 +44,63 @@ If a library source code is located at `GitHub <https://github.com>`_, then
|
||||
you **need to specify** only these fields in the :ref:`library_config`:
|
||||
|
||||
* :ref:`libjson_name`
|
||||
* :ref:`libjson_version` (is not required, but highly recommended for new :ref:`librarymanager`)
|
||||
* :ref:`libjson_keywords`
|
||||
* :ref:`libjson_description`
|
||||
* :ref:`libjson_repository`
|
||||
|
||||
|PIOAPICR| will populate the rest fields, like :ref:`libjson_version` or
|
||||
:ref:`libjson_authors` with an actual information from *GitHub*.
|
||||
|PIOAPICR| will populate the rest fields, like :ref:`libjson_authors` with an
|
||||
actual information from *GitHub*.
|
||||
|
||||
Example:
|
||||
Example, `DallasTemperature <http://platformio.org/lib/show/54/DallasTemperature/manifest>`_:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
{
|
||||
"name": "IRremote",
|
||||
"keywords": "infrared, ir, remote",
|
||||
"description": "Send and receive infrared signals with multiple protocols",
|
||||
"repository":
|
||||
"name": "DallasTemperature",
|
||||
"keywords": "onewire, 1-wire, bus, sensor, temperature",
|
||||
"description": "Arduino Library for Dallas Temperature ICs (DS18B20, DS18S20, DS1822, DS1820)",
|
||||
"repository":
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/milesburton/Arduino-Temperature-Control-Library.git"
|
||||
},
|
||||
"authors":
|
||||
[
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/shirriff/Arduino-IRremote.git"
|
||||
"name": "Miles Burton",
|
||||
"email": "miles@mnetcs.com",
|
||||
"url": "http://www.milesburton.com",
|
||||
"maintainer": true
|
||||
},
|
||||
"frameworks": "arduino",
|
||||
"platforms": "atmelavr"
|
||||
{
|
||||
"name": "Tim Newsome",
|
||||
"email": "nuisance@casualhacker.net"
|
||||
},
|
||||
{
|
||||
"name": "Guil Barros",
|
||||
"email": "gfbarros@bappos.com"
|
||||
},
|
||||
{
|
||||
"name": "Rob Tillaart",
|
||||
"email": "rob.tillaart@gmail.com"
|
||||
}
|
||||
],
|
||||
"dependencies":
|
||||
{
|
||||
"name": "OneWire",
|
||||
"authors": "Paul Stoffregen",
|
||||
"frameworks": "arduino"
|
||||
},
|
||||
"version": "3.7.7",
|
||||
"frameworks": "arduino",
|
||||
"platforms": "*"
|
||||
}
|
||||
|
||||
Under CVS (SVN/GIT)
|
||||
Under VCS (SVN/GIT)
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|PIOAPICR| can operate with a library source code that is under *CVS* control.
|
||||
|PIOAPICR| can operate with a library source code that is under *VCS* control.
|
||||
The list of **required** fields in the :ref:`library_config` will look like:
|
||||
|
||||
* :ref:`libjson_name`
|
||||
|
@ -20,14 +20,16 @@ Hg, SVN). It makes it exceedingly simple to find, install and keep libraries
|
||||
up-to-date. PlatformIO Library Manager supports
|
||||
`Semantic Versioning <http://semver.org>`_ and its rules.
|
||||
|
||||
There 2 options how to find library:
|
||||
There are 2 options how to find library:
|
||||
|
||||
* `Web Library Search <http://platformio.org/lib>`__
|
||||
* :ref:`Command Line Interface <cmd_lib_search>`
|
||||
* `Web-based Library Search <http://platformio.org/lib>`__
|
||||
|
||||
*PlatformIO Library Manager* allows to manage different library storages using
|
||||
You can manage different library storages using
|
||||
:option:`platformio lib --global` or :option:`platformio lib --storage-dir`
|
||||
options.
|
||||
options. If you change current working directory in terminal to project folder,
|
||||
then :ref:`platformio lib <cmd_lib>` command will manage automatically dependency
|
||||
storage in :ref:`projectconf_pio_libdeps_dir`.
|
||||
|
||||
Project dependencies
|
||||
--------------------
|
||||
|
@ -32,7 +32,6 @@ Library Dependency Finder has controls that can be set up in :ref:`projectconf`:
|
||||
|
||||
* :ref:`projectconf_lib_deps`
|
||||
* :ref:`projectconf_lib_extra_dirs`
|
||||
* :ref:`projectconf_lib_force`
|
||||
* :ref:`projectconf_lib_ignore`
|
||||
* :ref:`projectconf_lib_compat_mode`
|
||||
* :ref:`projectconf_lib_ldf_mode`
|
||||
|
@ -40,9 +40,6 @@ Packages
|
||||
* - ``tool-micronucleus``
|
||||
- `Micronucleus <https://github.com/micronucleus/micronucleus>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-atmelavr``
|
||||
- `avr-gcc <https://gcc.gnu.org/wiki/avr-gcc>`_, `GDB <http://www.gnu.org/software/gdb/>`_, `AVaRICE <http://avarice.sourceforge.net/>`_, `SimulAVR <http://www.nongnu.org/simulavr/>`_
|
||||
|
||||
|
@ -46,9 +46,6 @@ Packages
|
||||
* - ``tool-openocd``
|
||||
- `OpenOCD <http://openocd.org>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccarmnoneeabi``
|
||||
- `gcc-arm-embedded <https://launchpad.net/gcc-arm-embedded>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
|
@ -74,6 +74,9 @@ Packages
|
||||
* - ``framework-arduinosam``
|
||||
- `Arduino Wiring-based Framework (SAM Core, 1.6) <http://arduino.cc/en/Reference/HomePage>`_
|
||||
|
||||
* - ``framework-arduinoststm32``
|
||||
- `Arduino Wiring-based Framework (STM32 Core) <https://github.com/rogerclarkmelbourne/Arduino_STM32>`_
|
||||
|
||||
* - ``framework-arduinoteensy``
|
||||
- `Arduino Wiring-based Framework <http://arduino.cc/en/Reference/HomePage>`_
|
||||
|
||||
|
@ -890,6 +890,26 @@ ESPino
|
||||
- 4096 Kb
|
||||
- 80 Kb
|
||||
|
||||
Elektor Labs
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``elektor_cocorico``
|
||||
- `CoCo-ri-Co! <https://developer.mbed.org/platforms/CoCo-ri-Co/>`_
|
||||
- LPC812
|
||||
- 30 MHz
|
||||
- 16 Kb
|
||||
- 4 Kb
|
||||
|
||||
Embedded Artists
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -904,7 +924,7 @@ Embedded Artists
|
||||
- RAM
|
||||
|
||||
* - ``lpc11u35``
|
||||
- `Embedded Artists LPC11U35 QuickStart Board <https://developer.mbed.org/platforms/EA-LPC11U35/>`_
|
||||
- `EA LPC11U35 QuickStart Board <https://developer.mbed.org/platforms/EA-LPC11U35/>`_
|
||||
- LPC11U35
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
@ -1011,7 +1031,7 @@ Espressif
|
||||
- ESP8266
|
||||
- 80 MHz
|
||||
- 4096 Kb
|
||||
- 50 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``phoenix_v1``
|
||||
- `Phoenix 1.0 <http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family>`_
|
||||
@ -1089,6 +1109,27 @@ Freescale
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl26z``
|
||||
- `Freescale Kinetis FRDM-KL26Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl16-and-kl26-mcus-up-to-128-kb-flash:FRDM-KL26Z>`_
|
||||
- MKL26Z128VLH4
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl27z``
|
||||
- `Freescale Kinetis FRDM-KL27Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl17-and-kl27-mcus:FRDM-KL27Z>`_
|
||||
- MKL27Z64VLH4
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl43z``
|
||||
- `Freescale Kinetis FRDM-KL43Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl43-kl33-kl27-kl17-and-kl13-mcus:FRDM-KL43Z>`_
|
||||
- MKL43Z256VLH4
|
||||
- 48 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
* - ``frdm_kl46z``
|
||||
- `Freescale Kinetis FRDM-KL46Z <https://developer.mbed.org/platforms/FRDM-KL46Z/>`_
|
||||
- MKL46Z256VLL4
|
||||
@ -1123,6 +1164,26 @@ Fubarino
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
GHI Electronics
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``oc_mbuino``
|
||||
- `mBuino <https://developer.mbed.org/platforms/mBuino/>`_
|
||||
- LPC11U24
|
||||
- 50 MHz
|
||||
- 32 Kb
|
||||
- 10 Kb
|
||||
|
||||
Generic
|
||||
~~~~~~~
|
||||
|
||||
@ -1143,6 +1204,48 @@ Generic
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103C8``
|
||||
- `STM32F103C8 (20k RAM. 64k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103c8.html>`_
|
||||
- STM32F103C8
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103CB``
|
||||
- `STM32F103CB (20k RAM. 128k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103cb.html>`_
|
||||
- STM32F103CB
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103R8``
|
||||
- `STM32F103R8 (20k RAM. 64 Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103r8.html>`_
|
||||
- STM32F103R8
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103RB``
|
||||
- `STM32F103RB (20k RAM. 128k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103rb.html>`_
|
||||
- STM32F103RB
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103RC``
|
||||
- `STM32F103RC (48k RAM. 256k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103rc.html>`_
|
||||
- STM32F103RC
|
||||
- 72 MHz
|
||||
- 256 Kb
|
||||
- 48 Kb
|
||||
|
||||
* - ``genericSTM32F103RE``
|
||||
- `STM32F103RE (64k RAM. 512k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103re.html>`_
|
||||
- STM32F103RE
|
||||
- 72 MHz
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
Generic ATTiny
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
@ -1238,7 +1341,7 @@ JKSoft
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``wallBotBLE``
|
||||
* - ``wallbot_ble``
|
||||
- `JKSoft Wallbot BLE <https://developer.mbed.org/platforms/JKSoft-Wallbot-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
@ -1470,6 +1573,46 @@ Microduino
|
||||
- 64 Kb
|
||||
- 4 Kb
|
||||
|
||||
Micromint
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc4330_m4``
|
||||
- `Bambino-210E <https://developer.mbed.org/platforms/Micromint-Bambino-210E/>`_
|
||||
- LPC4330
|
||||
- 204 MHz
|
||||
- 8192 Kb
|
||||
- 264 Kb
|
||||
|
||||
MikroElektronika
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``hexiwear``
|
||||
- `Hexiwear <https://developer.mbed.org/platforms/Hexiwear/>`_
|
||||
- MK64FN1M0VDC12
|
||||
- 120 MHz
|
||||
- 1024 Kb
|
||||
- 256 Kb
|
||||
|
||||
MultiTech
|
||||
~~~~~~~~~
|
||||
|
||||
@ -1483,6 +1626,13 @@ MultiTech
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``mts_mdot_f405rg``
|
||||
- `MultiTech mDot <https://developer.mbed.org/platforms/MTS-mDot-F411/>`_
|
||||
- STM32F411RET6
|
||||
- 100 MHz
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``mts_mdot_f411re``
|
||||
- `MultiTech mDot F411 <https://developer.mbed.org/platforms/MTS-mDot-F411/>`_
|
||||
- STM32F411RET6
|
||||
@ -1523,6 +1673,13 @@ NXP
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc11c24``
|
||||
- `NXP LPC11C24 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/scalable-entry-level-32-bit-microcontroller-mcu-based-on-arm-cortex-m0-plus-m0-cores:LPC11C24FBD48>`_
|
||||
- LPC11C24
|
||||
- 48 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u24``
|
||||
- `NXP mbed LPC11U24 <https://developer.mbed.org/platforms/mbed-LPC11U24/>`_
|
||||
- LPC11U24
|
||||
@ -1530,6 +1687,34 @@ NXP
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u24_301``
|
||||
- `ARM mbed LPC11U24 (+CAN) <https://developer.mbed.org/handbook/mbed-NXP-LPC11U24>`_
|
||||
- LPC11U24
|
||||
- 48 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u34_421``
|
||||
- `NXP LPC11U34 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/40kb-flash-8kb-sram-lqfp48-package:LPC11U34FBD48?lang_cd=en>`_
|
||||
- LPC11U34
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u37_501``
|
||||
- `NXP LPC11U37 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/128kb-flash-10kb-sram-lqfp48-package:LPC11U37FBD48?lang_cd=en>`_
|
||||
- LPC11U37
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 10 Kb
|
||||
|
||||
* - ``lpc11u68``
|
||||
- `LPCXpresso11U68 <https://developer.mbed.org/platforms/LPCXpresso11U68/>`_
|
||||
- LPC11U68
|
||||
- 50 MHz
|
||||
- 256 Kb
|
||||
- 36 Kb
|
||||
|
||||
* - ``lpc1549``
|
||||
- `NXP LPCXpresso1549 <https://developer.mbed.org/platforms/LPCXpresso1549/>`_
|
||||
- LPC1549
|
||||
@ -1544,6 +1729,41 @@ NXP
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``lpc2368``
|
||||
- `NXP LPC2368 <https://developer.mbed.org/platforms/mbed-LPC2368/>`_
|
||||
- LPC2368
|
||||
- 72 MHz
|
||||
- 512 Kb
|
||||
- 58 Kb
|
||||
|
||||
* - ``lpc2460``
|
||||
- `NXP LPC2460 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-arm7-arm9-mcus/lpc-arm7-mcus/lpc2100-200-300-400/flashless-16-bit-32-bit-microcontroller-ethernet-can-isp-iap-usb-2.0-device-host-otg-external-memory-interface:LPC2460FBD208>`_
|
||||
- LPC2460
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``lpc812``
|
||||
- `NXP LPC800-MAX <https://developer.mbed.org/platforms/NXP-LPC800-MAX/>`_
|
||||
- LPC812
|
||||
- 30 MHz
|
||||
- 16 Kb
|
||||
- 4 Kb
|
||||
|
||||
* - ``lpc824``
|
||||
- `LPCXpresso824-MAX <https://developer.mbed.org/platforms/LPCXpresso824-MAX/>`_
|
||||
- LPC824
|
||||
- 30 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``micronfcboard``
|
||||
- `MicroNFCBoard <https://developer.mbed.org/platforms/MicroNFCBoard/>`_
|
||||
- LPC11U34
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
NodeMCU
|
||||
~~~~~~~
|
||||
|
||||
@ -1618,6 +1838,13 @@ Olimex
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``maple``
|
||||
- `Olimexino STM32 <https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/>`_
|
||||
- STM32F103RB_MAPLE
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 16.6015625 Kb
|
||||
|
||||
* - ``modwifi``
|
||||
- `Olimex MOD-WIFI-ESP8266(-DEV) <https://www.olimex.com/Products/IoT/MOD-WIFI-ESP8266-DEV/open-source-hardware>`_
|
||||
- ESP8266
|
||||
@ -1997,6 +2224,13 @@ ST
|
||||
- 1024 Kb
|
||||
- 384 Kb
|
||||
|
||||
* - ``disco_f746ng``
|
||||
- `ST 32F746GDISCOVERY <http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f746gdiscovery.html>`_
|
||||
- STM32F746NGH6
|
||||
- 216 MHz
|
||||
- 1024 Kb
|
||||
- 320 Kb
|
||||
|
||||
* - ``disco_l053c8``
|
||||
- `ST 32L0538DISCOVERY <http://www.st.com/web/en/catalog/tools/PF260319>`_
|
||||
- STM32L053C8T6
|
||||
@ -2067,6 +2301,13 @@ ST
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``nucleo_f207zg``
|
||||
- `ST Nucleo F207ZG <https://developer.mbed.org/platforms/ST-Nucleo-F207ZG/>`_
|
||||
- STM32F207ZGT6
|
||||
- 120 MHz
|
||||
- 1024 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f302r8``
|
||||
- `ST Nucleo F302R8 <https://developer.mbed.org/platforms/ST-Nucleo-F302R8/>`_
|
||||
- STM32F302R8T6
|
||||
@ -2116,6 +2357,13 @@ ST
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f429zi``
|
||||
- `ST Nucleo F429ZI <https://developer.mbed.org/platforms/ST-Nucleo-F429ZI/>`_
|
||||
- STM32F429ZIT6
|
||||
- 180 MHz
|
||||
- 2048 Kb
|
||||
- 256 Kb
|
||||
|
||||
* - ``nucleo_f446re``
|
||||
- `ST Nucleo F446RE <https://developer.mbed.org/platforms/ST-Nucleo-F446RE/>`_
|
||||
- STM32F446RET6
|
||||
@ -2123,6 +2371,34 @@ ST
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f446ze``
|
||||
- `ST Nucleo F446ZE <https://developer.mbed.org/platforms/ST-Nucleo-F446ZE/>`_
|
||||
- STM32F446ZET6
|
||||
- 180 MHz
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f746zg``
|
||||
- `ST Nucleo F746ZG <https://developer.mbed.org/platforms/ST-Nucleo-F446ZE/>`_
|
||||
- STM32F746ZGT6
|
||||
- 216 MHz
|
||||
- 1024 Kb
|
||||
- 320 Kb
|
||||
|
||||
* - ``nucleo_f767zi``
|
||||
- `ST Nucleo F767ZI <https://developer.mbed.org/platforms/ST-Nucleo-F767ZI/>`_
|
||||
- STM32F746ZGT6
|
||||
- 216 MHz
|
||||
- 2048 Kb
|
||||
- 512 Kb
|
||||
|
||||
* - ``nucleo_l011k4``
|
||||
- `ST Nucleo L011K4 <https://developer.mbed.org/platforms/ST-Nucleo-L011K4/>`_
|
||||
- STM32L011K4T6
|
||||
- 32 MHz
|
||||
- 16 Kb
|
||||
- 2 Kb
|
||||
|
||||
* - ``nucleo_l031k6``
|
||||
- `ST Nucleo L031K6 <https://developer.mbed.org/platforms/ST-Nucleo-L031K6/>`_
|
||||
- STM32L031K6T6
|
||||
@ -2151,6 +2427,13 @@ ST
|
||||
- 512 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``nucleo_l432kc``
|
||||
- `ST Nucleo L432KC <https://developer.mbed.org/platforms/ST-Nucleo-L432KC/>`_
|
||||
- STM32L432KCU6
|
||||
- 80 MHz
|
||||
- 256 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``nucleo_l476rg``
|
||||
- `ST Nucleo L476RG <https://developer.mbed.org/platforms/ST-Nucleo-L476RG/>`_
|
||||
- STM32L476RGT6
|
||||
@ -2260,27 +2543,55 @@ SeeedStudio
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``seeedArchMax``
|
||||
- `SeeedStudio Arch Max <https://developer.mbed.org/platforms/Seeed-Arch-Max/>`_
|
||||
- STM32F407VET6
|
||||
- 168 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
* - ``seeedArchBLE``
|
||||
- `Seeed Arch BLE <https://developer.mbed.org/platforms/Seeed-Arch-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``seeedTinyBLE``
|
||||
- `SeeedStudio Seeed Tiny BLE <http://developer.mbed.org/platforms/Seeed-Tiny-BLE/>`_
|
||||
* - ``seeedArchGPRS``
|
||||
- `Seeed Arch GPRS V2 <https://www.seeedstudio.com/Arch-GPRS-V2-p-2026.html>`_
|
||||
- LPC11U37
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 10 Kb
|
||||
|
||||
* - ``seeedArchLink``
|
||||
- `Seeed Arch Link <https://developer.mbed.org/platforms/Seeed-Arch-Link/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``seeeduinoArchPro``
|
||||
- `SeeedStudio Seeeduino-Arch-Pro <https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/>`_
|
||||
* - ``seeedArchMax``
|
||||
- `Seeed Arch Max <https://developer.mbed.org/platforms/Seeed-Arch-Max/>`_
|
||||
- STM32F407VET6
|
||||
- 168 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
|
||||
* - ``seeedArchPro``
|
||||
- `Seeed Arch Pro <https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/>`_
|
||||
- LPC1768
|
||||
- 96 MHz
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``seeedTinyBLE``
|
||||
- `Seeed Tiny BLE <http://developer.mbed.org/platforms/Seeed-Tiny-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``xadow_m0``
|
||||
- `Seeed Xadow M0 <https://developer.mbed.org/platforms/Seeed-Xadow-M0/>`_
|
||||
- LPC11U35
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
Silicon Labs
|
||||
~~~~~~~~~~~~
|
||||
|
||||
@ -2336,6 +2647,26 @@ Silicon Labs
|
||||
- 32 Kb
|
||||
- 4 Kb
|
||||
|
||||
Smeshlink
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``xbed_lpc1768``
|
||||
- `Smeshlink xbed LPC1768 <https://developer.mbed.org/platforms/xbed-LPC1768/>`_
|
||||
- LPC1768
|
||||
- 96 MHz
|
||||
- 512 Kb
|
||||
- 32 Kb
|
||||
|
||||
Solder Splash Labs
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -2356,6 +2687,26 @@ Solder Splash Labs
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
SolderSplash Labs
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc1347``
|
||||
- `DipCortex M3 <https://developer.mbed.org/platforms/DipCortex-M3/>`_
|
||||
- LPC1347
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 12 Kb
|
||||
|
||||
SparkFun
|
||||
~~~~~~~~
|
||||
|
||||
@ -2369,6 +2720,13 @@ SparkFun
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``sparkfunBlynk``
|
||||
- `SparkFun Blynk Board <https://www.sparkfun.com/products/13794>`_
|
||||
- ESP8266
|
||||
- 80 MHz
|
||||
- 4096 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``sparkfun_digitalsandbox``
|
||||
- `SparkFun Digital Sandbox <https://www.sparkfun.com/products/12651>`_
|
||||
- ATMEGA328P
|
||||
@ -2514,6 +2872,20 @@ Switch Science
|
||||
- 32 Kb
|
||||
- 4 Kb
|
||||
|
||||
* - ``ssci824``
|
||||
- `Switch Science mbed LPC824 <https://developer.mbed.org/platforms/Switch-Science-mbed-LPC824/>`_
|
||||
- LPC824
|
||||
- 30 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``ty51822r3``
|
||||
- `Switch Science mbed TY51822r3 <https://developer.mbed.org/platforms/Switch-Science-mbed-TY51822r3/>`_
|
||||
- NRF51822
|
||||
- 32 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
TI
|
||||
~~
|
||||
|
||||
@ -2652,6 +3024,20 @@ Teensy
|
||||
- 256 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``teensy35``
|
||||
- `Teensy 3.5 <https://www.pjrc.com>`_
|
||||
- MK64FX512
|
||||
- 120 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
|
||||
* - ``teensy36``
|
||||
- `Teensy 3.6 <https://www.pjrc.com>`_
|
||||
- MK66FX1M0
|
||||
- 180 MHz
|
||||
- 1024 Kb
|
||||
- 256 Kb
|
||||
|
||||
* - ``teensylc``
|
||||
- `Teensy LC <http://www.pjrc.com/teensy/teensyLC.html>`_
|
||||
- MKL26Z64
|
||||
@ -2866,3 +3252,23 @@ ubIQio
|
||||
- 16 MHz
|
||||
- 32 Kb
|
||||
- 2 Kb
|
||||
|
||||
y5 design
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``nrf51822_y5_mbug``
|
||||
- `y5 nRF51822 mbug <https://developer.mbed.org/platforms/Y5-NRF51822-MBUG/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
@ -43,9 +43,6 @@ Packages
|
||||
* - ``tool-mkspiffs``
|
||||
- `Tool to build and unpack SPIFFS images <https://github.com/igrr/mkspiffs>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-xtensa``
|
||||
- `xtensa-gcc <https://github.com/jcmvbkbc/gcc-xtensa>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
@ -222,7 +219,7 @@ Espressif
|
||||
- ESP8266
|
||||
- 80 MHz
|
||||
- 4096 Kb
|
||||
- 50 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``phoenix_v1``
|
||||
- `Phoenix 1.0 <http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family>`_
|
||||
@ -305,6 +302,13 @@ SparkFun
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``sparkfunBlynk``
|
||||
- `SparkFun Blynk Board <https://www.sparkfun.com/products/13794>`_
|
||||
- ESP8266
|
||||
- 80 MHz
|
||||
- 4096 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``thing``
|
||||
- `SparkFun ESP8266 Thing <https://www.sparkfun.com/products/13231>`_
|
||||
- ESP8266
|
||||
|
@ -220,25 +220,27 @@ Demo
|
||||
Using Arduino Framework with Staging version
|
||||
--------------------------------------------
|
||||
|
||||
1. Clone/Copy `main repository <https://github.com/esp8266/Arduino>`_ to
|
||||
:ref:`projectconf_pio_home_dir` + ``packages/framework-arduinoespressif8266``
|
||||
and create new file ``packages/framework-arduinoespressif8266/package.json``
|
||||
with the next contents (you can specify own version if you want)
|
||||
1. Install :ref:`installation_develop` of PlatformIO
|
||||
2. Install Espressif 8266 (Stage) development platform
|
||||
|
||||
.. code-block:: json
|
||||
.. code::
|
||||
|
||||
{
|
||||
"description":"Arduino Wiring-based Framework (ESP8266 Core)",
|
||||
"name":"framework-arduinoespressif8266",
|
||||
"system":"all",
|
||||
"url":"https://github.com/esp8266/Arduino",
|
||||
"version":"1.20300.0"
|
||||
}
|
||||
platformio platform install https://github.com/platformio/platform-espressif8266.git#feature/stage
|
||||
|
||||
2. Try to build project
|
||||
3. If you see build errors, then try to build this project using the same
|
||||
3. Set :ref:`projectconf_env_platform` to ``espressif8266_stage`` in
|
||||
:ref:`projectconf`. For example,
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[env:nodemcuv2]
|
||||
platform = espressif8266_stage
|
||||
board = nodemcuv2
|
||||
framework = arduino
|
||||
|
||||
4. Try to build project
|
||||
5. If you see build errors, then try to build this project using the same
|
||||
``stage`` on Arduino IDE
|
||||
4. If it works with Arduino IDE but doesn't work with PlatformIO, then please
|
||||
6. If it works with Arduino IDE but doesn't work with PlatformIO, then please
|
||||
`open new issue <https://github.com/platformio/platformio/issues>`_ with
|
||||
attached information:
|
||||
|
||||
@ -251,6 +253,7 @@ Using Arduino Framework with Staging version
|
||||
Articles
|
||||
--------
|
||||
|
||||
* Sep 12, 2016 - **Pedro Minatel** - `OTA – Como programar o ESP8266 pelo WiFi no platformIO (OTA programming for ESP8266 via Wi-Fi using PlatformIO, Portuguese) <http://pedrominatel.com.br/esp8266/ota-como-programar-o-esp8266-pelo-wifi-no-platformio/>`_
|
||||
* Sep 2, 2016 - **Tinkerman** `Optimizing files for SPIFFS with Gulp <http://tinkerman.cat/optimizing-files-for-spiffs-with-gulp/>`_
|
||||
* Jul 15, 2016 - **Jaime** - `ESP8266 Mobile Rick Roll Captive Portal <https://hackaday.io/project/12709-esp8266-mobile-rick-roll-captive-portal>`_
|
||||
* Jun 13, 2016 - **Daniel Eichhorn** - `New Weather Station Demo on Github <http://blog.squix.org/2016/06/new-weather-station-demo-on-github.html>`_
|
||||
|
@ -31,9 +31,6 @@ Packages
|
||||
* - ``framework-mbed``
|
||||
- `mbed Framework <http://mbed.org>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccarmnoneeabi``
|
||||
- `gcc-arm-embedded <https://launchpad.net/gcc-arm-embedded>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
@ -122,9 +119,50 @@ Freescale
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl26z``
|
||||
- `Freescale Kinetis FRDM-KL26Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl16-and-kl26-mcus-up-to-128-kb-flash:FRDM-KL26Z>`_
|
||||
- MKL26Z128VLH4
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl27z``
|
||||
- `Freescale Kinetis FRDM-KL27Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl17-and-kl27-mcus:FRDM-KL27Z>`_
|
||||
- MKL27Z64VLH4
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``frdm_kl43z``
|
||||
- `Freescale Kinetis FRDM-KL43Z <http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/freedom-development-platform-for-kinetis-kl43-kl33-kl27-kl17-and-kl13-mcus:FRDM-KL43Z>`_
|
||||
- MKL43Z256VLH4
|
||||
- 48 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
* - ``frdm_kl46z``
|
||||
- `Freescale Kinetis FRDM-KL46Z <https://developer.mbed.org/platforms/FRDM-KL46Z/>`_
|
||||
- MKL46Z256VLL4
|
||||
- 48 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
MikroElektronika
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``hexiwear``
|
||||
- `Hexiwear <https://developer.mbed.org/platforms/Hexiwear/>`_
|
||||
- MK64FN1M0VDC12
|
||||
- 120 MHz
|
||||
- 1024 Kb
|
||||
- 256 Kb
|
||||
|
@ -34,9 +34,6 @@ Packages
|
||||
* - ``tool-arduino101load``
|
||||
- `Genuino101 uploader <https://github.com/01org/intel-arduino-tools>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-intelarc32``
|
||||
- `GCC for Intel ARC <https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain>`_
|
||||
|
||||
|
@ -28,9 +28,6 @@ Packages
|
||||
* - Name
|
||||
- Contents
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-icestorm``
|
||||
- `GCC for FPGA IceStorm <http://www.clifford.at/icestorm/>`_
|
||||
|
||||
|
@ -31,9 +31,6 @@ Packages
|
||||
* - ``framework-wiringpi``
|
||||
- `GPIO Interface library for the Raspberry Pi <http://wiringpi.com>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccarmlinuxgnueabi``
|
||||
- `GCC for Linux ARM GNU EABI <https://gcc.gnu.org>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
|
@ -28,8 +28,5 @@ Packages
|
||||
* - Name
|
||||
- Contents
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gcclinux32``
|
||||
- `GCC for Linux i686 <https://gcc.gnu.org>`_
|
@ -28,8 +28,5 @@ Packages
|
||||
* - Name
|
||||
- Contents
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gcclinux64``
|
||||
- `GCC for Linux x86_64 <https://gcc.gnu.org>`_
|
@ -34,9 +34,6 @@ Packages
|
||||
* - ``tool-pic32prog``
|
||||
- `pic32prog <https://github.com/sergev/pic32prog>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-microchippic32``
|
||||
- `GCC for Microchip PIC32 <https://github.com/chipKIT32/chipKIT-cxx>`_
|
||||
|
||||
|
@ -17,16 +17,4 @@ Native development platform is intended to be used for desktop OS. This platform
|
||||
|
||||
For more detailed information please visit `vendor site <http://platformio.org/platforms/native>`_.
|
||||
|
||||
.. contents::
|
||||
|
||||
Packages
|
||||
--------
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Name
|
||||
- Contents
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
.. contents::
|
@ -37,9 +37,6 @@ Packages
|
||||
* - ``tool-rfdloader``
|
||||
- `rfdloader <https://github.com/RFduino/RFduino>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``tool-sreccat``
|
||||
- `Merging tool <https://github.com/marcows/SRecord>`_
|
||||
|
||||
@ -132,7 +129,7 @@ JKSoft
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``wallBotBLE``
|
||||
* - ``wallbot_ble``
|
||||
- `JKSoft Wallbot BLE <https://developer.mbed.org/platforms/JKSoft-Wallbot-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
@ -233,8 +230,22 @@ SeeedStudio
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``seeedArchBLE``
|
||||
- `Seeed Arch BLE <https://developer.mbed.org/platforms/Seeed-Arch-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 128 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``seeedArchLink``
|
||||
- `Seeed Arch Link <https://developer.mbed.org/platforms/Seeed-Arch-Link/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``seeedTinyBLE``
|
||||
- `SeeedStudio Seeed Tiny BLE <http://developer.mbed.org/platforms/Seeed-Tiny-BLE/>`_
|
||||
- `Seeed Tiny BLE <http://developer.mbed.org/platforms/Seeed-Tiny-BLE/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
@ -260,4 +271,31 @@ Switch Science
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``ty51822r3``
|
||||
- `Switch Science mbed TY51822r3 <https://developer.mbed.org/platforms/Switch-Science-mbed-TY51822r3/>`_
|
||||
- NRF51822
|
||||
- 32 MHz
|
||||
- 256 Kb
|
||||
- 32 Kb
|
||||
|
||||
y5 design
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``nrf51822_y5_mbug``
|
||||
- `y5 nRF51822 mbug <https://developer.mbed.org/platforms/Y5-NRF51822-MBUG/>`_
|
||||
- NRF51822
|
||||
- 16 MHz
|
||||
- 256 Kb
|
||||
- 16 Kb
|
||||
|
||||
.. include:: nordicnrf51_extra.rst
|
||||
|
@ -31,9 +31,6 @@ Packages
|
||||
* - ``framework-mbed``
|
||||
- `mbed Framework <http://mbed.org>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccarmnoneeabi``
|
||||
- `gcc-arm-embedded <https://launchpad.net/gcc-arm-embedded>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
@ -87,6 +84,26 @@ CQ Publishing
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
Elektor Labs
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``elektor_cocorico``
|
||||
- `CoCo-ri-Co! <https://developer.mbed.org/platforms/CoCo-ri-Co/>`_
|
||||
- LPC812
|
||||
- 30 MHz
|
||||
- 16 Kb
|
||||
- 4 Kb
|
||||
|
||||
Embedded Artists
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -101,7 +118,7 @@ Embedded Artists
|
||||
- RAM
|
||||
|
||||
* - ``lpc11u35``
|
||||
- `Embedded Artists LPC11U35 QuickStart Board <https://developer.mbed.org/platforms/EA-LPC11U35/>`_
|
||||
- `EA LPC11U35 QuickStart Board <https://developer.mbed.org/platforms/EA-LPC11U35/>`_
|
||||
- LPC11U35
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
@ -121,6 +138,46 @@ Embedded Artists
|
||||
- 512 Kb
|
||||
- 96 Kb
|
||||
|
||||
GHI Electronics
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``oc_mbuino``
|
||||
- `mBuino <https://developer.mbed.org/platforms/mBuino/>`_
|
||||
- LPC11U24
|
||||
- 50 MHz
|
||||
- 32 Kb
|
||||
- 10 Kb
|
||||
|
||||
Micromint
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc4330_m4``
|
||||
- `Bambino-210E <https://developer.mbed.org/platforms/Micromint-Bambino-210E/>`_
|
||||
- LPC4330
|
||||
- 204 MHz
|
||||
- 8192 Kb
|
||||
- 264 Kb
|
||||
|
||||
NGX Technologies
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -154,6 +211,13 @@ NXP
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc11c24``
|
||||
- `NXP LPC11C24 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/scalable-entry-level-32-bit-microcontroller-mcu-based-on-arm-cortex-m0-plus-m0-cores:LPC11C24FBD48>`_
|
||||
- LPC11C24
|
||||
- 48 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u24``
|
||||
- `NXP mbed LPC11U24 <https://developer.mbed.org/platforms/mbed-LPC11U24/>`_
|
||||
- LPC11U24
|
||||
@ -161,6 +225,34 @@ NXP
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u24_301``
|
||||
- `ARM mbed LPC11U24 (+CAN) <https://developer.mbed.org/handbook/mbed-NXP-LPC11U24>`_
|
||||
- LPC11U24
|
||||
- 48 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u34_421``
|
||||
- `NXP LPC11U34 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/40kb-flash-8kb-sram-lqfp48-package:LPC11U34FBD48?lang_cd=en>`_
|
||||
- LPC11U34
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``lpc11u37_501``
|
||||
- `NXP LPC11U37 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m0-plus-m0/lpc1100-cortex-m0-plus-m0/128kb-flash-10kb-sram-lqfp48-package:LPC11U37FBD48?lang_cd=en>`_
|
||||
- LPC11U37
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 10 Kb
|
||||
|
||||
* - ``lpc11u68``
|
||||
- `LPCXpresso11U68 <https://developer.mbed.org/platforms/LPCXpresso11U68/>`_
|
||||
- LPC11U68
|
||||
- 50 MHz
|
||||
- 256 Kb
|
||||
- 36 Kb
|
||||
|
||||
* - ``lpc1549``
|
||||
- `NXP LPCXpresso1549 <https://developer.mbed.org/platforms/LPCXpresso1549/>`_
|
||||
- LPC1549
|
||||
@ -175,6 +267,41 @@ NXP
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``lpc2368``
|
||||
- `NXP LPC2368 <https://developer.mbed.org/platforms/mbed-LPC2368/>`_
|
||||
- LPC2368
|
||||
- 72 MHz
|
||||
- 512 Kb
|
||||
- 58 Kb
|
||||
|
||||
* - ``lpc2460``
|
||||
- `NXP LPC2460 <http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-arm7-arm9-mcus/lpc-arm7-mcus/lpc2100-200-300-400/flashless-16-bit-32-bit-microcontroller-ethernet-can-isp-iap-usb-2.0-device-host-otg-external-memory-interface:LPC2460FBD208>`_
|
||||
- LPC2460
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 16 Kb
|
||||
|
||||
* - ``lpc812``
|
||||
- `NXP LPC800-MAX <https://developer.mbed.org/platforms/NXP-LPC800-MAX/>`_
|
||||
- LPC812
|
||||
- 30 MHz
|
||||
- 16 Kb
|
||||
- 4 Kb
|
||||
|
||||
* - ``lpc824``
|
||||
- `LPCXpresso824-MAX <https://developer.mbed.org/platforms/LPCXpresso824-MAX/>`_
|
||||
- LPC824
|
||||
- 30 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
* - ``micronfcboard``
|
||||
- `MicroNFCBoard <https://developer.mbed.org/platforms/MicroNFCBoard/>`_
|
||||
- LPC11U34
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
Outrageous Circuits
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -208,13 +335,47 @@ SeeedStudio
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``seeeduinoArchPro``
|
||||
- `SeeedStudio Seeeduino-Arch-Pro <https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/>`_
|
||||
* - ``seeedArchGPRS``
|
||||
- `Seeed Arch GPRS V2 <https://www.seeedstudio.com/Arch-GPRS-V2-p-2026.html>`_
|
||||
- LPC11U37
|
||||
- 48 MHz
|
||||
- 128 Kb
|
||||
- 10 Kb
|
||||
|
||||
* - ``seeedArchPro``
|
||||
- `Seeed Arch Pro <https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/>`_
|
||||
- LPC1768
|
||||
- 96 MHz
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``xadow_m0``
|
||||
- `Seeed Xadow M0 <https://developer.mbed.org/platforms/Seeed-Xadow-M0/>`_
|
||||
- LPC11U35
|
||||
- 48 MHz
|
||||
- 64 Kb
|
||||
- 10 Kb
|
||||
|
||||
Smeshlink
|
||||
~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``xbed_lpc1768``
|
||||
- `Smeshlink xbed LPC1768 <https://developer.mbed.org/platforms/xbed-LPC1768/>`_
|
||||
- LPC1768
|
||||
- 96 MHz
|
||||
- 512 Kb
|
||||
- 32 Kb
|
||||
|
||||
Solder Splash Labs
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -235,6 +396,26 @@ Solder Splash Labs
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
SolderSplash Labs
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``lpc1347``
|
||||
- `DipCortex M3 <https://developer.mbed.org/platforms/DipCortex-M3/>`_
|
||||
- LPC1347
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 12 Kb
|
||||
|
||||
Switch Science
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
@ -255,6 +436,13 @@ Switch Science
|
||||
- 32 Kb
|
||||
- 4 Kb
|
||||
|
||||
* - ``ssci824``
|
||||
- `Switch Science mbed LPC824 <https://developer.mbed.org/platforms/Switch-Science-mbed-LPC824/>`_
|
||||
- LPC824
|
||||
- 30 MHz
|
||||
- 32 Kb
|
||||
- 8 Kb
|
||||
|
||||
u-blox
|
||||
~~~~~~
|
||||
|
||||
|
@ -31,9 +31,6 @@ Packages
|
||||
* - ``framework-mbed``
|
||||
- `mbed Framework <http://mbed.org>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccarmnoneeabi``
|
||||
- `gcc-arm-embedded <https://launchpad.net/gcc-arm-embedded>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
|
@ -28,6 +28,9 @@ Packages
|
||||
* - Name
|
||||
- Contents
|
||||
|
||||
* - ``framework-arduinoststm32``
|
||||
- `Arduino Wiring-based Framework (STM32 Core) <https://github.com/rogerclarkmelbourne/Arduino_STM32>`_
|
||||
|
||||
* - ``framework-cmsis``
|
||||
- `Vendor-independent hardware abstraction layer for the Cortex-M processor series <http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php>`_
|
||||
|
||||
@ -40,9 +43,6 @@ Packages
|
||||
* - ``framework-spl``
|
||||
- `Standard Peripheral Library for STM32 MCUs <http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``tool-stlink``
|
||||
- `ST-Link <https://github.com/texane/stlink>`_
|
||||
|
||||
@ -67,6 +67,9 @@ Frameworks
|
||||
* - Name
|
||||
- Description
|
||||
|
||||
* - :ref:`framework_arduino`
|
||||
- Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
|
||||
|
||||
* - :ref:`framework_cmsis`
|
||||
- The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
|
||||
|
||||
@ -162,6 +165,48 @@ Generic
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103C8``
|
||||
- `STM32F103C8 (20k RAM. 64k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103c8.html>`_
|
||||
- STM32F103C8
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103CB``
|
||||
- `STM32F103CB (20k RAM. 128k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103cb.html>`_
|
||||
- STM32F103CB
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103R8``
|
||||
- `STM32F103R8 (20k RAM. 64 Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103r8.html>`_
|
||||
- STM32F103R8
|
||||
- 72 MHz
|
||||
- 64 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103RB``
|
||||
- `STM32F103RB (20k RAM. 128k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103rb.html>`_
|
||||
- STM32F103RB
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``genericSTM32F103RC``
|
||||
- `STM32F103RC (48k RAM. 256k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103rc.html>`_
|
||||
- STM32F103RC
|
||||
- 72 MHz
|
||||
- 256 Kb
|
||||
- 48 Kb
|
||||
|
||||
* - ``genericSTM32F103RE``
|
||||
- `STM32F103RE (64k RAM. 512k Flash) <http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103re.html>`_
|
||||
- STM32F103RE
|
||||
- 72 MHz
|
||||
- 512 Kb
|
||||
- 64 Kb
|
||||
|
||||
MultiTech
|
||||
~~~~~~~~~
|
||||
|
||||
@ -175,6 +220,13 @@ MultiTech
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``mts_mdot_f405rg``
|
||||
- `MultiTech mDot <https://developer.mbed.org/platforms/MTS-mDot-F411/>`_
|
||||
- STM32F411RET6
|
||||
- 100 MHz
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``mts_mdot_f411re``
|
||||
- `MultiTech mDot F411 <https://developer.mbed.org/platforms/MTS-mDot-F411/>`_
|
||||
- STM32F411RET6
|
||||
@ -182,6 +234,26 @@ MultiTech
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
Olimex
|
||||
~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Type ``board``
|
||||
- Name
|
||||
- Microcontroller
|
||||
- Frequency
|
||||
- Flash
|
||||
- RAM
|
||||
|
||||
* - ``maple``
|
||||
- `Olimexino STM32 <https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/>`_
|
||||
- STM32F103RB_MAPLE
|
||||
- 72 MHz
|
||||
- 128 Kb
|
||||
- 16.6015625 Kb
|
||||
|
||||
ST
|
||||
~~
|
||||
|
||||
@ -251,6 +323,13 @@ ST
|
||||
- 1024 Kb
|
||||
- 384 Kb
|
||||
|
||||
* - ``disco_f746ng``
|
||||
- `ST 32F746GDISCOVERY <http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f746gdiscovery.html>`_
|
||||
- STM32F746NGH6
|
||||
- 216 MHz
|
||||
- 1024 Kb
|
||||
- 320 Kb
|
||||
|
||||
* - ``disco_l053c8``
|
||||
- `ST 32L0538DISCOVERY <http://www.st.com/web/en/catalog/tools/PF260319>`_
|
||||
- STM32L053C8T6
|
||||
@ -321,6 +400,13 @@ ST
|
||||
- 128 Kb
|
||||
- 20 Kb
|
||||
|
||||
* - ``nucleo_f207zg``
|
||||
- `ST Nucleo F207ZG <https://developer.mbed.org/platforms/ST-Nucleo-F207ZG/>`_
|
||||
- STM32F207ZGT6
|
||||
- 120 MHz
|
||||
- 1024 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f302r8``
|
||||
- `ST Nucleo F302R8 <https://developer.mbed.org/platforms/ST-Nucleo-F302R8/>`_
|
||||
- STM32F302R8T6
|
||||
@ -370,6 +456,13 @@ ST
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f429zi``
|
||||
- `ST Nucleo F429ZI <https://developer.mbed.org/platforms/ST-Nucleo-F429ZI/>`_
|
||||
- STM32F429ZIT6
|
||||
- 180 MHz
|
||||
- 2048 Kb
|
||||
- 256 Kb
|
||||
|
||||
* - ``nucleo_f446re``
|
||||
- `ST Nucleo F446RE <https://developer.mbed.org/platforms/ST-Nucleo-F446RE/>`_
|
||||
- STM32F446RET6
|
||||
@ -377,6 +470,34 @@ ST
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f446ze``
|
||||
- `ST Nucleo F446ZE <https://developer.mbed.org/platforms/ST-Nucleo-F446ZE/>`_
|
||||
- STM32F446ZET6
|
||||
- 180 MHz
|
||||
- 512 Kb
|
||||
- 128 Kb
|
||||
|
||||
* - ``nucleo_f746zg``
|
||||
- `ST Nucleo F746ZG <https://developer.mbed.org/platforms/ST-Nucleo-F446ZE/>`_
|
||||
- STM32F746ZGT6
|
||||
- 216 MHz
|
||||
- 1024 Kb
|
||||
- 320 Kb
|
||||
|
||||
* - ``nucleo_f767zi``
|
||||
- `ST Nucleo F767ZI <https://developer.mbed.org/platforms/ST-Nucleo-F767ZI/>`_
|
||||
- STM32F746ZGT6
|
||||
- 216 MHz
|
||||
- 2048 Kb
|
||||
- 512 Kb
|
||||
|
||||
* - ``nucleo_l011k4``
|
||||
- `ST Nucleo L011K4 <https://developer.mbed.org/platforms/ST-Nucleo-L011K4/>`_
|
||||
- STM32L011K4T6
|
||||
- 32 MHz
|
||||
- 16 Kb
|
||||
- 2 Kb
|
||||
|
||||
* - ``nucleo_l031k6``
|
||||
- `ST Nucleo L031K6 <https://developer.mbed.org/platforms/ST-Nucleo-L031K6/>`_
|
||||
- STM32L031K6T6
|
||||
@ -405,6 +526,13 @@ ST
|
||||
- 512 Kb
|
||||
- 80 Kb
|
||||
|
||||
* - ``nucleo_l432kc``
|
||||
- `ST Nucleo L432KC <https://developer.mbed.org/platforms/ST-Nucleo-L432KC/>`_
|
||||
- STM32L432KCU6
|
||||
- 80 MHz
|
||||
- 256 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``nucleo_l476rg``
|
||||
- `ST Nucleo L476RG <https://developer.mbed.org/platforms/ST-Nucleo-L476RG/>`_
|
||||
- STM32L476RGT6
|
||||
@ -426,7 +554,7 @@ SeeedStudio
|
||||
- RAM
|
||||
|
||||
* - ``seeedArchMax``
|
||||
- `SeeedStudio Arch Max <https://developer.mbed.org/platforms/Seeed-Arch-Max/>`_
|
||||
- `Seeed Arch Max <https://developer.mbed.org/platforms/Seeed-Arch-Max/>`_
|
||||
- STM32F407VET6
|
||||
- 168 MHz
|
||||
- 512 Kb
|
||||
|
@ -34,9 +34,6 @@ Packages
|
||||
* - ``framework-mbed``
|
||||
- `mbed Framework <http://mbed.org>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``tool-teensy``
|
||||
- `Teensy Loader <https://www.pjrc.com/teensy/loader.html>`_
|
||||
|
||||
@ -123,6 +120,20 @@ Teensy
|
||||
- 256 Kb
|
||||
- 64 Kb
|
||||
|
||||
* - ``teensy35``
|
||||
- `Teensy 3.5 <https://www.pjrc.com>`_
|
||||
- MK64FX512
|
||||
- 120 MHz
|
||||
- 512 Kb
|
||||
- 192 Kb
|
||||
|
||||
* - ``teensy36``
|
||||
- `Teensy 3.6 <https://www.pjrc.com>`_
|
||||
- MK66FX1M0
|
||||
- 180 MHz
|
||||
- 1024 Kb
|
||||
- 256 Kb
|
||||
|
||||
* - ``teensylc``
|
||||
- `Teensy LC <http://www.pjrc.com/teensy/teensyLC.html>`_
|
||||
- MKL26Z64
|
||||
|
@ -37,9 +37,6 @@ Packages
|
||||
* - ``tool-mspdebug``
|
||||
- `MSPDebug <http://mspdebug.sourceforge.net/>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-timsp430``
|
||||
- `msp-gcc <http://sourceforge.net/projects/mspgcc/>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
|
@ -37,9 +37,6 @@ Packages
|
||||
* - ``tool-lm4flash``
|
||||
- `Flash Programmer <http://www.ti.com/tool/lmflashprogrammer>`_
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccarmnoneeabi``
|
||||
- `gcc-arm-embedded <https://launchpad.net/gcc-arm-embedded>`_, `GDB <http://www.gnu.org/software/gdb/>`_
|
||||
|
||||
|
@ -28,8 +28,5 @@ Packages
|
||||
* - Name
|
||||
- Contents
|
||||
|
||||
* - ``tool-scons``
|
||||
- `SCons software construction tool <http://www.scons.org>`_
|
||||
|
||||
* - ``toolchain-gccmingw32``
|
||||
- `MinGW <http://www.mingw.org>`_
|
@ -21,13 +21,73 @@ The Project configuration file is named ``platformio.ini``. This is a
|
||||
key / value pairs within the sections. Lines beginning with ``;``
|
||||
are ignored and may be used to provide comments.
|
||||
|
||||
The sections and their allowable values are described below.
|
||||
There are 2 system reserved sections:
|
||||
|
||||
* Base PlatformIO settings: :ref:`projectconf_section_platformio`
|
||||
* Build Environment settings: :ref:`projectconf_section_env`
|
||||
|
||||
The other sections can be used by users, for example, for
|
||||
:ref:`projectconf_dynamic_vars`. The sections and their allowable values are
|
||||
described below.
|
||||
|
||||
.. contents::
|
||||
:depth: 2
|
||||
|
||||
.. _projectconf_dynamic_vars:
|
||||
|
||||
Dynamic variables
|
||||
-----------------
|
||||
|
||||
.. versionadded:: 3.1
|
||||
|
||||
Dynamic variables/templates are useful when you have common configuration data
|
||||
between build environments. For examples, common :ref:`projectconf_build_flags`
|
||||
or project dependencies :ref:`projectconf_lib_deps`.
|
||||
|
||||
Each variable should have a next format: ``${<section>.<option>}``, where
|
||||
``<section>`` is a value from ``[<section>]`` group, and ``<option>`` is a
|
||||
first item from pair ``<option> = value``.
|
||||
|
||||
* Variable can be applied only for the option's value
|
||||
* Multiple variables are allowed
|
||||
* The ``platformio`` section is reserved and could not be used as custom
|
||||
section. Some good section names might be ``common`` or ``global``.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[common]
|
||||
build_flags = -D VERSION=1.2.3 -D DEBUG=1
|
||||
lib_deps_builtin = SPI, Wire
|
||||
lib_deps_external = ArduinoJson@>5.6.0
|
||||
|
||||
[env:uno]
|
||||
platform = atmelavr
|
||||
framework = arduino
|
||||
board = uno
|
||||
build_flags = ${common.build_flags}
|
||||
lib_deps = ${common.lib_deps_builtin}, ${common.lib_deps_external}
|
||||
|
||||
[env:nodemcuv2]
|
||||
platform = espressif8266
|
||||
framework = arduino
|
||||
board = nodemcuv2
|
||||
build_flags = ${common.build_flags} -DSSID_NAME=HELLO -DSSID_PASWORD=WORLD
|
||||
lib_deps =
|
||||
${common.lib_deps_builtin}
|
||||
${common.lib_deps_external}
|
||||
PubSubClient@2.6
|
||||
OneWire
|
||||
|
||||
.. _projectconf_section_platformio:
|
||||
|
||||
Section ``[platformio]``
|
||||
------------------------
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
A ``platformio`` section is used for overriding default configuration options
|
||||
|
||||
.. note::
|
||||
@ -45,7 +105,8 @@ Options
|
||||
^^^^^^^^^^^^
|
||||
|
||||
Is used to store platform toolchains, frameworks, global libraries for
|
||||
:ref: `ldf`, service data and etc.
|
||||
:ref: `ldf`, service data and etc. The size of this folder will depend on
|
||||
number of installed development platforms.
|
||||
|
||||
A default value is User's home directory:
|
||||
|
||||
@ -55,6 +116,13 @@ A default value is User's home directory:
|
||||
This option can be overridden by global environment variable
|
||||
:envvar:`PLATFORMIO_HOME_DIR`.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[platformio]
|
||||
home_dir = /path/to/custom/pio/storage
|
||||
|
||||
.. _projectconf_pio_lib_dir:
|
||||
|
||||
``lib_dir``
|
||||
@ -223,11 +291,14 @@ Multiple environments are allowed if they are separated with ", "
|
||||
board = lpmsp430g2553
|
||||
build_flags = -D LED_BUILTIN=RED_LED
|
||||
|
||||
----------
|
||||
.. _projectconf_section_env:
|
||||
|
||||
Section ``[env:NAME]``
|
||||
----------------------
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
A section with ``env:`` prefix is used to define virtual environment with
|
||||
specific options that will be processed with :ref:`cmd_run` command. You can
|
||||
define unlimited numbers of environments.
|
||||
@ -652,6 +723,16 @@ To print all available serial ports use :ref:`cmd_device` command.
|
||||
This option can be set by global environment variable
|
||||
:envvar:`PLATFORMIO_UPLOAD_PORT`.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[env:uno]
|
||||
platform = atmelavr
|
||||
framework = arduino
|
||||
board = uno
|
||||
upload_port = /dev/ttyUSB0
|
||||
|
||||
``upload_protocol``
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -703,13 +784,18 @@ Specify project dependencies that should be installed automatically to
|
||||
:ref:`projectconf_pio_libdeps_dir` before environment processing.
|
||||
Multiple dependencies are allowed (multi-lines or separated with comma+space ", ").
|
||||
|
||||
If you have multiple build environments that depend on the same libraries,
|
||||
you can use :ref:`projectconf_dynamic_vars` to use common configuration.
|
||||
|
||||
**Valid forms**
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
; one line definition (comma + space)
|
||||
[env:myenv]
|
||||
lib_deps = LIBRARY_1, LIBRARY_2, LIBRARY_N
|
||||
|
||||
; multi-line definition
|
||||
[env:myenv2]
|
||||
lib_deps =
|
||||
LIBRARY_1
|
||||
@ -732,30 +818,6 @@ Example:
|
||||
https://github.com/gioblu/PJON.git@v2.0
|
||||
https://github.com/me-no-dev/ESPAsyncTCP.git
|
||||
|
||||
.. _projectconf_lib_force:
|
||||
|
||||
``lib_force``
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. seealso::
|
||||
Please make sure to read :ref:`ldf` guide first.
|
||||
|
||||
Force Library Dependency Finder to depend on the specified library if it even
|
||||
is not included in the project source code. Also, this library will be
|
||||
processed in the first order.
|
||||
|
||||
The correct value for this option is library name (not folder name). In the
|
||||
most cases, library name is pre-defined in manifest file
|
||||
(:ref:`library_config`, ``library.properties``, ``module.json``). The multiple
|
||||
library names are allowed, split them with comma+space ", ".
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[env:myenv]
|
||||
lib_force = OneWire, SPI
|
||||
|
||||
.. _projectconf_lib_ignore:
|
||||
|
||||
``lib_ignore``
|
||||
|
@ -133,7 +133,7 @@ next structure:
|
||||
(``*.h, *.c, *.cpp, *.S, *.ino, etc.``)
|
||||
* ``lib`` directory can be used for the project specific (private) libraries.
|
||||
More details are located in ``lib/readme.txt`` file.
|
||||
* Miscellaneous files for CVS and :ref:`ci` support.
|
||||
* Miscellaneous files for VCS and :ref:`ci` support.
|
||||
|
||||
|
||||
.. note::
|
||||
|
@ -118,9 +118,9 @@ Buid project using pre-configured :ref:`projectconf`.
|
||||
.. option::
|
||||
-O, --project-option
|
||||
|
||||
Pass additional options from :ref:`projectconf` to
|
||||
:option:`platformio init --project-option` command. For example,
|
||||
automatically install dependent libraries
|
||||
Pass additional options from :ref:`projectconf` to :ref:`cmd_init` command.
|
||||
Use multiple ``--project-option`` options to pass multiple options to
|
||||
:ref:`cmd_init` command. For example, automatically install dependent libraries
|
||||
``platformio ci --project-option="lib_deps=ArduinoJSON"`` or ignore specific
|
||||
library ``platformio ci --project-option="lib_ignore=SomeLib"``.
|
||||
|
||||
|
@ -37,7 +37,7 @@ This command will create:
|
||||
(``*.h, *.c, *.cpp, *.S, *.ino, etc.``)
|
||||
* ``lib`` directory can be used for the project specific (private) libraries.
|
||||
More details are located in ``lib/readme.txt`` file.
|
||||
* Miscellaneous files for CVS and :ref:`ci` support.
|
||||
* Miscellaneous files for VCS and :ref:`ci` support.
|
||||
|
||||
Options
|
||||
-------
|
||||
@ -89,11 +89,11 @@ be ``[env:teensy_31]``.
|
||||
Examples
|
||||
--------
|
||||
|
||||
1. Create new project in the current working directory
|
||||
1. Initialize new project in a current working directory
|
||||
|
||||
.. code-block:: bash
|
||||
.. code::
|
||||
|
||||
$ platformio init
|
||||
> platformio init
|
||||
|
||||
The current working directory *** will be used for the new project.
|
||||
You can specify another project directory via
|
||||
@ -110,38 +110,35 @@ Examples
|
||||
`platformio run --target clean` - clean project (remove compiled files)
|
||||
|
||||
|
||||
2. Create new project in the specified directory
|
||||
2. Initialize new project in a specified directory
|
||||
|
||||
.. code-block:: bash
|
||||
.. code::
|
||||
|
||||
$ platformio init -d %PATH_TO_DIR%
|
||||
> platformio init -d %PATH_TO_DIR%
|
||||
|
||||
The next files/directories will be created in ***
|
||||
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
|
||||
src - Put your source files here
|
||||
lib - Put here project specific (private) libraries
|
||||
Project has been successfully initialized!
|
||||
Useful commands:
|
||||
`platformio run` - process/build project from the current directory
|
||||
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
|
||||
`platformio run --target clean` - clean project (remove compiled files)
|
||||
...
|
||||
|
||||
3. Initialize project for Arduino Uno
|
||||
|
||||
.. code-block:: bash
|
||||
.. code::
|
||||
|
||||
$ platformio init --board uno
|
||||
> platformio init --board uno
|
||||
|
||||
The current working directory *** will be used for the new project.
|
||||
You can specify another project directory via
|
||||
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
|
||||
...
|
||||
|
||||
4. Initialize project for Teensy 3.1 board with custom :ref:`framework_mbed`
|
||||
|
||||
.. code::
|
||||
|
||||
> platformio init --board teensy31 --project-option "framework=mbed"
|
||||
|
||||
The current working directory *** will be used for the new project.
|
||||
You can specify another project directory via
|
||||
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
|
||||
|
||||
The next files/directories will be created in ***
|
||||
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
|
||||
src - Put your source files here
|
||||
lib - Put here project specific (private) libraries
|
||||
Project has been successfully initialized!
|
||||
Useful commands:
|
||||
`platformio run` - process/build project from the current directory
|
||||
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
|
||||
`platformio run --target clean` - clean project (remove compiled files)
|
||||
...
|
@ -87,15 +87,15 @@ Check for the new PlatformIO interval.
|
||||
|
||||
Check for the platform updates interval.
|
||||
|
||||
.. _setting_disable_ssl:
|
||||
.. _setting_enable_ssl:
|
||||
|
||||
``disable_ssl``
|
||||
^^^^^^^^^^^^^^^
|
||||
``enable_ssl``
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
:Default: No
|
||||
:Values: Yes/No
|
||||
|
||||
Disable SSL for PlatformIO API (NOT RECOMMENDED, INSECURE)
|
||||
Enable SSL for PlatformIO Services
|
||||
|
||||
.. _setting_force_verbose:
|
||||
|
||||
|
@ -87,7 +87,7 @@ archive should contain ``.library.json`` manifest (see :ref:`library_config`).
|
||||
Storage Options
|
||||
---------------
|
||||
|
||||
See base options for :ref:`userguide_lib`.
|
||||
See base options for :ref:`cmd_lib`.
|
||||
|
||||
Options
|
||||
-------
|
||||
|
@ -43,7 +43,7 @@ List installed libraries
|
||||
Storage Options
|
||||
---------------
|
||||
|
||||
See base options for :ref:`userguide_lib`.
|
||||
See base options for :ref:`cmd_lib`.
|
||||
|
||||
Options
|
||||
~~~~~~~
|
||||
|
@ -64,7 +64,7 @@ The ``version`` supports `Semantic Versioning <http://semver.org>`_ (
|
||||
Storage Options
|
||||
---------------
|
||||
|
||||
See base options for :ref:`userguide_lib`.
|
||||
See base options for :ref:`cmd_lib`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
@ -63,7 +63,7 @@ The ``version`` supports `Semantic Versioning <http://semver.org>`_ (
|
||||
Storage Options
|
||||
---------------
|
||||
|
||||
See base options for :ref:`userguide_lib`.
|
||||
See base options for :ref:`cmd_lib`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
@ -67,7 +67,7 @@ The ``version`` supports `Semantic Versioning <http://semver.org>`_ (
|
||||
Storage Options
|
||||
---------------
|
||||
|
||||
See base options for :ref:`userguide_lib`.
|
||||
See base options for :ref:`cmd_lib`.
|
||||
|
||||
Options
|
||||
-------
|
||||
|
@ -9,7 +9,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
.. _userguide_lib:
|
||||
.. _cmd_lib:
|
||||
|
||||
Library Manager
|
||||
===============
|
||||
@ -46,7 +46,7 @@ dependencies by default.
|
||||
.. versionadded:: 3.0
|
||||
|
||||
Manage custom library storage. It can be used later for the
|
||||
:ref:`projectconf_extra_script` option from :ref:`projectconf`.
|
||||
:ref:`projectconf_lib_extra_dirs` option from :ref:`projectconf`.
|
||||
|
||||
Demo
|
||||
----
|
||||
|
2
examples
2
examples
Submodule examples updated: 06275d78d1...15e215e33e
@ -14,7 +14,7 @@
|
||||
|
||||
import sys
|
||||
|
||||
VERSION = (3, 0, 1)
|
||||
VERSION = (3, 1, 0)
|
||||
__version__ = ".".join([str(s) for s in VERSION])
|
||||
|
||||
__title__ = "platformio"
|
||||
|
@ -14,10 +14,11 @@
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import uuid
|
||||
from copy import deepcopy
|
||||
from os import environ, getenv
|
||||
from os.path import getmtime, isfile, join
|
||||
from os import environ, getenv, listdir, remove
|
||||
from os.path import dirname, getmtime, isdir, isfile, join
|
||||
from time import time
|
||||
|
||||
from lockfile import LockFile
|
||||
@ -50,9 +51,9 @@ DEFAULT_SETTINGS = {
|
||||
"description": "Force verbose output when processing environments",
|
||||
"value": False
|
||||
},
|
||||
"disable_ssl": {
|
||||
"description": "Disable SSL for PlatformIO services",
|
||||
"value": True
|
||||
"enable_ssl": {
|
||||
"description": "Enable SSL for PlatformIO Services",
|
||||
"value": False
|
||||
},
|
||||
"enable_telemetry": {
|
||||
"description":
|
||||
@ -111,6 +112,85 @@ class State(object):
|
||||
self._lockfile.release()
|
||||
|
||||
|
||||
class LocalCache(object):
|
||||
|
||||
def __init__(self, cache_dir=None):
|
||||
self.cache_dir = cache_dir or join(util.get_home_dir(), ".cache")
|
||||
if not self.cache_dir:
|
||||
os.makedirs(self.cache_dir)
|
||||
self.db_path = join(self.cache_dir, "db.data")
|
||||
|
||||
def __enter__(self):
|
||||
if not isfile(self.db_path):
|
||||
return self
|
||||
newlines = []
|
||||
found = False
|
||||
with open(self.db_path) as fp:
|
||||
for line in fp.readlines():
|
||||
if "=" not in line:
|
||||
continue
|
||||
line = line.strip()
|
||||
expire, path = line.split("=")
|
||||
if time() < int(expire):
|
||||
newlines.append(line)
|
||||
continue
|
||||
found = True
|
||||
if isfile(path):
|
||||
remove(path)
|
||||
if not len(listdir(dirname(path))):
|
||||
util.rmtree_(dirname(path))
|
||||
if found:
|
||||
with open(self.db_path, "w") as fp:
|
||||
fp.write("\n".join(newlines) + "\n")
|
||||
return self
|
||||
|
||||
def __exit__(self, type_, value, traceback):
|
||||
pass
|
||||
|
||||
def get_cache_path(self, key):
|
||||
assert len(key) > 3
|
||||
return join(self.cache_dir, key[-2:], key)
|
||||
|
||||
@staticmethod
|
||||
def key_from_args(*args):
|
||||
h = hashlib.md5()
|
||||
for data in args:
|
||||
h.update(str(data))
|
||||
return h.hexdigest()
|
||||
|
||||
def get(self, key):
|
||||
cache_path = self.get_cache_path(key)
|
||||
if not isfile(cache_path):
|
||||
return None
|
||||
with open(cache_path) as fp:
|
||||
data = fp.read()
|
||||
if data[0] in ("{", "["):
|
||||
return json.loads(data)
|
||||
return data
|
||||
|
||||
def set(self, key, data, valid):
|
||||
if not data:
|
||||
return
|
||||
tdmap = {"s": 1, "m": 60, "h": 3600, "d": 86400}
|
||||
assert valid.endswith(tuple(tdmap.keys()))
|
||||
cache_path = self.get_cache_path(key)
|
||||
if not isdir(dirname(cache_path)):
|
||||
os.makedirs(dirname(cache_path))
|
||||
with open(cache_path, "w") as fp:
|
||||
if isinstance(data, dict) or isinstance(data, list):
|
||||
json.dump(data, fp)
|
||||
else:
|
||||
fp.write(str(data))
|
||||
expire_time = int(time() + tdmap[valid[-1]] * int(valid[:-1]))
|
||||
with open(self.db_path, "w+") as fp:
|
||||
fp.write("%s=%s\n" % (str(expire_time), cache_path))
|
||||
return True
|
||||
|
||||
def clean(self):
|
||||
if isdir(self.cache_dir):
|
||||
util.rmtree_(self.cache_dir)
|
||||
|
||||
|
||||
def sanitize_setting(name, value):
|
||||
if name not in DEFAULT_SETTINGS:
|
||||
raise InvalidSettingName(name)
|
||||
|
@ -46,8 +46,8 @@ commonvars.AddVariables(
|
||||
# library options
|
||||
("LIB_LDF_MODE",),
|
||||
("LIB_COMPAT_MODE",),
|
||||
("LIB_DEPS",),
|
||||
("LIB_IGNORE",),
|
||||
("LIB_FORCE",),
|
||||
("LIB_EXTRA_DIRS",),
|
||||
|
||||
# board options
|
||||
@ -121,10 +121,10 @@ for var in ("BUILD_FLAGS", "SRC_BUILD_FLAGS", "SRC_FILTER", "EXTRA_SCRIPT",
|
||||
env[var] = environ.get(k)
|
||||
|
||||
# Parse comma separated items
|
||||
for opt in ("LIB_IGNORE", "LIB_FORCE", "LIB_EXTRA_DIRS"):
|
||||
for opt in ("LIB_DEPS", "LIB_IGNORE", "LIB_EXTRA_DIRS"):
|
||||
if opt not in env:
|
||||
continue
|
||||
env[opt] = [l.strip() for l in env[opt].split(",") if l.strip()]
|
||||
env[opt] = [l.strip() for l in env[opt].split(", ") if l.strip()]
|
||||
|
||||
env.Prepend(LIBSOURCE_DIRS=env.get("LIB_EXTRA_DIRS", []))
|
||||
env.LoadPioPlatform(commonvars)
|
||||
|
@ -331,9 +331,12 @@ class ProjectAsLibBuilder(LibBuilderBase):
|
||||
pass
|
||||
|
||||
def search_deps_recursive(self, lib_builders, search_paths=None):
|
||||
for lib_name in self.env.get("LIB_FORCE", []):
|
||||
for dep in self.env.get("LIB_DEPS", []):
|
||||
for token in ("@", "="):
|
||||
if token in dep:
|
||||
dep, _ = dep.split(token, 1)
|
||||
for lb in lib_builders:
|
||||
if lb.name == lib_name:
|
||||
if lb.name == dep:
|
||||
if lb not in self.depbuilders:
|
||||
self.depend_recursive(lb, lib_builders)
|
||||
break
|
||||
@ -549,7 +552,7 @@ def GetLibBuilders(env):
|
||||
if verbose and found_incompat:
|
||||
sys.stderr.write(
|
||||
"More details about \"Library Compatibility Mode\": "
|
||||
"http://docs.platformio.org/en/latest/librarymanager/ldf.html#"
|
||||
"http://docs.platformio.org/en/stable/librarymanager/ldf.html#"
|
||||
"ldf-compat-mode\n")
|
||||
|
||||
return items
|
||||
|
@ -146,6 +146,8 @@ class InoToCPPConverter(object):
|
||||
|
||||
def _get_total_lines(self, contents):
|
||||
total = 0
|
||||
if contents.endswith("\n"):
|
||||
contents = contents[:-1]
|
||||
for line in contents.split("\n")[::-1]:
|
||||
linenum = self._parse_preproc_line_num(line)
|
||||
if linenum is not None:
|
||||
@ -164,7 +166,7 @@ class InoToCPPConverter(object):
|
||||
("|".join(prototype_names)),
|
||||
contents[:split_pos], re.M)
|
||||
if match_ptrs:
|
||||
split_pos = contents.rfind("\n", 0, match_ptrs.start())
|
||||
split_pos = contents.rfind("\n", 0, match_ptrs.start()) + 1
|
||||
|
||||
result = []
|
||||
result.append(contents[:split_pos].strip())
|
||||
|
@ -115,8 +115,10 @@ def AutodetectUploadPort(*args, **kwargs): # pylint: disable=unused-argument
|
||||
if env.subst("$PIOFRAMEWORK") == "mbed":
|
||||
env.Replace(UPLOAD_PORT=_look_for_mbed_disk())
|
||||
else:
|
||||
if (system() == "Linux" and
|
||||
not isfile("/etc/udev/99-platformio-udev.rules")):
|
||||
if (system() == "Linux" and not any([
|
||||
isfile("/etc/udev/99-platformio-udev.rules"),
|
||||
isfile("/etc/rules.d/99-platformio-udev.rules")
|
||||
])):
|
||||
sys.stderr.write(
|
||||
"\nWarning! Please install `99-platformio-udev.rules` and "
|
||||
"check that your board's PID and VID are listed in the rules."
|
||||
|
@ -16,7 +16,7 @@ import json
|
||||
|
||||
import click
|
||||
|
||||
from platformio.exception import APIRequestError
|
||||
from platformio.exception import APIRequestError, InternetIsOffline
|
||||
from platformio.managers.platform import PlatformManager
|
||||
|
||||
|
||||
@ -92,10 +92,13 @@ def _get_boards(installed=False):
|
||||
boards = PlatformManager().get_installed_boards()
|
||||
if not installed:
|
||||
know_boards = ["%s:%s" % (b['platform'], b['id']) for b in boards]
|
||||
for board in PlatformManager().get_registered_boards():
|
||||
key = "%s:%s" % (board['platform'], board['id'])
|
||||
if key not in know_boards:
|
||||
boards.append(board)
|
||||
try:
|
||||
for board in PlatformManager().get_registered_boards():
|
||||
key = "%s:%s" % (board['platform'], board['id'])
|
||||
if key not in know_boards:
|
||||
boards.append(board)
|
||||
except InternetIsOffline:
|
||||
pass
|
||||
return boards
|
||||
|
||||
|
||||
|
@ -26,12 +26,6 @@ from platformio.commands.init import validate_boards
|
||||
from platformio.commands.run import cli as cmd_run
|
||||
from platformio.exception import CIBuildEnvsEmpty
|
||||
|
||||
# pylint: disable=wrong-import-order
|
||||
try:
|
||||
from configparser import ConfigParser
|
||||
except ImportError:
|
||||
from ConfigParser import ConfigParser
|
||||
|
||||
|
||||
def validate_path(ctx, param, value): # pylint: disable=unused-argument
|
||||
invalid_path = None
|
||||
@ -175,9 +169,8 @@ def _exclude_contents(dst_dir, patterns):
|
||||
|
||||
|
||||
def _copy_project_conf(build_dir, project_conf):
|
||||
cp = ConfigParser()
|
||||
cp.read(project_conf)
|
||||
if cp.has_section("platformio"):
|
||||
cp.remove_section("platformio")
|
||||
config = util.load_project_config(project_conf)
|
||||
if config.has_section("platformio"):
|
||||
config.remove_section("platformio")
|
||||
with open(join(build_dir, "platformio.ini"), "w") as fp:
|
||||
cp.write(fp)
|
||||
config.write(fp)
|
||||
|
@ -12,6 +12,8 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# pylint: disable=too-many-arguments,too-many-locals, too-many-branches
|
||||
|
||||
from os import getcwd, makedirs
|
||||
from os.path import isdir, isfile, join
|
||||
from shutil import copyfile
|
||||
@ -27,19 +29,14 @@ from platformio.managers.platform import PlatformManager
|
||||
|
||||
def validate_boards(ctx, param, value): # pylint: disable=W0613
|
||||
pm = PlatformManager()
|
||||
# check installed boards
|
||||
known_boards = set([b['id'] for b in pm.get_installed_boards()])
|
||||
# if boards are not listed as installed, check registered boards
|
||||
if set(value) - known_boards:
|
||||
known_boards = set([b['id'] for b in pm.get_registered_boards()])
|
||||
unknown_boards = set(value) - known_boards
|
||||
try:
|
||||
assert not unknown_boards
|
||||
return value
|
||||
except AssertionError:
|
||||
raise click.BadParameter("%s. Please search for the board ID using "
|
||||
"`platformio boards` command" %
|
||||
", ".join(unknown_boards))
|
||||
for id_ in value:
|
||||
try:
|
||||
pm.board_config(id_)
|
||||
except exception.UnknownBoard:
|
||||
raise click.BadParameter(
|
||||
"`%s`. Please search for board ID using `platformio boards` "
|
||||
"command" % id_)
|
||||
return value
|
||||
|
||||
|
||||
@click.command(
|
||||
@ -287,10 +284,8 @@ def init_cvs_ignore(project_dir):
|
||||
fp.writelines(current)
|
||||
|
||||
|
||||
def fill_project_envs( # pylint: disable=too-many-arguments,too-many-locals
|
||||
ctx, project_dir, board_ids, project_option, env_prefix,
|
||||
force_download):
|
||||
installed_boards = PlatformManager().get_installed_boards()
|
||||
def fill_project_envs(ctx, project_dir, board_ids, project_option, env_prefix,
|
||||
force_download):
|
||||
content = []
|
||||
used_boards = []
|
||||
used_platforms = []
|
||||
@ -302,33 +297,30 @@ def fill_project_envs( # pylint: disable=too-many-arguments,too-many-locals
|
||||
continue
|
||||
used_boards.append(config.get(section, "board"))
|
||||
|
||||
pm = PlatformManager()
|
||||
for id_ in board_ids:
|
||||
manifest = None
|
||||
for boards in (installed_boards,
|
||||
PlatformManager.get_registered_boards()):
|
||||
for b in boards:
|
||||
if b['id'] == id_:
|
||||
manifest = b
|
||||
break
|
||||
assert manifest is not None
|
||||
|
||||
used_platforms.append(manifest['platform'])
|
||||
board_config = pm.board_config(id_)
|
||||
used_platforms.append(board_config['platform'])
|
||||
if id_ in used_boards:
|
||||
continue
|
||||
used_boards.append(id_)
|
||||
|
||||
envopts = {"platform": board_config['platform'], "board": id_}
|
||||
# find default framework for board
|
||||
frameworks = board_config.get("frameworks")
|
||||
if frameworks:
|
||||
envopts['framework'] = frameworks[0]
|
||||
|
||||
for item in project_option:
|
||||
if "=" not in item:
|
||||
continue
|
||||
_name, _value = item.split("=", 1)
|
||||
envopts[_name.strip()] = _value.strip()
|
||||
|
||||
content.append("")
|
||||
content.append("[env:%s%s]" % (env_prefix, id_))
|
||||
content.append("platform = %s" % manifest['platform'])
|
||||
|
||||
# find default framework for board
|
||||
frameworks = manifest.get("frameworks")
|
||||
if frameworks:
|
||||
content.append("framework = %s" % frameworks[0])
|
||||
|
||||
content.append("board = %s" % id_)
|
||||
if project_option:
|
||||
content.extend(project_option)
|
||||
for name, value in envopts.items():
|
||||
content.append("%s = %s" % (name, value))
|
||||
|
||||
if force_download and used_platforms:
|
||||
_install_dependent_platforms(ctx, used_platforms)
|
||||
|
@ -180,8 +180,10 @@ def lib_search(query, json_output, page, noninteractive, **filters):
|
||||
query.append('%s:"%s"' % (key, value))
|
||||
|
||||
result = get_api_result(
|
||||
"/lib/search", dict(
|
||||
query=" ".join(query), page=page))
|
||||
"/lib/search",
|
||||
dict(
|
||||
query=" ".join(query), page=page),
|
||||
cache_valid="3d")
|
||||
|
||||
if json_output:
|
||||
click.echo(json.dumps(result))
|
||||
@ -232,7 +234,8 @@ def lib_search(query, json_output, page, noninteractive, **filters):
|
||||
result = get_api_result(
|
||||
"/lib/search",
|
||||
dict(
|
||||
query=" ".join(query), page=int(result['page']) + 1))
|
||||
query=" ".join(query), page=int(result['page']) + 1),
|
||||
cache_valid="3d")
|
||||
|
||||
|
||||
@cli.command("list", short_help="List installed libraries")
|
||||
|
@ -48,7 +48,7 @@ def _print_platforms(platforms):
|
||||
@click.option("--json-output", is_flag=True)
|
||||
def platform_search(query, json_output):
|
||||
platforms = []
|
||||
for platform in util.get_api_result("/platforms"):
|
||||
for platform in util.get_api_result("/platforms", cache_valid="365d"):
|
||||
if query == "all":
|
||||
query = ""
|
||||
|
||||
|
@ -80,21 +80,18 @@ def cli(ctx, environment, target, upload_port, project_dir, silent, verbose,
|
||||
for e in config.get("platformio", "env_default").split(",")
|
||||
]
|
||||
|
||||
results = []
|
||||
results = {}
|
||||
start_time = time()
|
||||
for section in config.sections():
|
||||
# skip main configuration section
|
||||
if section == "platformio":
|
||||
continue
|
||||
|
||||
if not section.startswith("env:"):
|
||||
raise exception.InvalidEnvName(section)
|
||||
continue
|
||||
|
||||
envname = section[4:]
|
||||
skipenv = any([environment and envname not in environment,
|
||||
not environment and env_default and
|
||||
envname not in env_default])
|
||||
if skipenv:
|
||||
# echo("Skipped %s environment" % style(envname, fg="yellow"))
|
||||
results[envname] = None
|
||||
continue
|
||||
|
||||
if results:
|
||||
@ -108,9 +105,34 @@ def cli(ctx, environment, target, upload_port, project_dir, silent, verbose,
|
||||
|
||||
ep = EnvironmentProcessor(ctx, envname, options, target,
|
||||
upload_port, silent, verbose)
|
||||
results.append(ep.process())
|
||||
results[envname] = ep.process()
|
||||
|
||||
if not all(results):
|
||||
if len(results) > 1:
|
||||
click.echo()
|
||||
print_header("[%s]" % click.style("SUMMARY"))
|
||||
|
||||
successed = True
|
||||
for envname, status in results.items():
|
||||
status_str = click.style("SUCCESS", fg="green")
|
||||
if status is False:
|
||||
successed = False
|
||||
status_str = click.style("ERROR", fg="red")
|
||||
elif status is None:
|
||||
status_str = click.style("SKIP", fg="yellow")
|
||||
|
||||
click.echo(
|
||||
"Environment %s\t[%s]" % (click.style(
|
||||
envname, fg="cyan"), status_str),
|
||||
err=status is False)
|
||||
|
||||
print_header(
|
||||
"[%s] Took %.2f seconds" % ((click.style(
|
||||
"SUCCESS", fg="green",
|
||||
bold=True) if successed else click.style(
|
||||
"ERROR", fg="red", bold=True)), time() - start_time),
|
||||
is_error=not successed)
|
||||
|
||||
if any([r is False for r in results.values()]):
|
||||
raise exception.ReturnErrorCode()
|
||||
return True
|
||||
|
||||
@ -128,7 +150,7 @@ class EnvironmentProcessor(object):
|
||||
|
||||
REMAPED_OPTIONS = {"framework": "pioframework", "platform": "pioplatform"}
|
||||
|
||||
RENAMED_OPTIONS = {"lib_use": "lib_force"}
|
||||
RENAMED_OPTIONS = {"lib_use": "lib_deps", "lib_force": "lib_deps"}
|
||||
|
||||
RENAMED_PLATFORMS = {"espressif": "espressif8266"}
|
||||
|
||||
@ -152,18 +174,15 @@ class EnvironmentProcessor(object):
|
||||
terminal_width, _ = click.get_terminal_size()
|
||||
start_time = time()
|
||||
|
||||
process_opts = []
|
||||
# multi-line values to one line
|
||||
for k, v in self.options.items():
|
||||
if "\n" in v:
|
||||
process_opts.append((k, ", ".join(
|
||||
[s.strip() for s in v.split("\n") if s.strip()])))
|
||||
else:
|
||||
process_opts.append((k, v))
|
||||
self.options[k] = self.options[k].strip().replace("\n", ", ")
|
||||
|
||||
click.echo("[%s] Processing %s (%s)" %
|
||||
(datetime.now().strftime("%c"), click.style(
|
||||
self.name, fg="cyan", bold=True),
|
||||
", ".join(["%s: %s" % opts for opts in process_opts])))
|
||||
click.echo("[%s] Processing %s (%s)" % (
|
||||
datetime.now().strftime("%c"), click.style(
|
||||
self.name, fg="cyan", bold=True),
|
||||
", ".join(["%s: %s" % (k, v) for k, v in self.options.items()])))
|
||||
click.secho("-" * terminal_width, bold=True)
|
||||
if self.silent:
|
||||
click.echo("Please wait...")
|
||||
@ -248,9 +267,7 @@ class EnvironmentProcessor(object):
|
||||
], self.verbose)
|
||||
if "lib_deps" in self.options:
|
||||
_autoinstall_libdeps(self.cmd_ctx, [
|
||||
d.strip()
|
||||
for d in self.options['lib_deps'].split(
|
||||
"\n" if "\n" in self.options['lib_deps'] else ", ")
|
||||
d.strip() for d in self.options['lib_deps'].split(", ")
|
||||
if d.strip()
|
||||
], self.verbose)
|
||||
|
||||
@ -258,7 +275,9 @@ class EnvironmentProcessor(object):
|
||||
p = PlatformFactory.newPlatform(self.options['platform'])
|
||||
except exception.UnknownPlatform:
|
||||
self.cmd_ctx.invoke(
|
||||
cmd_platform_install, platforms=[self.options['platform']])
|
||||
cmd_platform_install,
|
||||
platforms=[self.options['platform']],
|
||||
skip_default_package=True)
|
||||
p = PlatformFactory.newPlatform(self.options['platform'])
|
||||
|
||||
return p.run(build_vars, build_targets, self.silent, self.verbose)
|
||||
@ -269,7 +288,11 @@ def _autoinstall_libdeps(ctx, libraries, verbose=False):
|
||||
ctx.obj = LibraryManager(storage_dir)
|
||||
if verbose:
|
||||
click.echo("Library Storage: " + storage_dir)
|
||||
ctx.invoke(cmd_lib_install, libraries=libraries, silent=not verbose)
|
||||
for lib in libraries:
|
||||
try:
|
||||
ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)
|
||||
except exception.LibNotFound as e:
|
||||
click.secho("Warning! %s" % e, fg="yellow")
|
||||
|
||||
|
||||
def _clean_pioenvs_dir(pioenvs_dir):
|
||||
|
@ -41,6 +41,7 @@ class FileDownloader(object):
|
||||
if disposition and "filename=" in disposition:
|
||||
self._fname = disposition[disposition.index("filename=") +
|
||||
9:].replace('"', "").replace("'", "")
|
||||
self._fname = self._fname.encode("utf8")
|
||||
else:
|
||||
self._fname = url.split("/")[-1]
|
||||
|
||||
|
@ -50,7 +50,7 @@ class PlatformNotInstalledYet(PlatformioException):
|
||||
|
||||
class BoardNotDefined(PlatformioException):
|
||||
|
||||
MESSAGE = "You need to specify board type using `-b` or `--board` "\
|
||||
MESSAGE = "You need to specify board ID using `-b` or `--board` "\
|
||||
"option. Supported boards list is available via "\
|
||||
" `platformio boards` command"
|
||||
|
||||
@ -131,11 +131,6 @@ class ProjectEnvsNotAvailable(PlatformioException):
|
||||
MESSAGE = "Please setup environments in `platformio.ini` file"
|
||||
|
||||
|
||||
class InvalidEnvName(PlatformioException):
|
||||
|
||||
MESSAGE = "Invalid environment '{0}'. The name must start with 'env:'"
|
||||
|
||||
|
||||
class UnknownEnvNames(PlatformioException):
|
||||
|
||||
MESSAGE = "Unknown environment names '{0}'. Valid names are '{1}'"
|
||||
@ -156,9 +151,16 @@ class APIRequestError(PlatformioException):
|
||||
MESSAGE = "[API] {0}"
|
||||
|
||||
|
||||
class InternetIsOffline(PlatformioException):
|
||||
|
||||
MESSAGE = "You are not connected to the Internet"
|
||||
|
||||
|
||||
class LibNotFound(PlatformioException):
|
||||
|
||||
MESSAGE = "Library `{0}` has not been found in the registry"
|
||||
MESSAGE = "Library `{0}` has not been found in PlatformIO Registry.\n"\
|
||||
"You can ignore this message, if `{0}` is a built-in library "\
|
||||
"(included in framework, SDK). E.g., SPI, Wire, etc."
|
||||
|
||||
|
||||
class NotGlobalLibDir(PlatformioException):
|
||||
|
@ -1,8 +1,8 @@
|
||||
set(ENV{PATH} "{{env_path}}")
|
||||
set(PLATFORMIO_CMD "{{platformio_path}}")
|
||||
|
||||
SET(CMAKE_C_COMPILER "{{cc_path}}")
|
||||
SET(CMAKE_CXX_COMPILER "{{cxx_path}}")
|
||||
SET(CMAKE_C_COMPILER "{{cc_path.replace("\\", "/")}}")
|
||||
SET(CMAKE_CXX_COMPILER "{{cxx_path.replace("\\", "/")}}")
|
||||
SET(CMAKE_CXX_FLAGS_DISTRIBUTION "{{cxx_flags}}")
|
||||
SET(CMAKE_C_FLAGS_DISTRIBUTION "{{cc_flags}}")
|
||||
|
||||
@ -22,4 +22,4 @@ include_directories("{{include.replace("\\", "/")}}")
|
||||
% end
|
||||
% end
|
||||
|
||||
aux_source_directory({{project_src_dir}} SRC_LIST)
|
||||
aux_source_directory({{project_src_dir.replace("\\", "/")}} SRC_LIST)
|
||||
|
@ -34,12 +34,19 @@ from platformio.managers.platform import PlatformManager
|
||||
from platformio.pioplus import pioplus_update
|
||||
|
||||
|
||||
def in_silence(ctx):
|
||||
def in_silence(ctx=None):
|
||||
ctx = ctx or app.get_session_var("command_ctx")
|
||||
assert ctx
|
||||
ctx_args = ctx.args or []
|
||||
return (ctx_args and
|
||||
(ctx.args[0] == "upgrade" or "--json-output" in ctx_args))
|
||||
|
||||
|
||||
def clean_cache():
|
||||
with app.LocalCache() as lc:
|
||||
lc.clean()
|
||||
|
||||
|
||||
def on_platformio_start(ctx, force, caller):
|
||||
if not caller:
|
||||
if getenv("PLATFORMIO_CALLER"):
|
||||
@ -52,6 +59,8 @@ def on_platformio_start(ctx, force, caller):
|
||||
app.set_session_var("caller_id", caller)
|
||||
telemetry.on_command()
|
||||
|
||||
if ctx.args and (ctx.args[0] == "upgrade" or "update" in ctx.args):
|
||||
clean_cache()
|
||||
if not in_silence(ctx):
|
||||
after_upgrade(ctx)
|
||||
|
||||
@ -145,7 +154,7 @@ def after_upgrade(ctx):
|
||||
app.set_state_item("last_version", __version__)
|
||||
else:
|
||||
click.secho("Please wait while upgrading PlatformIO ...", fg="yellow")
|
||||
|
||||
clean_cache()
|
||||
u = Upgrader(last_version, __version__)
|
||||
if u.run(ctx):
|
||||
app.set_state_item("last_version", __version__)
|
||||
@ -153,7 +162,6 @@ def after_upgrade(ctx):
|
||||
# update development platforms
|
||||
pm = PlatformManager()
|
||||
for manifest in pm.get_installed():
|
||||
# @TODO Uncomment line below after first PIO3 release
|
||||
# pm.update(manifest['name'], "^" + manifest['version'])
|
||||
pm.update(manifest['name'])
|
||||
|
||||
@ -191,9 +199,9 @@ def after_upgrade(ctx):
|
||||
"try", fg="cyan"), click.style(
|
||||
"http://platformio.org/platformio-ide", fg="cyan")))
|
||||
if not util.is_ci():
|
||||
click.echo("- %s to keep PlatformIO alive! > %s" % (click.style(
|
||||
"donate", fg="cyan"), click.style(
|
||||
"http://platformio.org/donate", fg="cyan")))
|
||||
click.echo("- %s us with PlatformIO Plus > %s" % (click.style(
|
||||
"support", fg="cyan"), click.style(
|
||||
"https://pioplus.com", fg="cyan")))
|
||||
|
||||
click.echo("*" * terminal_width)
|
||||
click.echo("")
|
||||
|
@ -20,7 +20,7 @@ from os.path import dirname, join
|
||||
import click
|
||||
import semantic_version
|
||||
|
||||
from platformio import commands, exception, util
|
||||
from platformio import app, commands, exception, util
|
||||
from platformio.managers.package import BasePkgManager
|
||||
|
||||
|
||||
@ -194,31 +194,39 @@ class LibraryManager(BasePkgManager):
|
||||
raise exception.UndefinedPackageVersion(requirements or "latest",
|
||||
util.get_systype())
|
||||
dl_data = util.get_api_result(
|
||||
"/lib/download/" + str(name[3:]), dict(version=version))
|
||||
"/lib/download/" + str(name[3:]),
|
||||
dict(version=version),
|
||||
cache_valid="30d")
|
||||
assert dl_data
|
||||
pkg_dir = None
|
||||
try:
|
||||
pkg_dir = self._install_from_url(
|
||||
name, dl_data['url'].replace("http://", "https://"),
|
||||
requirements)
|
||||
except exception.APIRequestError:
|
||||
pkg_dir = self._install_from_url(name, dl_data['url'],
|
||||
requirements)
|
||||
return pkg_dir
|
||||
|
||||
def install(self, # pylint: disable=too-many-arguments
|
||||
return self._install_from_url(
|
||||
name, dl_data['url'].replace("http://", "https://")
|
||||
if app.get_setting("enable_ssl") else dl_data['url'], requirements)
|
||||
|
||||
def install(self, # pylint: disable=too-many-arguments, too-many-locals
|
||||
name,
|
||||
requirements=None,
|
||||
silent=False,
|
||||
trigger_event=True,
|
||||
interactive=False):
|
||||
already_installed = False
|
||||
_name, _requirements, _url = self.parse_pkg_name(name, requirements)
|
||||
if not _url:
|
||||
_name = "id=%d" % self._get_pkg_id_by_name(
|
||||
_name, _requirements, silent=silent, interactive=interactive)
|
||||
already_installed = self.get_package(_name, _requirements, _url)
|
||||
pkg_dir = BasePkgManager.install(self, _name if not _url else name,
|
||||
_requirements, silent, trigger_event)
|
||||
|
||||
try:
|
||||
if not _url:
|
||||
_name = "id=%d" % self._get_pkg_id_by_name(
|
||||
_name,
|
||||
_requirements,
|
||||
silent=silent,
|
||||
interactive=interactive)
|
||||
already_installed = self.get_package(_name, _requirements, _url)
|
||||
pkg_dir = BasePkgManager.install(
|
||||
self, _name
|
||||
if not _url else name, _requirements, silent, trigger_event)
|
||||
except exception.InternetIsOffline as e:
|
||||
if not silent:
|
||||
click.secho(str(e), fg="yellow")
|
||||
return
|
||||
|
||||
if already_installed:
|
||||
return
|
||||
@ -235,8 +243,13 @@ class LibraryManager(BasePkgManager):
|
||||
if any([s in filters.get("version", "") for s in ("\\", "/")]):
|
||||
self.install("{name}={version}".format(**filters))
|
||||
else:
|
||||
lib_info = self.search_for_library(filters, silent,
|
||||
interactive)
|
||||
try:
|
||||
lib_info = self.search_for_library(filters, silent,
|
||||
interactive)
|
||||
except exception.LibNotFound as e:
|
||||
click.secho("Warning! %s" % e, fg="yellow")
|
||||
continue
|
||||
|
||||
if filters.get("version"):
|
||||
self.install(
|
||||
lib_info['id'],
|
||||
@ -273,7 +286,7 @@ class LibraryManager(BasePkgManager):
|
||||
|
||||
lib_info = None
|
||||
result = util.get_api_result(
|
||||
"/lib/search", dict(query=" ".join(query)))
|
||||
"/lib/search", dict(query=" ".join(query)), cache_valid="3d")
|
||||
if result['total'] == 1:
|
||||
lib_info = result['items'][0]
|
||||
elif result['total'] > 1:
|
||||
|
@ -542,11 +542,23 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
||||
except exception.PlatformioException:
|
||||
pass
|
||||
if not latest_version:
|
||||
click.echo("[%s]" % (click.style("Unknown", fg="yellow")))
|
||||
click.echo("[%s]" % (click.style(
|
||||
"Off-line" if not util.internet_on() else "Unknown",
|
||||
fg="yellow")))
|
||||
return
|
||||
if manifest['version'] == latest_version:
|
||||
|
||||
up_to_date = False
|
||||
try:
|
||||
up_to_date = (
|
||||
semantic_version.Version.coerce(manifest['version']) >=
|
||||
semantic_version.Version.coerce(latest_version))
|
||||
except ValueError:
|
||||
up_to_date = latest_version == manifest['version']
|
||||
|
||||
if up_to_date:
|
||||
click.echo("[%s]" % (click.style("Up-to-date", fg="green")))
|
||||
return
|
||||
|
||||
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
|
||||
if only_check:
|
||||
return
|
||||
|
@ -30,8 +30,9 @@ class PlatformManager(BasePkgManager):
|
||||
def __init__(self, package_dir=None, repositories=None):
|
||||
if not repositories:
|
||||
repositories = [
|
||||
"https://dl.bintray.com/platformio/dl-platforms/manifest.json",
|
||||
"{0}://dl.platformio.org/platforms/manifest.json".format(
|
||||
"http" if app.get_setting("disable_ssl") else "https")
|
||||
"https" if app.get_setting("enable_ssl") else "http")
|
||||
]
|
||||
BasePkgManager.__init__(self, package_dir or
|
||||
join(util.get_home_dir(), "platforms"),
|
||||
@ -116,13 +117,23 @@ class PlatformManager(BasePkgManager):
|
||||
@staticmethod
|
||||
@util.memoized
|
||||
def get_registered_boards():
|
||||
return util.get_api_result("/boards")
|
||||
return util.get_api_result("/boards", cache_valid="365d")
|
||||
|
||||
def board_config(self, id_):
|
||||
for manifest in self.get_installed_boards():
|
||||
if manifest['id'] == id_:
|
||||
return manifest
|
||||
for manifest in self.get_registered_boards():
|
||||
if manifest['id'] == id_:
|
||||
return manifest
|
||||
raise exception.UnknownBoard(id_)
|
||||
|
||||
|
||||
class PlatformFactory(object):
|
||||
|
||||
@staticmethod
|
||||
def get_clsname(name):
|
||||
name = re.sub(r"[^\da-z\_]+", "", name, flags=re.I)
|
||||
return "%s%sPlatform" % (name.upper()[0], name.lower()[1:])
|
||||
|
||||
@staticmethod
|
||||
@ -223,7 +234,7 @@ class PlatformPackagesMixin(object):
|
||||
|
||||
class PlatformRunMixin(object):
|
||||
|
||||
LINE_ERROR_RE = re.compile(r"(\s+error|error[:\s]+)", re.I)
|
||||
LINE_ERROR_RE = re.compile(r"(^|\s+)error:?\s+", re.I)
|
||||
|
||||
def run(self, variables, targets, silent, verbose):
|
||||
assert isinstance(variables, dict)
|
||||
@ -353,12 +364,6 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin):
|
||||
def packages(self):
|
||||
if "packages" not in self._manifest:
|
||||
self._manifest['packages'] = {}
|
||||
if "tool-scons" not in self._manifest['packages']:
|
||||
self._manifest['packages']['tool-scons'] = {
|
||||
"version": self._manifest.get("engines", {}).get(
|
||||
"scons", ">=2.3.0,<2.6.0"),
|
||||
"optional": False
|
||||
}
|
||||
return self._manifest['packages']
|
||||
|
||||
def get_dir(self):
|
||||
@ -457,6 +462,12 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin):
|
||||
"version": "~1.20302.1",
|
||||
"optional": False
|
||||
}
|
||||
if "tool-scons" not in self.packages:
|
||||
self.packages['tool-scons'] = {
|
||||
"version": self._manifest.get("engines", {}).get(
|
||||
"scons", ">=2.3.0,<2.6.0"),
|
||||
"optional": False
|
||||
}
|
||||
|
||||
|
||||
class PlatformBoardConfig(object):
|
||||
@ -494,16 +505,20 @@ class PlatformBoardConfig(object):
|
||||
return False
|
||||
|
||||
@property
|
||||
def id_(self):
|
||||
def id(self):
|
||||
return self._id
|
||||
|
||||
@property
|
||||
def id_(self):
|
||||
return self.id
|
||||
|
||||
@property
|
||||
def manifest(self):
|
||||
return self._manifest
|
||||
|
||||
def get_brief_data(self):
|
||||
return {
|
||||
"id": self.id_,
|
||||
"id": self.id,
|
||||
"name": self._manifest['name'],
|
||||
"platform": self._manifest.get("platform"),
|
||||
"mcu": self._manifest.get("build", {}).get("mcu", "").upper(),
|
||||
|
@ -17,7 +17,7 @@ import subprocess
|
||||
from os.path import dirname, join
|
||||
from platform import system
|
||||
|
||||
from platformio import util
|
||||
from platformio import exception, util
|
||||
from platformio.managers.package import PackageManager
|
||||
|
||||
PACKAGE_PIOPLUS_NAME = "tool-pioplus"
|
||||
@ -54,4 +54,5 @@ def pioplus_call(args, **kwargs):
|
||||
os.environ['LD_LIBRARY_PATH'] = dirname(pioplus_path)
|
||||
os.environ['PYTHONEXEPATH'] = util.get_pythonexe_path()
|
||||
util.copy_pythonpath_to_osenv()
|
||||
subprocess.call([pioplus_path] + args, **kwargs)
|
||||
if subprocess.call([pioplus_path] + args, **kwargs) != 0:
|
||||
raise exception.ReturnErrorCode()
|
||||
|
@ -258,9 +258,11 @@ def on_event(category, action, label=None, value=None, screen_name=None):
|
||||
|
||||
|
||||
def on_exception(e):
|
||||
if any([isinstance(e, cls)
|
||||
for cls in (IOError, exception.AbortedByUser,
|
||||
exception.NotGlobalLibDir)]):
|
||||
skip = any(
|
||||
[isinstance(e, cls)
|
||||
for cls in (IOError, exception.AbortedByUser,
|
||||
exception.NotGlobalLibDir, exception.InternetIsOffline)])
|
||||
if skip:
|
||||
return
|
||||
is_crash = any([
|
||||
not isinstance(e, exception.PlatformioException),
|
||||
|
@ -17,6 +17,7 @@ import functools
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import socket
|
||||
import stat
|
||||
import subprocess
|
||||
import sys
|
||||
@ -33,13 +34,34 @@ import requests
|
||||
|
||||
from platformio import __apiurl__, __version__, exception
|
||||
|
||||
# pylint: disable=wrong-import-order
|
||||
# pylint: disable=wrong-import-order, too-many-ancestors
|
||||
|
||||
try:
|
||||
from configparser import ConfigParser
|
||||
except ImportError:
|
||||
from ConfigParser import ConfigParser
|
||||
|
||||
|
||||
class ProjectConfig(ConfigParser):
|
||||
|
||||
VARTPL_RE = re.compile(r"\$\{([^\.\}]+)\.([^\}]+)\}")
|
||||
|
||||
def items(self, section, **_):
|
||||
items = []
|
||||
for option in ConfigParser.options(self, section):
|
||||
items.append((option, self.get(section, option)))
|
||||
return items
|
||||
|
||||
def get(self, section, option, **kwargs):
|
||||
value = ConfigParser.get(self, section, option, **kwargs)
|
||||
if "${" not in value or "}" not in value:
|
||||
return value
|
||||
return self.VARTPL_RE.sub(self._re_sub_handler, value)
|
||||
|
||||
def _re_sub_handler(self, match):
|
||||
return self.get(match.group(1), match.group(2))
|
||||
|
||||
|
||||
class AsyncPipe(Thread):
|
||||
|
||||
def __init__(self, outcallback=None):
|
||||
@ -256,13 +278,15 @@ def get_projectdata_dir():
|
||||
join(get_project_dir(), "data"))
|
||||
|
||||
|
||||
def load_project_config(project_dir=None):
|
||||
if not project_dir:
|
||||
project_dir = get_project_dir()
|
||||
if not is_platformio_project(project_dir):
|
||||
raise exception.NotPlatformIOProject(project_dir)
|
||||
cp = ConfigParser()
|
||||
cp.read(join(project_dir, "platformio.ini"))
|
||||
def load_project_config(path=None):
|
||||
if not path or isdir(path):
|
||||
project_dir = path or get_project_dir()
|
||||
if not is_platformio_project(project_dir):
|
||||
raise exception.NotPlatformIOProject(project_dir)
|
||||
path = join(project_dir, "platformio.ini")
|
||||
assert isfile(path)
|
||||
cp = ProjectConfig()
|
||||
cp.read(path)
|
||||
return cp
|
||||
|
||||
|
||||
@ -382,7 +406,7 @@ def _get_api_result(
|
||||
headers = get_request_defheaders()
|
||||
url = __apiurl__
|
||||
|
||||
if get_setting("disable_ssl"):
|
||||
if not get_setting("enable_ssl"):
|
||||
url = url.replace("https://", "http://")
|
||||
|
||||
try:
|
||||
@ -409,19 +433,35 @@ def _get_api_result(
|
||||
return result
|
||||
|
||||
|
||||
def get_api_result(path, params=None, data=None):
|
||||
max_retries = 5
|
||||
def get_api_result(path, params=None, data=None, cache_valid=None):
|
||||
from platformio.app import LocalCache
|
||||
total = 0
|
||||
max_retries = 5
|
||||
cache_key = (LocalCache.key_from_args(path, params, data)
|
||||
if cache_valid else None)
|
||||
while total < max_retries:
|
||||
try:
|
||||
return _get_api_result(path, params, data)
|
||||
with LocalCache() as lc:
|
||||
if cache_key:
|
||||
result = lc.get(cache_key)
|
||||
if result is not None:
|
||||
return result
|
||||
result = _get_api_result(path, params, data)
|
||||
if cache_valid:
|
||||
with LocalCache() as lc:
|
||||
lc.set(cache_key, result, cache_valid)
|
||||
return result
|
||||
except (requests.exceptions.ConnectionError,
|
||||
requests.exceptions.Timeout) as e:
|
||||
if not internet_on():
|
||||
raise exception.InternetIsOffline()
|
||||
from platformio.maintenance import in_silence
|
||||
total += 1
|
||||
click.secho(
|
||||
"[API] ConnectionError: {0} (incremented retry: max={1}, "
|
||||
"total={2})".format(e, max_retries, total),
|
||||
fg="yellow")
|
||||
if not in_silence():
|
||||
click.secho(
|
||||
"[API] ConnectionError: {0} (incremented retry: max={1}, "
|
||||
"total={2})".format(e, max_retries, total),
|
||||
fg="yellow")
|
||||
sleep(2 * total)
|
||||
|
||||
raise exception.APIRequestError(
|
||||
@ -429,6 +469,17 @@ def get_api_result(path, params=None, data=None):
|
||||
"Please try later.")
|
||||
|
||||
|
||||
def internet_on(timeout=3):
|
||||
host = "8.8.8.8"
|
||||
port = 53
|
||||
try:
|
||||
socket.setdefaulttimeout(timeout)
|
||||
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
|
||||
return True
|
||||
except: # pylint: disable=bare-except
|
||||
return False
|
||||
|
||||
|
||||
def get_pythonexe_path():
|
||||
return os.environ.get("PYTHONEXEPATH", normpath(sys.executable))
|
||||
|
||||
|
@ -95,7 +95,7 @@ Packages
|
||||
* - Name
|
||||
- Contents""")
|
||||
for name in sorted(packagenames):
|
||||
assert name in API_PACKAGES
|
||||
assert name in API_PACKAGES, name
|
||||
contitems = [
|
||||
"`{name} <{url}>`_".format(**item) for item in API_PACKAGES[name]
|
||||
]
|
||||
|
@ -132,6 +132,23 @@ def test_init_enable_auto_uploading(clirunner, validate_cliresult):
|
||||
set(config.items("env:uno")))) == 0
|
||||
|
||||
|
||||
def test_init_custom_framework(clirunner, validate_cliresult):
|
||||
with clirunner.isolated_filesystem():
|
||||
result = clirunner.invoke(
|
||||
cmd_init, ["-b", "teensy31", "--project-option", "framework=mbed"])
|
||||
validate_cliresult(result)
|
||||
validate_pioproject(getcwd())
|
||||
config = util.load_project_config()
|
||||
expected_result = [
|
||||
("platform", "teensy"), ("framework", "mbed"),
|
||||
("board", "teensy31")
|
||||
]
|
||||
assert config.has_section("env:teensy31")
|
||||
assert len(
|
||||
set(expected_result).symmetric_difference(
|
||||
set(config.items("env:teensy31")))) == 0
|
||||
|
||||
|
||||
def test_init_incorrect_board(clirunner):
|
||||
result = clirunner.invoke(cmd_init, ["-b", "missed_board"])
|
||||
assert result.exit_code == 2
|
||||
|
@ -68,59 +68,52 @@ def test_install_uknown_version(clirunner, validate_cliresult):
|
||||
|
||||
|
||||
def test_complex(clirunner, validate_cliresult):
|
||||
items = [
|
||||
"teensy",
|
||||
"https://github.com/platformio/platform-teensy/archive/develop.zip",
|
||||
"https://github.com/platformio/platform-teensy.git",
|
||||
"platformio/platform-teensy",
|
||||
]
|
||||
for item in items:
|
||||
with clirunner.isolated_filesystem():
|
||||
os.environ["PLATFORMIO_HOME_DIR"] = os.getcwd()
|
||||
try:
|
||||
result = clirunner.invoke(cli_platform.platform_install,
|
||||
[item])
|
||||
validate_cliresult(result)
|
||||
assert all([
|
||||
s in result.output
|
||||
for s in ("teensy", "Downloading", "Unpacking",
|
||||
"tool-scons")
|
||||
])
|
||||
with clirunner.isolated_filesystem():
|
||||
os.environ["PLATFORMIO_HOME_DIR"] = os.getcwd()
|
||||
try:
|
||||
result = clirunner.invoke(
|
||||
cli_platform.platform_install,
|
||||
["teensy", "--with-package", "framework-arduinoteensy"])
|
||||
validate_cliresult(result)
|
||||
assert all([
|
||||
s in result.output
|
||||
for s in ("teensy", "Downloading", "Unpacking")
|
||||
])
|
||||
|
||||
# show platform information
|
||||
result = clirunner.invoke(cli_platform.platform_show,
|
||||
["teensy"])
|
||||
validate_cliresult(result)
|
||||
assert "teensy" in result.output
|
||||
# show platform information
|
||||
result = clirunner.invoke(cli_platform.platform_show, ["teensy"])
|
||||
validate_cliresult(result)
|
||||
assert "teensy" in result.output
|
||||
|
||||
# list platforms
|
||||
result = clirunner.invoke(cli_platform.platform_list,
|
||||
["--json-output"])
|
||||
validate_cliresult(result)
|
||||
list_result = json.loads(result.output)
|
||||
assert isinstance(list_result, list)
|
||||
assert len(list_result) == 1
|
||||
assert list_result[0]["name"] == "teensy"
|
||||
assert list_result[0]["packages"] == ["tool-scons"]
|
||||
# list platforms
|
||||
result = clirunner.invoke(cli_platform.platform_list,
|
||||
["--json-output"])
|
||||
validate_cliresult(result)
|
||||
list_result = json.loads(result.output)
|
||||
assert isinstance(list_result, list)
|
||||
assert len(list_result) == 1
|
||||
assert list_result[0]["name"] == "teensy"
|
||||
assert list_result[0]["packages"] == ["framework-arduinoteensy"]
|
||||
|
||||
# try to install again
|
||||
result = clirunner.invoke(cli_platform.platform_install,
|
||||
["teensy"])
|
||||
validate_cliresult(result)
|
||||
assert "is already installed" in result.output
|
||||
# try to install again
|
||||
result = clirunner.invoke(cli_platform.platform_install,
|
||||
["teensy"])
|
||||
validate_cliresult(result)
|
||||
assert "is already installed" in result.output
|
||||
|
||||
# try to update
|
||||
# try to update
|
||||
for _ in range(2):
|
||||
result = clirunner.invoke(cli_platform.platform_update)
|
||||
validate_cliresult(result)
|
||||
assert "teensy" in result.output
|
||||
assert "Up-to-date" in result.output
|
||||
assert "Out-of-date" not in result.output
|
||||
|
||||
# try to uninstall
|
||||
result = clirunner.invoke(cli_platform.platform_uninstall,
|
||||
["teensy"])
|
||||
validate_cliresult(result)
|
||||
for folder in ("platforms", "packages"):
|
||||
assert len(os.listdir(join(util.get_home_dir(),
|
||||
folder))) == 0
|
||||
finally:
|
||||
del os.environ["PLATFORMIO_HOME_DIR"]
|
||||
# try to uninstall
|
||||
result = clirunner.invoke(cli_platform.platform_uninstall,
|
||||
["teensy"])
|
||||
validate_cliresult(result)
|
||||
for folder in ("platforms", "packages"):
|
||||
assert len(os.listdir(join(util.get_home_dir(), folder))) == 0
|
||||
finally:
|
||||
del os.environ["PLATFORMIO_HOME_DIR"]
|
||||
|
@ -23,7 +23,7 @@ def test_local_env():
|
||||
result = util.exec_command(["platformio", "test", "-d",
|
||||
join("examples", "unit-testing", "calculator"),
|
||||
"-e", "local"])
|
||||
if result['returncode'] != 0:
|
||||
if result['returncode'] != 1:
|
||||
pytest.fail(result)
|
||||
assert all(
|
||||
[s in result['out'] for s in ("[PASSED]", "[IGNORED]", "[FAILED]")])
|
||||
|
@ -40,6 +40,8 @@ void myFunction(struct Item *item) {
|
||||
|
||||
}
|
||||
|
||||
#warning "Line number is 43"
|
||||
|
||||
void fooCallback(){
|
||||
|
||||
}
|
||||
|
@ -42,6 +42,8 @@ def test_warning_line(clirunner, validate_cliresult):
|
||||
validate_cliresult(result)
|
||||
assert ('basic.ino:16:14: warning: #warning "Line number is 16"' in
|
||||
result.output)
|
||||
assert ('basic.ino:43:2: warning: #warning "Line number is 43"' in
|
||||
result.output)
|
||||
result = clirunner.invoke(
|
||||
cmd_ci, [join(INOTEST_DIR, "strmultilines"), "-b", "uno"])
|
||||
validate_cliresult(result)
|
||||
|
Reference in New Issue
Block a user