forked from platformio/platformio-core
Add support for Raspberry Pi WiringPi framework // Resolve #372
This commit is contained in:
@ -4,9 +4,12 @@ Release History
|
|||||||
PlatformIO 2.0
|
PlatformIO 2.0
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
2.5.1 (2015-12-??)
|
2.6.0 (2015-12-??)
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Added support for Raspberry Pi `WiringPi <http://docs.platformio.org/en/latest/frameworks/wiringpi.html>`__
|
||||||
|
framework
|
||||||
|
(`issue #372 <https://github.com/platformio/platformio/issues/372>`_)
|
||||||
* Implemented Over The Air (OTA) upgrades for `Espressif <http://docs.platformio.org/en/latest/platforms/espressif.html>`__
|
* Implemented Over The Air (OTA) upgrades for `Espressif <http://docs.platformio.org/en/latest/platforms/espressif.html>`__
|
||||||
development platform.
|
development platform.
|
||||||
(`issue #365 <https://github.com/platformio/platformio/issues/365>`_)
|
(`issue #365 <https://github.com/platformio/platformio/issues/365>`_)
|
||||||
|
@ -23,3 +23,4 @@ Frameworks
|
|||||||
libopencm3
|
libopencm3
|
||||||
mbed
|
mbed
|
||||||
spl
|
spl
|
||||||
|
wiringpi
|
||||||
|
62
docs/frameworks/wiringpi.rst
Normal file
62
docs/frameworks/wiringpi.rst
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
.. Copyright 2014-2015 Ivan Kravets <me@ikravets.com>
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
.. _framework_wiringpi:
|
||||||
|
|
||||||
|
Framework ``wiringpi``
|
||||||
|
======================
|
||||||
|
WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It's designed to be familiar to people who have used the Arduino "wiring" system.
|
||||||
|
|
||||||
|
For more detailed information please visit `vendor site <http://wiringpi.com>`_.
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
Boards
|
||||||
|
------
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
* You can list pre-configured boards by :ref:`cmd_boards` command or
|
||||||
|
`PlatformIO Boards Explorer <http://platformio.org/#!/boards>`_
|
||||||
|
* For more detailed ``board`` information please scroll tables below by horizontal.
|
||||||
|
|
||||||
|
Raspberry Pi
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Type ``board``
|
||||||
|
- Name
|
||||||
|
- Microcontroller
|
||||||
|
- Frequency
|
||||||
|
- Flash
|
||||||
|
- RAM
|
||||||
|
|
||||||
|
* - ``raspberrypi_1b``
|
||||||
|
- `Raspberry Pi 1 Model B <https://www.raspberrypi.org>`_
|
||||||
|
- BCM2835
|
||||||
|
- 700 MHz
|
||||||
|
- 524288 Kb
|
||||||
|
- 524288 Kb
|
||||||
|
|
||||||
|
* - ``raspberrypi_2b``
|
||||||
|
- `Raspberry Pi 2 Model B <https://www.raspberrypi.org>`_
|
||||||
|
- BCM2836
|
||||||
|
- 900 MHz
|
||||||
|
- 1048576 Kb
|
||||||
|
- 1048576 Kb
|
||||||
|
|
||||||
|
* - ``raspberrypi_zero``
|
||||||
|
- `Raspberry Pi Zero <https://www.raspberrypi.org>`_
|
||||||
|
- BCM2835
|
||||||
|
- 1000 MHz
|
||||||
|
- 524288 Kb
|
||||||
|
- 524288 Kb
|
@ -17,4 +17,47 @@ 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>`_.
|
For more detailed information please visit `vendor site <http://platformio.org/#!/platforms/native>`_.
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
|
|
||||||
|
Boards
|
||||||
|
------
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
* You can list pre-configured boards by :ref:`cmd_boards` command or
|
||||||
|
`PlatformIO Boards Explorer <http://platformio.org/#!/boards>`_
|
||||||
|
* For more detailed ``board`` information please scroll tables below by
|
||||||
|
horizontal.
|
||||||
|
|
||||||
|
Raspberry Pi
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Type ``board``
|
||||||
|
- Name
|
||||||
|
- Microcontroller
|
||||||
|
- Frequency
|
||||||
|
- Flash
|
||||||
|
- RAM
|
||||||
|
|
||||||
|
* - ``raspberrypi_1b``
|
||||||
|
- `Raspberry Pi 1 Model B <https://www.raspberrypi.org>`_
|
||||||
|
- BCM2835
|
||||||
|
- 700 MHz
|
||||||
|
- 524288 Kb
|
||||||
|
- 524288 Kb
|
||||||
|
|
||||||
|
* - ``raspberrypi_2b``
|
||||||
|
- `Raspberry Pi 2 Model B <https://www.raspberrypi.org>`_
|
||||||
|
- BCM2836
|
||||||
|
- 900 MHz
|
||||||
|
- 1048576 Kb
|
||||||
|
- 1048576 Kb
|
||||||
|
|
||||||
|
* - ``raspberrypi_zero``
|
||||||
|
- `Raspberry Pi Zero <https://www.raspberrypi.org>`_
|
||||||
|
- BCM2835
|
||||||
|
- 1000 MHz
|
||||||
|
- 524288 Kb
|
||||||
|
- 524288 Kb
|
||||||
|
1
examples/raspberrypi/wiringpi-blink/.gitignore
vendored
Normal file
1
examples/raspberrypi/wiringpi-blink/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.pioenvs
|
0
examples/raspberrypi/wiringpi-blink/.skiptest
Normal file
0
examples/raspberrypi/wiringpi-blink/.skiptest
Normal file
65
examples/raspberrypi/wiringpi-blink/.travis.yml
Normal file
65
examples/raspberrypi/wiringpi-blink/.travis.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Continuous Integration (CI) is the practice, in software
|
||||||
|
# engineering, of merging all developer working copies with a shared mainline
|
||||||
|
# several times a day < http://docs.platformio.org/en/latest/ci/index.html >
|
||||||
|
#
|
||||||
|
# Documentation:
|
||||||
|
#
|
||||||
|
# * Travis CI Embedded Builds with PlatformIO
|
||||||
|
# < https://docs.travis-ci.com/user/integration/platformio/ >
|
||||||
|
#
|
||||||
|
# * PlatformIO integration with Travis CI
|
||||||
|
# < http://docs.platformio.org/en/latest/ci/travis.html >
|
||||||
|
#
|
||||||
|
# * User Guide for `platformio ci` command
|
||||||
|
# < http://docs.platformio.org/en/latest/userguide/cmd_ci.html >
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Please choice one of the following templates (proposed below) and uncomment
|
||||||
|
# it (remove "# " before each line) or use own configuration according to the
|
||||||
|
# Travis CI documentation (see above).
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template #1: General project. Test it using existing `platformio.ini`.
|
||||||
|
#
|
||||||
|
|
||||||
|
# language: python
|
||||||
|
# python:
|
||||||
|
# - "2.7"
|
||||||
|
#
|
||||||
|
# sudo: false
|
||||||
|
# cache:
|
||||||
|
# directories:
|
||||||
|
# - "~/.platformio"
|
||||||
|
#
|
||||||
|
# install:
|
||||||
|
# - pip install -U platformio
|
||||||
|
#
|
||||||
|
# script:
|
||||||
|
# - platformio run
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template #2: The project is intended to by used as a library with examples
|
||||||
|
#
|
||||||
|
|
||||||
|
# language: python
|
||||||
|
# python:
|
||||||
|
# - "2.7"
|
||||||
|
#
|
||||||
|
# sudo: false
|
||||||
|
# cache:
|
||||||
|
# directories:
|
||||||
|
# - "~/.platformio"
|
||||||
|
#
|
||||||
|
# env:
|
||||||
|
# - PLATFORMIO_CI_SRC=path/to/test/file.c
|
||||||
|
# - PLATFORMIO_CI_SRC=examples/file.ino
|
||||||
|
# - PLATFORMIO_CI_SRC=path/to/test/directory
|
||||||
|
#
|
||||||
|
# install:
|
||||||
|
# - pip install -U platformio
|
||||||
|
#
|
||||||
|
# script:
|
||||||
|
# - platformio ci --lib="." --board=TYPE_1 --board=TYPE_2 --board=TYPE_N
|
29
examples/raspberrypi/wiringpi-blink/README.rst
Normal file
29
examples/raspberrypi/wiringpi-blink/README.rst
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.. Copyright 2014-2015 Ivan Kravets <me@ikravets.com>
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
How to build PlatformIO based project
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
1. `Install PlatformIO <http://docs.platformio.org/en/latest/installation.html>`_
|
||||||
|
2. Download `source code with examples <https://github.com/platformio/platformio/archive/develop.zip>`_
|
||||||
|
3. Extract ZIP archive
|
||||||
|
4. Run these commands:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Change directory to example
|
||||||
|
> cd platformio-develop/examples/raspberrypi/wiringpi-blink
|
||||||
|
|
||||||
|
# Process example project
|
||||||
|
> platformio run
|
||||||
|
|
||||||
|
# Run program
|
||||||
|
> .pioenvs/raspberrypi_2b/program
|
38
examples/raspberrypi/wiringpi-blink/lib/readme.txt
Normal file
38
examples/raspberrypi/wiringpi-blink/lib/readme.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
This directory is intended for the project specific (private) libraries.
|
||||||
|
PlatformIO will compile them to static libraries and link to executable file.
|
||||||
|
|
||||||
|
The source code of each library should be placed in separate directory, like
|
||||||
|
"lib/private_lib/[here are source files]".
|
||||||
|
|
||||||
|
For example, see how can be organised `Foo` and `Bar` libraries:
|
||||||
|
|
||||||
|
|--lib
|
||||||
|
| |--Bar
|
||||||
|
| | |--docs
|
||||||
|
| | |--examples
|
||||||
|
| | |--src
|
||||||
|
| | |- Bar.c
|
||||||
|
| | |- Bar.h
|
||||||
|
| |--Foo
|
||||||
|
| | |- Foo.c
|
||||||
|
| | |- Foo.h
|
||||||
|
| |- readme.txt --> THIS FILE
|
||||||
|
|- platformio.ini
|
||||||
|
|--src
|
||||||
|
|- main.c
|
||||||
|
|
||||||
|
Then in `src/main.c` you should use:
|
||||||
|
|
||||||
|
#include <Foo.h>
|
||||||
|
#include <Bar.h>
|
||||||
|
|
||||||
|
// rest H/C/CPP code
|
||||||
|
|
||||||
|
PlatformIO will find your libraries automatically, configure preprocessor's
|
||||||
|
include paths and build them.
|
||||||
|
|
||||||
|
See additional options for PlatformIO Library Dependency Finder `lib_*`:
|
||||||
|
|
||||||
|
http://docs.platformio.org/en/latest/projectconf.html#lib-install
|
||||||
|
|
23
examples/raspberrypi/wiringpi-blink/platformio.ini
Normal file
23
examples/raspberrypi/wiringpi-blink/platformio.ini
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# Project Configuration File
|
||||||
|
#
|
||||||
|
# A detailed documentation with the EXAMPLES is located here:
|
||||||
|
# http://docs.platformio.org/en/latest/projectconf.html
|
||||||
|
#
|
||||||
|
|
||||||
|
# A sign `#` at the beginning of the line indicates a comment
|
||||||
|
# Comment lines are ignored.
|
||||||
|
|
||||||
|
# Simple and base environment
|
||||||
|
# [env:mybaseenv]
|
||||||
|
# platform = %INSTALLED_PLATFORM_NAME_HERE%
|
||||||
|
# framework =
|
||||||
|
# board =
|
||||||
|
#
|
||||||
|
# Automatic targets - enable auto-uploading
|
||||||
|
# targets = upload
|
||||||
|
|
||||||
|
[env:raspberrypi_2b]
|
||||||
|
platform = native
|
||||||
|
framework = wiringpi
|
||||||
|
board = raspberrypi_2b
|
48
examples/raspberrypi/wiringpi-blink/src/blink.c
Normal file
48
examples/raspberrypi/wiringpi-blink/src/blink.c
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* blink.c:
|
||||||
|
* Standard "blink" program in wiringPi. Blinks an LED connected
|
||||||
|
* to the first GPIO pin.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net>
|
||||||
|
***********************************************************************
|
||||||
|
* This file is part of wiringPi:
|
||||||
|
* https://projects.drogon.net/raspberry-pi/wiringpi/
|
||||||
|
*
|
||||||
|
* wiringPi is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* wiringPi is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
***********************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <wiringPi.h>
|
||||||
|
|
||||||
|
// LED Pin - wiringPi pin 0 is BCM_GPIO 17.
|
||||||
|
|
||||||
|
#define LED 0
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
printf ("Raspberry Pi blink\n") ;
|
||||||
|
|
||||||
|
wiringPiSetup () ;
|
||||||
|
pinMode (LED, OUTPUT) ;
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
digitalWrite (LED, HIGH) ; // On
|
||||||
|
delay (500) ; // mS
|
||||||
|
digitalWrite (LED, LOW) ; // Off
|
||||||
|
delay (500) ;
|
||||||
|
}
|
||||||
|
return 0 ;
|
||||||
|
}
|
1
examples/raspberrypi/wiringpi-serial/.gitignore
vendored
Normal file
1
examples/raspberrypi/wiringpi-serial/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.pioenvs
|
0
examples/raspberrypi/wiringpi-serial/.skiptest
Normal file
0
examples/raspberrypi/wiringpi-serial/.skiptest
Normal file
65
examples/raspberrypi/wiringpi-serial/.travis.yml
Normal file
65
examples/raspberrypi/wiringpi-serial/.travis.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Continuous Integration (CI) is the practice, in software
|
||||||
|
# engineering, of merging all developer working copies with a shared mainline
|
||||||
|
# several times a day < http://docs.platformio.org/en/latest/ci/index.html >
|
||||||
|
#
|
||||||
|
# Documentation:
|
||||||
|
#
|
||||||
|
# * Travis CI Embedded Builds with PlatformIO
|
||||||
|
# < https://docs.travis-ci.com/user/integration/platformio/ >
|
||||||
|
#
|
||||||
|
# * PlatformIO integration with Travis CI
|
||||||
|
# < http://docs.platformio.org/en/latest/ci/travis.html >
|
||||||
|
#
|
||||||
|
# * User Guide for `platformio ci` command
|
||||||
|
# < http://docs.platformio.org/en/latest/userguide/cmd_ci.html >
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Please choice one of the following templates (proposed below) and uncomment
|
||||||
|
# it (remove "# " before each line) or use own configuration according to the
|
||||||
|
# Travis CI documentation (see above).
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template #1: General project. Test it using existing `platformio.ini`.
|
||||||
|
#
|
||||||
|
|
||||||
|
# language: python
|
||||||
|
# python:
|
||||||
|
# - "2.7"
|
||||||
|
#
|
||||||
|
# sudo: false
|
||||||
|
# cache:
|
||||||
|
# directories:
|
||||||
|
# - "~/.platformio"
|
||||||
|
#
|
||||||
|
# install:
|
||||||
|
# - pip install -U platformio
|
||||||
|
#
|
||||||
|
# script:
|
||||||
|
# - platformio run
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template #2: The project is intended to by used as a library with examples
|
||||||
|
#
|
||||||
|
|
||||||
|
# language: python
|
||||||
|
# python:
|
||||||
|
# - "2.7"
|
||||||
|
#
|
||||||
|
# sudo: false
|
||||||
|
# cache:
|
||||||
|
# directories:
|
||||||
|
# - "~/.platformio"
|
||||||
|
#
|
||||||
|
# env:
|
||||||
|
# - PLATFORMIO_CI_SRC=path/to/test/file.c
|
||||||
|
# - PLATFORMIO_CI_SRC=examples/file.ino
|
||||||
|
# - PLATFORMIO_CI_SRC=path/to/test/directory
|
||||||
|
#
|
||||||
|
# install:
|
||||||
|
# - pip install -U platformio
|
||||||
|
#
|
||||||
|
# script:
|
||||||
|
# - platformio ci --lib="." --board=TYPE_1 --board=TYPE_2 --board=TYPE_N
|
29
examples/raspberrypi/wiringpi-serial/README.rst
Normal file
29
examples/raspberrypi/wiringpi-serial/README.rst
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.. Copyright 2014-2015 Ivan Kravets <me@ikravets.com>
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
How to build PlatformIO based project
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
1. `Install PlatformIO <http://docs.platformio.org/en/latest/installation.html>`_
|
||||||
|
2. Download `source code with examples <https://github.com/platformio/platformio/archive/develop.zip>`_
|
||||||
|
3. Extract ZIP archive
|
||||||
|
4. Run these commands:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Change directory to example
|
||||||
|
> cd platformio-develop/examples/raspberrypi/wiringpi-serial
|
||||||
|
|
||||||
|
# Process example project
|
||||||
|
> platformio run
|
||||||
|
|
||||||
|
# Run program
|
||||||
|
> .pioenvs/raspberrypi_2b/program
|
38
examples/raspberrypi/wiringpi-serial/lib/readme.txt
Normal file
38
examples/raspberrypi/wiringpi-serial/lib/readme.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
This directory is intended for the project specific (private) libraries.
|
||||||
|
PlatformIO will compile them to static libraries and link to executable file.
|
||||||
|
|
||||||
|
The source code of each library should be placed in separate directory, like
|
||||||
|
"lib/private_lib/[here are source files]".
|
||||||
|
|
||||||
|
For example, see how can be organised `Foo` and `Bar` libraries:
|
||||||
|
|
||||||
|
|--lib
|
||||||
|
| |--Bar
|
||||||
|
| | |--docs
|
||||||
|
| | |--examples
|
||||||
|
| | |--src
|
||||||
|
| | |- Bar.c
|
||||||
|
| | |- Bar.h
|
||||||
|
| |--Foo
|
||||||
|
| | |- Foo.c
|
||||||
|
| | |- Foo.h
|
||||||
|
| |- readme.txt --> THIS FILE
|
||||||
|
|- platformio.ini
|
||||||
|
|--src
|
||||||
|
|- main.c
|
||||||
|
|
||||||
|
Then in `src/main.c` you should use:
|
||||||
|
|
||||||
|
#include <Foo.h>
|
||||||
|
#include <Bar.h>
|
||||||
|
|
||||||
|
// rest H/C/CPP code
|
||||||
|
|
||||||
|
PlatformIO will find your libraries automatically, configure preprocessor's
|
||||||
|
include paths and build them.
|
||||||
|
|
||||||
|
See additional options for PlatformIO Library Dependency Finder `lib_*`:
|
||||||
|
|
||||||
|
http://docs.platformio.org/en/latest/projectconf.html#lib-install
|
||||||
|
|
23
examples/raspberrypi/wiringpi-serial/platformio.ini
Normal file
23
examples/raspberrypi/wiringpi-serial/platformio.ini
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# Project Configuration File
|
||||||
|
#
|
||||||
|
# A detailed documentation with the EXAMPLES is located here:
|
||||||
|
# http://docs.platformio.org/en/latest/projectconf.html
|
||||||
|
#
|
||||||
|
|
||||||
|
# A sign `#` at the beginning of the line indicates a comment
|
||||||
|
# Comment lines are ignored.
|
||||||
|
|
||||||
|
# Simple and base environment
|
||||||
|
# [env:mybaseenv]
|
||||||
|
# platform = %INSTALLED_PLATFORM_NAME_HERE%
|
||||||
|
# framework =
|
||||||
|
# board =
|
||||||
|
#
|
||||||
|
# Automatic targets - enable auto-uploading
|
||||||
|
# targets = upload
|
||||||
|
|
||||||
|
[env:raspberrypi_2b]
|
||||||
|
platform = native
|
||||||
|
framework = wiringpi
|
||||||
|
board = raspberrypi_2b
|
75
examples/raspberrypi/wiringpi-serial/src/serialTest.c
Normal file
75
examples/raspberrypi/wiringpi-serial/src/serialTest.c
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* serialTest.c:
|
||||||
|
* Very simple program to test the serial port. Expects
|
||||||
|
* the port to be looped back to itself
|
||||||
|
*
|
||||||
|
* Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net>
|
||||||
|
***********************************************************************
|
||||||
|
* This file is part of wiringPi:
|
||||||
|
* https://projects.drogon.net/raspberry-pi/wiringpi/
|
||||||
|
*
|
||||||
|
* wiringPi is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* wiringPi is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
***********************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <wiringPi.h>
|
||||||
|
#include <wiringSerial.h>
|
||||||
|
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
int fd ;
|
||||||
|
int count ;
|
||||||
|
unsigned int nextTime ;
|
||||||
|
|
||||||
|
if ((fd = serialOpen ("/dev/ttyAMA0", 115200)) < 0)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wiringPiSetup () == -1)
|
||||||
|
{
|
||||||
|
fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
nextTime = millis () + 300 ;
|
||||||
|
|
||||||
|
for (count = 0 ; count < 256 ; )
|
||||||
|
{
|
||||||
|
if (millis () > nextTime)
|
||||||
|
{
|
||||||
|
printf ("\nOut: %3d: ", count) ;
|
||||||
|
fflush (stdout) ;
|
||||||
|
serialPutchar (fd, count) ;
|
||||||
|
nextTime += 300 ;
|
||||||
|
++count ;
|
||||||
|
}
|
||||||
|
|
||||||
|
delay (3) ;
|
||||||
|
|
||||||
|
while (serialDataAvail (fd))
|
||||||
|
{
|
||||||
|
printf (" -> %3d", serialGetchar (fd)) ;
|
||||||
|
fflush (stdout) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\n") ;
|
||||||
|
return 0 ;
|
||||||
|
}
|
@ -12,7 +12,7 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
VERSION = (2, 5, "1.dev1")
|
VERSION = (2, 6, "0.dev0")
|
||||||
__version__ = ".".join([str(s) for s in VERSION])
|
__version__ = ".".join([str(s) for s in VERSION])
|
||||||
|
|
||||||
__title__ = "platformio"
|
__title__ = "platformio"
|
||||||
|
53
platformio/boards/raspberrypi.json
Normal file
53
platformio/boards/raspberrypi.json
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"raspberrypi_1b": {
|
||||||
|
"build": {
|
||||||
|
"extra_flags": "-DRASPBERRYPI -DRASPBERRYPI1",
|
||||||
|
"f_cpu": "700000000L",
|
||||||
|
"mcu": "bcm2835"
|
||||||
|
},
|
||||||
|
"frameworks": ["wiringpi"],
|
||||||
|
"name": "Raspberry Pi 1 Model B",
|
||||||
|
"platform": "native",
|
||||||
|
"upload": {
|
||||||
|
"maximum_ram_size": 536870912,
|
||||||
|
"maximum_size": 536870912
|
||||||
|
},
|
||||||
|
"url": "https://www.raspberrypi.org",
|
||||||
|
"vendor": "Raspberry Pi"
|
||||||
|
},
|
||||||
|
|
||||||
|
"raspberrypi_2b": {
|
||||||
|
"build": {
|
||||||
|
"core": "esp8266",
|
||||||
|
"extra_flags": "-DRASPBERRYPI -DRASPBERRYPI2",
|
||||||
|
"f_cpu": "900000000L",
|
||||||
|
"mcu": "bcm2836"
|
||||||
|
},
|
||||||
|
"frameworks": ["wiringpi"],
|
||||||
|
"name": "Raspberry Pi 2 Model B",
|
||||||
|
"platform": "native",
|
||||||
|
"upload": {
|
||||||
|
"maximum_ram_size": 1073741824,
|
||||||
|
"maximum_size": 1073741824
|
||||||
|
},
|
||||||
|
"url": "https://www.raspberrypi.org",
|
||||||
|
"vendor": "Raspberry Pi"
|
||||||
|
},
|
||||||
|
|
||||||
|
"raspberrypi_zero": {
|
||||||
|
"build": {
|
||||||
|
"extra_flags": "-DRASPBERRYPI -DRASPBERRYPIZERO",
|
||||||
|
"f_cpu": "1000000000L",
|
||||||
|
"mcu": "bcm2835"
|
||||||
|
},
|
||||||
|
"frameworks": ["wiringpi"],
|
||||||
|
"name": "Raspberry Pi Zero",
|
||||||
|
"platform": "native",
|
||||||
|
"upload": {
|
||||||
|
"maximum_ram_size": 536870912,
|
||||||
|
"maximum_size": 536870912
|
||||||
|
},
|
||||||
|
"url": "https://www.raspberrypi.org",
|
||||||
|
"vendor": "Raspberry Pi"
|
||||||
|
}
|
||||||
|
}
|
65
platformio/builder/scripts/frameworks/wiringpi.py
Normal file
65
platformio/builder/scripts/frameworks/wiringpi.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Copyright 2014-2015 Ivan Kravets <me@ikravets.com>
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
"""
|
||||||
|
WiringPi
|
||||||
|
|
||||||
|
WiringPi is a GPIO access library written in C for the BCM2835 used in the
|
||||||
|
Raspberry Pi. It's designed to be familiar to people who have used the Arduino
|
||||||
|
"wiring" system.
|
||||||
|
|
||||||
|
http://wiringpi.com
|
||||||
|
"""
|
||||||
|
|
||||||
|
from os.path import join
|
||||||
|
|
||||||
|
from SCons.Script import DefaultEnvironment
|
||||||
|
|
||||||
|
env = DefaultEnvironment()
|
||||||
|
|
||||||
|
env.Replace(
|
||||||
|
CPPFLAGS=[
|
||||||
|
"-O2",
|
||||||
|
"-Wformat=2",
|
||||||
|
"-Wall",
|
||||||
|
"-Winline",
|
||||||
|
"-pipe",
|
||||||
|
"-fPIC"
|
||||||
|
],
|
||||||
|
|
||||||
|
LIBS=["pthread"]
|
||||||
|
)
|
||||||
|
|
||||||
|
env.Append(
|
||||||
|
CPPDEFINES=[
|
||||||
|
"_GNU_SOURCE"
|
||||||
|
],
|
||||||
|
|
||||||
|
CPPPATH=[
|
||||||
|
join("$BUILD_DIR", "FrameworkWiringPi")
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Target: Build Core Library
|
||||||
|
#
|
||||||
|
|
||||||
|
libs = []
|
||||||
|
libs.append(env.BuildLibrary(
|
||||||
|
join("$BUILD_DIR", "FrameworkWiringPi"),
|
||||||
|
join("$PIOPACKAGES_DIR", "framework-wiringpi", "wiringPi")
|
||||||
|
))
|
||||||
|
|
||||||
|
env.Append(LIBS=libs)
|
@ -46,7 +46,10 @@ def BuildProgram(env):
|
|||||||
env.get("BUILD_FLAGS"),
|
env.get("BUILD_FLAGS"),
|
||||||
getenv("PLATFORMIO_BUILD_FLAGS"),
|
getenv("PLATFORMIO_BUILD_FLAGS"),
|
||||||
])
|
])
|
||||||
env.BuildFramework()
|
|
||||||
|
if env.get("FRAMEWORK"):
|
||||||
|
env.BuildFrameworks([
|
||||||
|
f.lower().strip() for f in env.get("FRAMEWORK", "").split(",")])
|
||||||
|
|
||||||
# build dependent libs
|
# build dependent libs
|
||||||
deplibs = env.BuildDependentLibraries("$PROJECTSRC_DIR")
|
deplibs = env.BuildDependentLibraries("$PROJECTSRC_DIR")
|
||||||
@ -171,23 +174,26 @@ def LookupSources(env, variant_dir, src_dir, duplicate=True, src_filter=None):
|
|||||||
return sources
|
return sources
|
||||||
|
|
||||||
|
|
||||||
def BuildFramework(env):
|
def BuildFrameworks(env, frameworks):
|
||||||
if "FRAMEWORK" not in env or "uploadlazy" in COMMAND_LINE_TARGETS:
|
if not frameworks or "uploadlazy" in COMMAND_LINE_TARGETS:
|
||||||
return
|
return
|
||||||
|
|
||||||
if env['FRAMEWORK'].lower() in ("arduino", "energia"):
|
board_frameworks = env.get("BOARD_OPTIONS", {}).get("frameworks")
|
||||||
env.ConvertInoToCpp()
|
if frameworks == ["platformio"]:
|
||||||
|
if board_frameworks:
|
||||||
for f in env['FRAMEWORK'].split(","):
|
frameworks.insert(0, board_frameworks[0])
|
||||||
framework = f.strip().lower()
|
|
||||||
if framework in env.get("BOARD_OPTIONS", {}).get("frameworks"):
|
|
||||||
SConscript(
|
|
||||||
env.subst(join("$PIOBUILDER_DIR", "scripts", "frameworks",
|
|
||||||
"%s.py" % framework))
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
Exit("Error: This board doesn't support %s framework!" %
|
Exit("Error: Please specify board type")
|
||||||
framework)
|
|
||||||
|
for f in frameworks:
|
||||||
|
if f in ("arduino", "energia"):
|
||||||
|
env.ConvertInoToCpp()
|
||||||
|
|
||||||
|
if f in board_frameworks:
|
||||||
|
SConscript(env.subst(
|
||||||
|
join("$PIOBUILDER_DIR", "scripts", "frameworks", "%s.py" % f)))
|
||||||
|
else:
|
||||||
|
Exit("Error: This board doesn't support %s framework!" % f)
|
||||||
|
|
||||||
|
|
||||||
def BuildLibrary(env, variant_dir, src_dir, src_filter=None):
|
def BuildLibrary(env, variant_dir, src_dir, src_filter=None):
|
||||||
@ -351,7 +357,7 @@ def generate(env):
|
|||||||
env.AddMethod(IsFileWithExt)
|
env.AddMethod(IsFileWithExt)
|
||||||
env.AddMethod(VariantDirWrap)
|
env.AddMethod(VariantDirWrap)
|
||||||
env.AddMethod(LookupSources)
|
env.AddMethod(LookupSources)
|
||||||
env.AddMethod(BuildFramework)
|
env.AddMethod(BuildFrameworks)
|
||||||
env.AddMethod(BuildLibrary)
|
env.AddMethod(BuildLibrary)
|
||||||
env.AddMethod(BuildDependentLibraries)
|
env.AddMethod(BuildDependentLibraries)
|
||||||
return env
|
return env
|
||||||
|
@ -226,6 +226,18 @@ def generate_framework(type_, data):
|
|||||||
print "Processing framework: %s" % type_
|
print "Processing framework: %s" % type_
|
||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
|
lines.append(""".. Copyright 2014-2015 Ivan Kravets <me@ikravets.com>
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
""")
|
||||||
|
|
||||||
lines.append(".. _framework_%s:" % type_)
|
lines.append(".. _framework_%s:" % type_)
|
||||||
lines.append("")
|
lines.append("")
|
||||||
|
|
||||||
@ -248,15 +260,19 @@ Platforms
|
|||||||
* - Name
|
* - Name
|
||||||
- Description""")
|
- Description""")
|
||||||
|
|
||||||
|
_found_platform = False
|
||||||
for platform in sorted(PlatformFactory.get_platforms().keys()):
|
for platform in sorted(PlatformFactory.get_platforms().keys()):
|
||||||
if not is_compat_platform_and_framework(platform, type_):
|
if not is_compat_platform_and_framework(platform, type_):
|
||||||
continue
|
continue
|
||||||
|
_found_platform = True
|
||||||
p = PlatformFactory.newPlatform(platform)
|
p = PlatformFactory.newPlatform(platform)
|
||||||
lines.append("""
|
lines.append("""
|
||||||
* - :ref:`platform_{type_}`
|
* - :ref:`platform_{type_}`
|
||||||
- {description}""".format(
|
- {description}""".format(
|
||||||
type_=platform,
|
type_=platform,
|
||||||
description=p.get_description()))
|
description=p.get_description()))
|
||||||
|
if not _found_platform:
|
||||||
|
del lines[-1]
|
||||||
|
|
||||||
lines.append("""
|
lines.append("""
|
||||||
Boards
|
Boards
|
||||||
|
@ -28,7 +28,7 @@ def pytest_generate_tests(metafunc):
|
|||||||
example_dirs = normpath(join(dirname(__file__), "..", "examples"))
|
example_dirs = normpath(join(dirname(__file__), "..", "examples"))
|
||||||
project_dirs = []
|
project_dirs = []
|
||||||
for root, _, files in walk(example_dirs):
|
for root, _, files in walk(example_dirs):
|
||||||
if "platformio.ini" not in files:
|
if "platformio.ini" not in files or ".skiptest" in files:
|
||||||
continue
|
continue
|
||||||
project_dirs.append(root)
|
project_dirs.append(root)
|
||||||
project_dirs.sort()
|
project_dirs.sort()
|
||||||
|
Reference in New Issue
Block a user