Merge branch 'feature/platformio_20' into develop

This commit is contained in:
Ivan Kravets
2015-05-15 15:23:10 +02:00
67 changed files with 1957 additions and 502 deletions
+1
View File
@@ -134,3 +134,4 @@ The registration requirements:
Now, you can :ref:`register <cmd_lib_register>` your library and allow others
to :ref:`install <cmd_lib_install>` it.
+117 -2
View File
@@ -294,9 +294,124 @@ Installation
1. Create ``platforms`` directory in :ref:`projectconf_pio_home_dir` if it
doesn't exists.
2. Copy ``test.py`` and ``test-builder.py`` files to ``platforms`` directory.
3. Search available platforms via :ref:`cmd_search` command. You should see
3. Search available platforms via :ref:`cmd_platforms_search` command. You should see
``test`` platform.
4. Install ``test`` platform via :ref:`cmd_install` command.
4. Install ``test`` platform via :ref:`cmd_platforms_install` command.
Now, you can use ``test`` for the :ref:`projectconf_env_platform` option in
:ref:`projectconf`.
Example
-------
Let's use the real example which was requested by our user in `issue 175 <https://github.com/platformio/platformio/issues/175>`_. Need to add support for uploading firmware using GDB to
:ref:`platform_ststm32`.
First of all, need to create new folder ``platforms`` in :ref:`projectconf_pio_home_dir`
and copy there two files:
1. Platform manifest file ``ststm32gdb.py`` with the next content:
.. code-block:: python
import os
from platformio.platforms.ststm32 import Ststm32Platform
class Ststm32gdbPlatform(Ststm32Platform):
"""
ST STM32 using GDB as uploader
http://www.st.com/web/en/catalog/mmc/FM141/SC1169?sc=stm32
"""
def get_build_script(self):
return os.path.join(
os.path.dirname(os.path.realpath(__file__)),
"ststm32gdb-builder.py"
)
2. Build script file ``ststm32gdb-builder.py`` with the next content:
.. code-block:: python
"""
Builder for ST STM32 Series ARM microcontrollers with GDB upload.
"""
from os.path import join
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Default,
DefaultEnvironment, SConscript)
env = DefaultEnvironment()
SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py")))
env.Replace(
UPLOADER=join(
"$PIOPACKAGES_DIR", "toolchain-gccarmnoneeabi",
"bin", "arm-none-eabi-gdb"
),
UPLOADERFLAGS=[
join("$BUILD_DIR", "firmware.elf"),
"-batch",
"-x", join("$PROJECT_DIR", "upload.gdb")
],
UPLOADCMD="$UPLOADER $UPLOADERFLAGS"
)
env.Append(
CPPDEFINES=[
"${BOARD_OPTIONS['build']['variant'].upper()}"
],
LINKFLAGS=[
"-nostartfiles",
"-nostdlib"
]
)
#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildFirmware()
#
# Target: Build the .bin file
#
if "uploadlazy" in COMMAND_LINE_TARGETS:
target_firm = join("$BUILD_DIR", "firmware.bin")
else:
target_firm = env.ElfToBin(join("$BUILD_DIR", "firmware"), target_elf)
#
# Target: Print binary size
#
target_size = env.Alias("size", target_elf, "$SIZEPRINTCMD")
AlwaysBuild(target_size)
#
# Target: Upload by default .bin file
#
upload = env.Alias(
["upload", "uploadlazy"], target_firm, "$UPLOADCMD")
AlwaysBuild(upload)
#
# Target: Define targets
#
Default([target_firm, target_size])
Now, we should see ``ststm32gdb`` platform using :ref:`cmd_platforms_search` command output
and can install it via :ref:`platformio platforms install ststm32gdb <cmd_platforms_install>` command.
+30 -1
View File
@@ -226,7 +226,7 @@ processes:
* - Format
- Scope
- Description
* - ``Wp,option``
* - ``-Wp,option``
- CPPFLAGS
- Bypass the compiler driver and pass *option* directly through to the
preprocessor
@@ -309,6 +309,35 @@ but will be applied only for the project source code from
This option can be overridden by global environment variable
:ref:`envvar_PLATFORMIO_SRCBUILD_FLAGS`.
``install_libs``
^^^^^^^^^^^^^^^^
Specify dependent libraries which should be installed before environment
process. The only library IDs are allowed. Multiple libraries can be passed
using comma ``,`` sign.
You can obtain library IDs using :ref:`cmd_lib_search` command.
Example:
.. code-block:: ini
[env:depends_on_some_libs]
install_libs = 1,13,19
``use_libs``
^^^^^^^^^^^^
Specify libraries which should be used by ``Library Dependency Finder`` with
the highest priority.
Example:
.. code-block:: ini
[env:libs_with_highest_priority]
use_libs = OneWire_ID1
``ignore_libs``
^^^^^^^^^^^^^^^
+130
View File
@@ -0,0 +1,130 @@
.. _cmd_ci:
platformio ci
=============
.. contents::
Usage
-----
.. code-block:: bash
platformio ci [OPTIONS] [SRC]
Description
-----------
`Continuous integration (CI, wiki) <http://en.wikipedia.org/wiki/Continuous_integration>`_
is the practice, in software engineering, of merging all developer working
copies with a shared mainline several times a day.
:ref:`cmd_ci` command is conceived of as "hot key" for building project with
arbitrary source code structure. In a nutshell, using ``SRC`` and
:option:`platformio ci --lib` contents PlatformIO initialises via
:ref:`cmd_init` new project in :option:`platformio ci --build-dir`
with the build environments (using :option:`platformio ci --board` or
:option:`platformio ci --project-conf`) and processes them via :ref:`cmd_run`
command.
:ref:`cmd_ci` command is intended to be used in combination with the build
servers and the popular
`Continuous Integration Software <http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software>`_.
By integrating regularly, you can detect errors quickly, and locate them more
easily.
.. note::
:ref:`cmd_ci` command accepts **multiple** ``SRC`` arguments,
:option:`platformio ci --lib` and :option:`platformio ci --exclude` options
which can be a path to directory, file or
`Glob Pattern <http://en.wikipedia.org/wiki/Glob_(programming)>`_.
.. note::
You can omit ``SRC`` argument and set path (multiple paths are allowed
denoting with ``:``) to
``PLATFORMIO_CI_SRC`` `Environment variable <http://en.wikipedia.org/wiki/Environment_variable>`_
Options
-------
.. program:: platformio ci
.. option::
--lib, -l
Source code which will be copied to ``%build_dir%/lib`` directly.
If :option:`platformio ci --lib` is a path to file (not to directory), then
PlatformIO will create temporary directory within ``%build_dir%/lib`` and copy
the rest files into it.
.. option::
--exclude
Exclude directories and/-or files from :option:`platformio ci --build-dir`. The
path must be relative to PlatformIO project within
:option:`platformio ci --build-dir`.
For example, exclude from project ``src`` directory:
* ``examples`` folder
* ``*.h`` files from ``foo`` folder
.. code-block:: bash
platformio ci --exclude=src/examples --exclude=src/foo/*.h [SRC]
.. option::
--board, -b
Build project with automatically pre-generated environments based on board
settings.
For more details please look into :option:`platformio init --board`.
.. option::
--build-dir
Path to directory where PlatformIO will initialise new project. By default it's
temporary directory within your operation system.
.. note::
This directory will be removed at the end of build process. If you want to
keep it, please use :option:`platformio ci --keep-build-dir`.
.. option::
--keep-build-dir
Don't remove :option:`platformio ci --build-dir` after build process.
.. option::
--project-conf
Buid project using pre-configured :ref:`projectconf`.
Examples
--------
1. Integration `Travis.CI <http://travis-ci.org/>`_ for GitHub
`USB_Host_Shield_2.0 <https://github.com/felis/USB_Host_Shield_2.0>`_
project. The ``.travis.yml`` configuration file:
.. code-block:: yaml
language: python
python:
- "2.7"
env:
- PLATFORMIO_CI_SRC=examples/Bluetooth/PS3SPP/PS3SPP.ino
- PLATFORMIO_CI_SRC=examples/pl2303/pl2303_gps/pl2303_gps.ino
install:
- python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"
script:
- platformio ci --lib="." --board=uno --board=teensy31 --board=due
+13 -1
View File
@@ -29,6 +29,8 @@ This command will create:
Options
-------
.. program:: platformio init
.. option::
--project-dir, -d
@@ -50,10 +52,20 @@ The full list with pre-configured boards is available here :ref:`platforms`.
.. option::
--disable-auto-uploading
If you initialise project with the specified ``--board``, then *PlatformIO*
If you initialise project with the specified
:option:`platformio init --board``, then *PlatformIO*
will create environment with enabled firmware auto-uploading. This option
allows you to disable firmware auto-uploading by default.
.. option::
--env-prefix
An environment prefix which will be used with pair in board type.
For example, the default environment name for ``teensy_31`` board will
be ``[env:teensy_31]``.
Examples
--------
+8
View File
@@ -22,6 +22,8 @@ Process environments which are defined in :ref:`projectconf` file
Options
-------
.. program:: platformio run
.. option::
-e, --environment
@@ -39,6 +41,12 @@ Process specified targets
Upload port of embedded board. To print all available ports use
:ref:`cmd_serialports` command
.. option::
--build-dir
Specify the path to project directory. By default, ``--build-dir`` is equal to
current working directory (``CWD``).
Examples
--------
+4
View File
@@ -24,6 +24,8 @@ List available `Serial Ports <http://en.wikipedia.org/wiki/Serial_port>`_
Options
~~~~~~~
.. program:: platformio serialports list
.. option::
--json-output
@@ -99,6 +101,8 @@ To control *monitor* please use these "hot keys":
Options
~~~~~~~
.. program:: platformio serialports monitor
.. option::
-p, --port
+2 -1
View File
@@ -16,7 +16,8 @@ Usage
Description
-----------
Check or update installed :ref:`Platforms <platforms>`
Check or update installed :ref:`Platforms <platforms>` and
:ref:`Libraries <librarymanager>`
Examples
+34 -6
View File
@@ -3,7 +3,35 @@
User Guide
==========
To print all available commands and options use:
.. contents::
Usage
-----
.. code-block:: bash
platformio [OPTIONS] COMMAND
Options
-------
.. program:: platformio
.. option::
--force, - f
Force to accept any confirmation prompts. This option allows to avoid an issue
with :ref:`faq_troubleshooting_pioblocksprompt`
.. option::
--version
Show the version of PlatformIO
.. option::
--help
Show help for the available options and commands
.. code-block:: bash
@@ -11,19 +39,19 @@ To print all available commands and options use:
$ platformio COMMAND --help
Commands
--------
.. toctree::
:maxdepth: 2
cmd_boards
cmd_ci
cmd_init
cmd_install
platformio lib <lib/index>
cmd_list
platformio platforms <platforms/index>
cmd_run
cmd_search
cmd_serialports
cmd_settings
cmd_show
cmd_uninstall
cmd_update
cmd_upgrade
+2
View File
@@ -22,6 +22,8 @@ Install new library by specified
Options
-------
.. program:: platformio lib install
.. option::
-v, --version
+2
View File
@@ -21,6 +21,8 @@ List installed libraries
Options
~~~~~~~
.. program:: platformio lib list
.. option::
--json-output
+2
View File
@@ -61,6 +61,8 @@ For more detail information please go to
Options
-------
.. program:: platformio lib search
.. option::
-a, --author
+19 -2
View File
@@ -10,7 +10,7 @@ Usage
.. code-block:: bash
platformio lib update
platformio lib update [LIBRARY_ID]
Description
@@ -22,6 +22,8 @@ Check or update installed libraries
Examples
--------
1. Update all installed libraries
.. code-block:: bash
$ platformio lib update
@@ -36,8 +38,23 @@ Examples
# Updating [ 13 ] Adafruit-GFX library:
# Versions: Current=a9e5bc4707, Latest=a9e5bc4707 [Up-to-date]
# Updating [ 1 ] OneWire library:
# Versions: Current=2.2, Latest=2.2 [Up-to-date]
# Versions: Current=2.2, Latest=2.2 [Up-to-date]
# Updating [ 4 ] IRremote library:
# Versions: Current=f2dafe5030, Latest=f2dafe5030 [Up-to-date]
# Updating [ 14 ] Adafruit-9DOF-Unified library:
# Versions: Current=b2f07242ac, Latest=b2f07242ac [Up-to-date]
2. Update specified libraries
.. code-block:: bash
$ platformio lib update 1 59
# Updating [ 1 ] OneWire library:
# Versions: Current=2.2, Latest=2.2 [Up-to-date]
# Updating [ 59 ] USB-Host-Shield-20 library:
# Versions: Current=fcab83dcb3, Latest=c61f9ce1c2 [Out-of-date]
# The library #59 'USB-Host-Shield-20' has been successfully uninstalled!
# Installing library [ 59 ]:
# Downloading [####################################] 100%
# Unpacking [####################################] 100%
# The library #59 'USB-Host-Shield-20' has been successfully installed!
@@ -1,7 +1,7 @@
.. _cmd_install:
.. _cmd_platforms_install:
platformio install
==================
platformio platforms install
============================
.. contents::
@@ -10,7 +10,7 @@ Usage
.. code-block:: bash
platformio install [OPTIONS] [PLATFORMS]
platformio platforms install [OPTIONS] [PLATFORMS]
Description
@@ -27,6 +27,8 @@ There are several predefined aliases for packages, such as:
Options
-------
.. program:: platformio platforms install
.. option::
--with-package
@@ -50,7 +52,7 @@ Examples
.. code-block:: bash
$ platformio install timsp430
$ platformio platforms install timsp430
Installing toolchain-timsp430 package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
@@ -68,7 +70,7 @@ Examples
.. code-block:: bash
$ platformio install timsp430 --skip-default-package --with-package=uploader
$ platformio platforms install timsp430 --skip-default-package --with-package=uploader
Installing tool-mspdebug package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
@@ -1,7 +1,7 @@
.. _cmd_list:
.. _cmd_platforms_list:
platformio list
===============
platformio platforms list
=========================
.. contents::
@@ -10,7 +10,7 @@ Usage
.. code-block:: bash
platformio list [OPTIONS]
platformio platforms list [OPTIONS]
Description
@@ -21,6 +21,8 @@ List installed :ref:`Platforms <platforms>`
Options
~~~~~~~
.. program:: platformio platforms list
.. option::
--json-output
@@ -31,7 +33,7 @@ Examples
.. code-block:: bash
$ platformio list
$ platformio platforms list
atmelavr with packages: toolchain-atmelavr, tool-avrdude, framework-arduinoavr, tool-micronucleus
atmelsam with packages: framework-arduinosam, ldscripts, toolchain-gccarmnoneeabi, tool-bossac
freescalekinetis with packages: framework-mbed, toolchain-gccarmnoneeabi
@@ -1,7 +1,7 @@
.. _cmd_search:
.. _cmd_platforms_search:
platformio search
=================
platformio platforms search
===========================
.. contents::
@@ -10,7 +10,7 @@ Usage
.. code-block:: bash
platformio search QUERY [OPTIONS]
platformio platforms search QUERY [OPTIONS]
Description
@@ -21,6 +21,8 @@ Search for development :ref:`Platforms <platforms>`
Options
~~~~~~~
.. program:: platformio platforms search
.. option::
--json-output
@@ -34,7 +36,7 @@ Examples
.. code-block:: bash
$ platformio search
$ platformio platforms search
atmelavr (available packages: ldscripts, toolchain-gccarmnoneeabi, tool-lm4flash, framework-opencm3, framework-energiativa)
--------
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance...
@@ -75,7 +77,7 @@ Examples
.. code-block:: bash
$ platformio search ti
$ platformio platforms search ti
timsp430 (available packages: ldscripts, toolchain-gccarmnoneeabi, tool-lm4flash, framework-opencm3, framework-energiativa)
--------
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are ...
@@ -88,7 +90,7 @@ Examples
.. code-block:: bash
$ platformio search mbed
$ platformio platforms search mbed
freescalekinetis (available packages: ldscripts, toolchain-gccarmnoneeabi, tool-lm4flash, framework-opencm3, framework-energiativa)
----------------
Freescale Kinetis Microcontrollers is family of multiple hardware- and ...
@@ -1,7 +1,7 @@
.. _cmd_show:
.. _cmd_platforms_show:
platformio show
===============
platformio platforms show
=========================
.. contents::
@@ -10,7 +10,7 @@ Usage
.. code-block:: bash
platformio show PLATFORM
platformio platforms show PLATFORM
Description
@@ -24,7 +24,7 @@ Examples
.. code-block:: bash
$ platformio show atmelavr
$ platformio platforms show atmelavr
atmelavr - An embedded platform for Atmel AVR microcontrollers (with Arduino Framework)
----------
Package: toolchain-atmelavr
@@ -1,7 +1,7 @@
.. _cmd_uninstall:
.. _cmd_platforms_uninstall:
platformio uninstall
====================
platformio platforms uninstall
==============================
.. contents::
@@ -10,7 +10,7 @@ Usage
.. code-block:: bash
platformio uninstall PLATFORM
platformio platforms uninstall PLATFORM
Description
@@ -24,7 +24,7 @@ Examples
.. code-block:: bash
$ platformio uninstall timsp430
$ platformio platforms uninstall timsp430
Uninstalling toolchain-timsp430 package: [OK]
Uninstalling tool-mspdebug package: [OK]
Uninstalling framework-energiamsp430 package: [OK]
+99
View File
@@ -0,0 +1,99 @@
.. _cmd_platforms_update:
platformio platforms update
===========================
.. contents::
Usage
-----
.. code-block:: bash
platformio platforms update
Description
-----------
Check or update installed :ref:`Platforms <platforms>`
Examples
--------
.. code-block:: bash
$ platformio platforms update
Platform atmelavr
--------
Updating toolchain-atmelavr package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-avrdude package:
Versions: Current=2, Latest=2 [Up-to-date]
Updating framework-arduinoavr package:
Versions: Current=12, Latest=12 [Up-to-date]
Updating tool-micronucleus package:
Versions: Current=1, Latest=1 [Up-to-date]
Platform atmelsam
--------
Updating framework-arduinosam package:
Versions: Current=3, Latest=3 [Up-to-date]
Updating ldscripts package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating toolchain-gccarmnoneeabi package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-bossac package:
Versions: Current=1, Latest=1 [Up-to-date]
Platform stm32
--------
Updating toolchain-gccarmnoneeabi package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-stlink package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-spl package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-cmsis package:
Versions: Current=2, Latest=2 [Up-to-date]
Updating framework-opencm3 package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating ldscripts package:
Versions: Current=1, Latest=1 [Up-to-date]
Platform teensy
--------
Updating toolchain-atmelavr package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating ldscripts package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-arduinoteensy package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating toolchain-gccarmnoneeabi package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-teensy package:
Versions: Current=1, Latest=1 [Up-to-date]
Platform timsp430
--------
Updating toolchain-timsp430 package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-mspdebug package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-energiamsp430 package:
Versions: Current=2, Latest=2 [Up-to-date]
Platform titiva
--------
Updating ldscripts package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating toolchain-gccarmnoneeabi package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating tool-lm4flash package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-opencm3 package:
Versions: Current=1, Latest=1 [Up-to-date]
Updating framework-energiativa package:
Versions: Current=4, Latest=4 [Up-to-date]
+22
View File
@@ -0,0 +1,22 @@
.. _userguide_platforms:
Platforms Manager
=================
To print all available commands and options use:
.. code-block:: bash
$ platformio platforms --help
$ platformio platforms COMMAND --help
.. toctree::
:maxdepth: 2
cmd_install
cmd_list
cmd_search
cmd_show
cmd_uninstall
cmd_update