diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst new file mode 100644 index 00000000..705f6bf0 --- /dev/null +++ b/docs/frameworks/arduino.rst @@ -0,0 +1,552 @@ +.. _framework_arduino: + +Framework ``arduino`` +===================== +Arduino 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. + +.. contents:: + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. + +Adafruit +~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``flora8`` + - `Adafruit Flora `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``protrinket3`` + - `Pro Trinket 3V/12MHz (USB) `_ + - ATMEGA328P + - 12 MHz + - 32 Kb + - 2 Kb + + * - ``protrinket3ftdi`` + - `Pro Trinket 3V/12MHz (FTDI) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``protrinket5`` + - `Pro Trinket 5V/16MHz (USB) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``protrinket5ftdi`` + - `Pro Trinket 5V/16MHz (USB) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``trinket3`` + - `Adafruit Trinket 3V/8MHz `_ + - ATTINY85 + - 8 MHz + - 8 Kb + - 0.5 Kb + + * - ``trinket5`` + - `Adafruit Trinket 5V/16MHz `_ + - ATTINY85 + - 16 MHz + - 8 Kb + - 0.5 Kb + +Arduino +~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``LilyPadUSB`` + - `LilyPad Arduino USB `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``atmegangatmega168`` + - `Arduino NG or older ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``atmegangatmega8`` + - `Arduino NG or older ATmega8 `_ + - ATMEGA8 + - 16 MHz + - 8 Kb + - 1 Kb + + * - ``btatmega168`` + - `Arduino BT ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``btatmega328`` + - `Arduino BT ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``diecimilaatmega168`` + - `Arduino Duemilanove or Diecimila ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``diecimilaatmega328`` + - `Arduino Duemilanove or Diecimila ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``due`` + - `Arduino Due (Programming Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb + + * - ``dueUSB`` + - `Arduino Due (USB Native Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb + + * - ``esplora`` + - `Arduino Esplora `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``ethernet`` + - `Arduino Ethernet `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``fio`` + - `Arduino Fio `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``leonardo`` + - `Arduino Leonardo `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``lilypadatmega168`` + - `LilyPad Arduino ATmega168 `_ + - ATMEGA168 + - 8 MHz + - 16 Kb + - 1 Kb + + * - ``lilypadatmega328`` + - `LilyPad Arduino ATmega328 `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``megaADK`` + - `Arduino Mega ADK `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + + * - ``megaatmega1280`` + - `Arduino Mega or Mega 2560 ATmega1280 `_ + - ATMEGA1280 + - 16 MHz + - 128 Kb + - 8 Kb + + * - ``megaatmega2560`` + - `Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + + * - ``micro`` + - `Arduino Micro `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``miniatmega168`` + - `Arduino Mini ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``miniatmega328`` + - `Arduino Mini ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``nanoatmega168`` + - `Arduino Nano ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``nanoatmega328`` + - `Arduino Nano ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``pro16MHzatmega168`` + - `Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz) `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``pro16MHzatmega328`` + - `Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``pro8MHzatmega168`` + - `Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz) `_ + - ATMEGA168 + - 8 MHz + - 16 Kb + - 1 Kb + + * - ``pro8MHzatmega328`` + - `Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz) `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``robotControl`` + - `Arduino Robot Control `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``robotMotor`` + - `Arduino Robot Motor `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``uno`` + - `Arduino Uno `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``yun`` + - `Arduino Yun `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + +BitWizard +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``raspduino`` + - `Raspduino `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + +Digistump +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``digispark-pro`` + - `Digispark Pro (Default 16 MHz) `_ + - ATTINY167 + - 16 MHz + - 16 Kb + - 0.5 Kb + + * - ``digispark-pro32`` + - `Digispark Pro (16 MHz) (32 byte buffer) `_ + - ATTINY167 + - 16 MHz + - 16 Kb + - 0.5 Kb + + * - ``digispark-pro64`` + - `Digispark Pro (16 MHz) (64 byte buffer) `_ + - ATTINY167 + - 16 MHz + - 16 Kb + - 0.5 Kb + + * - ``digispark-tiny`` + - `Digispark (Default - 16 MHz) `_ + - ATTINY85 + - 16 MHz + - 8 Kb + - 0.5 Kb + + * - ``digix`` + - `Digistump DigiX `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 28 Kb + +Engduino +~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``engduinov1`` + - `Engduino 1 `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``engduinov2`` + - `Engduino 2 `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``engduinov3`` + - `Engduino 3 `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + +Microduino +~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``1284p16m`` + - `Microduino Core+ (ATmega1284P@16M,5V) `_ + - ATMEGA1284P + - 16 MHz + - 128 Kb + - 16 Kb + + * - ``1284p8m`` + - `Microduino Core+ (ATmega1284P@8M,3.3V) `_ + - ATMEGA1284P + - 8 MHz + - 128 Kb + - 16 Kb + + * - ``168pa16m`` + - `Microduino Core (Atmega168PA@16M,5V) `_ + - ATMEGA168P + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``168pa8m`` + - `Microduino Core (Atmega168PA@8M,3.3V) `_ + - ATMEGA168P + - 8 MHz + - 16 Kb + - 1 Kb + + * - ``328p16m`` + - `Microduino Core (Atmega328P@16M,5V) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``328p8m`` + - `Microduino Core (Atmega328P@8M,3.3V) `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``32u416m`` + - `Microduino Core USB (ATmega32U4@16M,5V) `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``644pa16m`` + - `Microduino Core+ (Atmega644PA@16M,5V) `_ + - ATMEGA644P + - 16 MHz + - 64 Kb + - 4 Kb + + * - ``644pa8m`` + - `Microduino Core+ (Atmega644PA@8M,3.3V) `_ + - ATMEGA644P + - 8 MHz + - 64 Kb + - 4 Kb + +SainSmart +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``sainSmartDue`` + - `SainSmart Due (Programming Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb + + * - ``sainSmartDueUSB`` + - `SainSmart Due (USB Native Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb + +Teensy +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``teensy20`` + - `Teensy 2.0 `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``teensy20pp`` + - `Teensy++ 2.0 `_ + - AT90USB1286 + - 16 MHz + - 128 Kb + - 8 Kb + + * - ``teensy30`` + - `Teensy 3.0 `_ + - MK20DX128 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``teensy31`` + - `Teensy 3.1 `_ + - MK20DX256 + - 72 MHz + - 256 Kb + - 64 Kb diff --git a/docs/frameworks/cmsis.rst b/docs/frameworks/cmsis.rst new file mode 100644 index 00000000..95deecb8 --- /dev/null +++ b/docs/frameworks/cmsis.rst @@ -0,0 +1,48 @@ +.. _framework_cmsis: + +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. + +.. contents:: + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. + +ST +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``disco_f303vc`` + - `STM32F3DISCOVERY `_ + - STM32F303VCT6 + - 72 MHz + - 256 Kb + - 48 Kb + + * - ``disco_f407vg`` + - `STM32F4DISCOVERY `_ + - STM32F407VGT6 + - 168 MHz + - 1024 Kb + - 128 Kb + + * - ``disco_l152rb`` + - `STM32LDISCOVERY `_ + - STM32L152RBT6 + - 32 MHz + - 128 Kb + - 16 Kb diff --git a/docs/frameworks/energia.rst b/docs/frameworks/energia.rst new file mode 100644 index 00000000..2a4c0524 --- /dev/null +++ b/docs/frameworks/energia.rst @@ -0,0 +1,97 @@ +.. _framework_energia: + +Framework ``energia`` +===================== +Energia framework enables pretty much anyone to start easily creating microcontroller-based projects and applications. Its easy-to-use libraries and functions provide developers of all experience levels to start blinking LEDs, buzzing buzzers and sensing sensors more quickly than ever before. + +.. contents:: + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. + +TI +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lplm4f120h5qr`` + - `LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ + - LPLM4F120H5QR + - 80 MHz + - 256 Kb + - 32 Kb + + * - ``lpmsp430f5529`` + - `LaunchPad w/ msp430f5529 (16MHz) `_ + - MSP430F5529 + - 16 MHz + - 128 Kb + - 1 Kb + + * - ``lpmsp430f5529_25`` + - `LaunchPad w/ msp430f5529 (25MHz) `_ + - MSP430F5529 + - 25 MHz + - 128 Kb + - 1 Kb + + * - ``lpmsp430fr5739`` + - `FraunchPad w/ msp430fr5739 `_ + - MSP430FR5739 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``lpmsp430fr5969`` + - `LaunchPad w/ msp430fr5969 `_ + - MSP430FR5969 + - 8 MHz + - 64 Kb + - 1 Kb + + * - ``lpmsp430g2231`` + - `LaunchPad w/ msp430g2231 (1 MHz) `_ + - MSP430G2231 + - 1 MHz + - 2 Kb + - 0.125 Kb + + * - ``lpmsp430g2452`` + - `LaunchPad w/ msp430g2452 (16MHz) `_ + - MSP430G2452 + - 16 MHz + - 8 Kb + - 0.25 Kb + + * - ``lpmsp430g2553`` + - `LaunchPad w/ msp430g2553 (16MHz) `_ + - MSP430G2553 + - 16 MHz + - 16 Kb + - 0.5 Kb + + * - ``lptm4c1230c3pm`` + - `LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ + - LPTM4C1230C3PM + - 80 MHz + - 256 Kb + - 32 Kb + + * - ``lptm4c1294ncpdt`` + - `LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ + - LPTM4C1294NCPDT + - 120 MHz + - 1024 Kb + - 256 Kb diff --git a/docs/frameworks/index.rst b/docs/frameworks/index.rst new file mode 100644 index 00000000..43952bef --- /dev/null +++ b/docs/frameworks/index.rst @@ -0,0 +1,14 @@ +.. _frameworks: + +Frameworks +========== + +.. toctree:: + :maxdepth: 2 + + arduino + cmsis + energia + mbed + opencm3 + spl diff --git a/docs/frameworks/mbed.rst b/docs/frameworks/mbed.rst new file mode 100644 index 00000000..7051cd81 --- /dev/null +++ b/docs/frameworks/mbed.rst @@ -0,0 +1,504 @@ +.. _framework_mbed: + +Framework ``mbed`` +================== +The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. + +.. contents:: + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. + +CQ Publishing +~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc11u35_501`` + - `TG-LPC11U35-501 `_ + - LPC11U35 + - 48 MHz + - 64 Kb + - 10 Kb + +Embedded Artists +~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc11u35`` + - `EA LPC11U35 QuickStart Board `_ + - LPC11U35 + - 48 MHz + - 64 Kb + - 10 Kb + + * - ``lpc4088`` + - `EA LPC4088 QuickStart Board `_ + - LPC4088 + - 120 MHz + - 512 Kb + - 96 Kb + + * - ``lpc4088_dm`` + - `EA LPC4088 Display Module `_ + - LPC4088 + - 120 MHz + - 512 Kb + - 96 Kb + +Freescale +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``frdm_k20d50m`` + - `Freescale Kinetis FRDM-K20D50M `_ + - MK20DX128VLH5 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``frdm_k22f`` + - `Freescale Kinetis FRDM-K22F `_ + - MK22FN512VLH12 + - 120 MHz + - 512 Kb + - 128 Kb + + * - ``frdm_k64f`` + - `Freescale Kinetis FRDM-K64F `_ + - MK64FN1M0VLL12 + - 120 MHz + - 1024 Kb + - 256 Kb + + * - ``frdm_kl05z`` + - `Freescale Kinetis FRDM-KL05Z `_ + - MKL05Z32VFM4 + - 48 MHz + - 32 Kb + - 4 Kb + + * - ``frdm_kl25z`` + - `Freescale Kinetis FRDM-KL25Z `_ + - MKL25Z128VLK4 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``frdm_kl46z`` + - `Freescale Kinetis FRDM-KL46Z `_ + - MKL46Z256VLL4 + - 48 MHz + - 256 Kb + - 32 Kb + +JKSoft +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``wallBotBLE`` + - `JKSoft Wallbot BLE `_ + - NRF51822 + - 16 MHz + - 128 Kb + - 16 Kb + +NGX Technologies +~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``blueboard_lpc11u24`` + - `BlueBoard-LPC11U24 `_ + - LPC11U24 + - 48 MHz + - 32 Kb + - 8 Kb + +NXP +~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc11u24`` + - `mbed LPC11U24 `_ + - LPC11U24 + - 48 MHz + - 32 Kb + - 8 Kb + + * - ``lpc1549`` + - `LPCXpresso1549 `_ + - LPC1549 + - 72 MHz + - 256 Kb + - 36 Kb + + * - ``lpc1768`` + - `mbed LPC1768 `_ + - LPC1768 + - 96 MHz + - 512 Kb + - 32 Kb + +Nordic +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``nrf51_dk`` + - `Nordic nRF51-DK `_ + - NRF51822 + - 32 MHz + - 256 Kb + - 32 Kb + + * - ``nrf51_dongle`` + - `Nordic nRF51-Dongle `_ + - NRF51822 + - 32 MHz + - 256 Kb + - 32 Kb + + * - ``nrf51_mkit`` + - `Nordic nRF51822-mKIT `_ + - NRF51822 + - 16 MHz + - 128 Kb + - 16 Kb + +Outrageous Circuits +~~~~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``mbuino`` + - `Outrageous Circuits mBuino `_ + - LPC11U24 + - 48 MHz + - 32 Kb + - 8 Kb + +RedBearLab +~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``redBearLab`` + - `RedBearLab nRF51822 `_ + - NRF51822 + - 16 MHz + - 256 Kb + - 16 Kb + + * - ``redBearLabBLENano`` + - `RedBearLab BLE Nano `_ + - NRF51822 + - 16 MHz + - 256 Kb + - 16 Kb + +ST +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``disco_f051r8`` + - `STM32F0DISCOVERY `_ + - STM32F051R8T6 + - 48 MHz + - 64 Kb + - 8 Kb + + * - ``disco_f100rb`` + - `STM32VLDISCOVERY `_ + - STM32F100RBT6 + - 24 MHz + - 128 Kb + - 8 Kb + + * - ``disco_f303vc`` + - `STM32F3DISCOVERY `_ + - STM32F303VCT6 + - 72 MHz + - 256 Kb + - 48 Kb + + * - ``disco_f334c8`` + - `32F3348DISCOVERY `_ + - STM32F334C8T6 + - 72 MHz + - 64 Kb + - 16 Kb + + * - ``disco_f401vc`` + - `32F401CDISCOVERY `_ + - STM32F401VCT6 + - 84 MHz + - 256 Kb + - 64 Kb + + * - ``disco_f407vg`` + - `STM32F4DISCOVERY `_ + - STM32F407VGT6 + - 168 MHz + - 1024 Kb + - 128 Kb + + * - ``disco_f429zi`` + - `32F429IDISCOVERY `_ + - STM32F429ZIT6 + - 180 MHz + - 2048 Kb + - 256 Kb + + * - ``nucleo_f030r8`` + - `ST Nucleo F030R8 `_ + - STM32F030R8T6 + - 48 MHz + - 64 Kb + - 8 Kb + + * - ``nucleo_f070rb`` + - `ST Nucleo F070RB `_ + - STM32F070RBT6 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``nucleo_f072rb`` + - `ST Nucleo F072RB `_ + - STM32F072RBT6 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``nucleo_f091rc`` + - `ST Nucleo F091RC `_ + - STM32F091RCT6 + - 48 MHz + - 256 Kb + - 32 Kb + + * - ``nucleo_f103rb`` + - `ST Nucleo F103RB `_ + - STM32F103RBT6 + - 72 MHz + - 128 Kb + - 20 Kb + + * - ``nucleo_f302r8`` + - `ST Nucleo F302R8 `_ + - STM32F302R8T6 + - 72 MHz + - 64 Kb + - 16 Kb + + * - ``nucleo_f334r8`` + - `ST Nucleo F334R8 `_ + - STM32F334R8T6 + - 72 MHz + - 64 Kb + - 16 Kb + + * - ``nucleo_f401re`` + - `ST Nucleo F401RE `_ + - STM32F401RET6 + - 84 MHz + - 512 Kb + - 96 Kb + + * - ``nucleo_f411re`` + - `ST Nucleo F411RE `_ + - STM32F411RET6 + - 100 MHz + - 512 Kb + - 128 Kb + + * - ``nucleo_l053r8`` + - `ST Nucleo L053R8 `_ + - STM32L053R8T6 + - 48 MHz + - 64 Kb + - 8 Kb + + * - ``nucleo_l152re`` + - `ST Nucleo L152RE `_ + - STM32L152RET6 + - 32 MHz + - 512 Kb + - 80 Kb + +SeeedStudio +~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``seeeduinoArchPro`` + - `Seeeduino-Arch-Pro `_ + - LPC1768 + - 96 MHz + - 512 Kb + - 32 Kb + +Solder Splash Labs +~~~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``dipcortexm0`` + - `DipCortex M0 `_ + - LPC11U24 + - 50 MHz + - 32 Kb + - 8 Kb + +Switch Science +~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``hrm1017`` + - `Switch Science mbed HRM1017 `_ + - NRF51822 + - 16 MHz + - 256 Kb + - 16 Kb + + * - ``lpc1114fn28`` + - `mbed LPC1114FN28 `_ + - LPC1114FN28 + - 48 MHz + - 32 Kb + - 4 Kb + +u-blox +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``ubloxc027`` + - `u-blox C027 `_ + - LPC1768 + - 96 MHz + - 512 Kb + - 32 Kb diff --git a/docs/frameworks/opencm3.rst b/docs/frameworks/opencm3.rst new file mode 100644 index 00000000..81dbc3aa --- /dev/null +++ b/docs/frameworks/opencm3.rst @@ -0,0 +1,82 @@ +.. _framework_opencm3: + +Framework ``opencm3`` +===================== +The libopencm3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. + +.. contents:: + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. + +ST +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``disco_f303vc`` + - `STM32F3DISCOVERY `_ + - STM32F303VCT6 + - 72 MHz + - 256 Kb + - 48 Kb + + * - ``disco_f407vg`` + - `STM32F4DISCOVERY `_ + - STM32F407VGT6 + - 168 MHz + - 1024 Kb + - 128 Kb + + * - ``disco_l152rb`` + - `STM32LDISCOVERY `_ + - STM32L152RBT6 + - 32 MHz + - 128 Kb + - 16 Kb + +TI +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lplm4f120h5qr`` + - `LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ + - LPLM4F120H5QR + - 80 MHz + - 256 Kb + - 32 Kb + + * - ``lptm4c1230c3pm`` + - `LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ + - LPTM4C1230C3PM + - 80 MHz + - 256 Kb + - 32 Kb + + * - ``lptm4c1294ncpdt`` + - `LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ + - LPTM4C1294NCPDT + - 120 MHz + - 1024 Kb + - 256 Kb diff --git a/docs/frameworks/spl.rst b/docs/frameworks/spl.rst new file mode 100644 index 00000000..16e4e4af --- /dev/null +++ b/docs/frameworks/spl.rst @@ -0,0 +1,48 @@ +.. _framework_spl: + +Framework ``spl`` +================= +The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. + +.. contents:: + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. + +ST +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``disco_f303vc`` + - `STM32F3DISCOVERY `_ + - STM32F303VCT6 + - 72 MHz + - 256 Kb + - 48 Kb + + * - ``disco_f407vg`` + - `STM32F4DISCOVERY `_ + - STM32F407VGT6 + - 168 MHz + - 1024 Kb + - 128 Kb + + * - ``disco_l152rb`` + - `STM32LDISCOVERY `_ + - STM32L152RBT6 + - 32 MHz + - 128 Kb + - 16 Kb diff --git a/docs/index.rst b/docs/index.rst index 3f7bd777..8f734c06 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -28,7 +28,7 @@ Embedded Development. *Easier Than Ever.* * Built-in :ref:`Serial Port Monitor ` * Configurable build :ref:`-flags/-options ` * Integration with :ref:`development environments (IDE) ` -* Pre-built tool chains, frameworks for the popular Hardware Platforms +* Pre-built tool chains, :ref:`frameworks` for the popular Hardware Platforms Smart Code Builder. *Fast and Reliable.* ---------------------------------------- @@ -59,6 +59,7 @@ Contents projectconf envvars platforms/index + frameworks/index librarymanager/index userguide/index ide diff --git a/docs/platforms/atmelavr.rst b/docs/platforms/atmelavr.rst index cba4eae4..8204ec29 100644 --- a/docs/platforms/atmelavr.rst +++ b/docs/platforms/atmelavr.rst @@ -3,11 +3,13 @@ Platform ``atmelavr`` ===================== -`Atmel AVR® 8- and 32-bit MCUs `_ -deliver a unique combination of performance, power efficiency and design -flexibility. Optimized to speed time to market—and easily adapt to new -ones—they are based on the industry's most code-efficient architecture for -C and assembly programming. +Atmel AVR 8- and 32-bit MCUs deliver a unique combination of +performance, power efficiency and design flexibility. Optimized to +speed time to market-and easily adapt to new ones-they are based on +the industrys most code-efficient architecture for C and assembly +programming. + +http://www.atmel.com/products/microcontrollers/avr/default.aspx .. contents:: @@ -18,45 +20,25 @@ Packages :header-rows: 1 * - Name - - Alias - Contents - * - ``toolchain-atmelavr`` - - toolchain - - `avr-gcc `_, - `GDB `_, - `AVaRICE `_, - `SimulAVR `_ - * - ``tool-avrdude`` - - uploader - - `AVRDUDE `_ - * - ``tool-micronucleus`` - - uploader - - `Micronucleus `_ - * - ``framework-arduinoavr`` - - - - See below in :ref:`atmelavr_frameworks` + * - ``toolchain-atmelavr`` + - `avr-gcc `_, `GDB `_, `AVaRICE `_, `SimulAVR `_ + + * - ``tool-avrdude`` + - `AVRDUDE `_ + + * - ``framework-arduinoavr`` + - `Arduino Wiring-based Framework (AVR Core, 1.6) `_ + + * - ``tool-micronucleus`` + - `Micronucleus `_ .. warning:: **Linux Users:** Don't forget to install "udev" rules file `99-platformio-udev.rules `_ (an instruction is located in the file). -.. _atmelavr_frameworks: - -Frameworks ----------- - -.. list-table:: - :header-rows: 1 - - * - Type ``framework`` - - Name - - Reference - * - ``arduino`` - - Arduino Wiring-based Framework (AVR Core, 1.6) - - `Documentation `_ - Boards ------ @@ -66,224 +48,6 @@ Boards * For more detailed ``board`` information please scroll tables below by horizontal. -Arduino -~~~~~~~ - -.. list-table:: - :header-rows: 1 - - * - Type ``board`` - - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` - - Flash - - RAM - * - ``atmegangatmega168`` - - `Arduino NG or older (ATmega168) - `_ - - ATmega168 ``atmega168`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``atmegangatmega8`` - - `Arduino Arduino NG or older (ATmega8) - `_ - - ATmega8 ``atmega8`` - - 16 MHz ``16000000L`` - - 8 Kb - - 1 Kb - * - ``btatmega168`` - - `Arduino BT (ATmega168) - `_ - - ATmega168 ``atmega168`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``btatmega328`` - - `Arduino BT (ATmega328) - `_ - - ATmega328 ``atmega328`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``diecimilaatmega168`` - - `Arduino Diecimila or Duemilanove (ATmega168) - `_ - - ATmega168 ``atmega168`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``diecimilaatmega328`` - - `Arduino Diecimila or Duemilanove (ATmega328) - `_ - - ATmega328 ``atmega328`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``esplora`` - - `Arduino Esplora `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2.5 Kb - * - ``ethernet`` - - `Arduino Ethernet - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``fio`` - - `Arduino Fio - `_ - - ATmega328P ``atmega328p`` - - 8 MHz ``8000000L`` - - 32 Kb - - 2 Kb - * - ``leonardo`` - - `Arduino Leonardo `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2.5 Kb - * - ``LilyPadUSB`` - - `Arduino LilyPad USB - `_ - - ATmega32u4 ``atmega32u4`` - - 8 MHz ``8000000L`` - - 32 Kb - - 2.5 Kb - * - ``lilypadatmega168`` - - `Arduino LilyPad (ATmega168) - `_ - - ATmega168 ``atmega168`` - - 8 MHz ``8000000L`` - - 16 Kb - - 1 Kb - * - ``lilypadatmega328`` - - `Arduino LilyPad (ATmega328) - `_ - - ATmega328P ``atmega328p`` - - 8 MHz ``8000000L`` - - 32 Kb - - 2 Kb - * - ``megaADK`` - - `Arduino Mega ADK - `_ - - ATmega2560 ``atmega2560`` - - 16 MHz ``16000000L`` - - 256 Kb - - 8 Kb - * - ``megaatmega1280`` - - `Arduino Mega (ATmega1280) - `_ - - ATmega1280 ``atmega1280`` - - 16 MHz ``16000000L`` - - 128 Kb - - 8 Kb - * - ``megaatmega2560`` - - `Arduino Mega (ATmega2560) - `_ - - ATmega2560 ``atmega2560`` - - 16 MHz ``16000000L`` - - 256 Kb - - 8 Kb - * - ``micro`` - - `Arduino Micro - `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2.5 Kb - * - ``miniatmega168`` - - `Arduino Mini (ATmega168) - `_ - - ATmega168 ``atmega168`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``miniatmega328`` - - `Arduino Mini (ATmega328P) - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``nanoatmega168`` - - `Arduino Nano (ATmega168) - `_ - - ATmega168 ``atmega168`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``nanoatmega328`` - - `Arduino Nano (ATmega328P) - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``pro8MHzatmega168`` - - `Arduino Pro or Pro Mini (ATmega168, 3.3V) - `_ - - ATmega168 ``atmega168`` - - 8 MHz ``8000000L`` - - 16 Kb - - 1 Kb - * - ``pro16MHzatmega168`` - - `Arduino Pro or Pro Mini (ATmega168, 5V) - `_ - - ATmega168 ``atmega168`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``pro8MHzatmega328`` - - `Arduino Pro or Pro Mini (ATmega328P, 3.3V) - `_ - - ATmega328P ``atmega328p`` - - 8 MHz ``8000000L`` - - 32 Kb - - 2 Kb - * - ``pro16MHzatmega328`` - - `Arduino Pro or Pro Mini (ATmega328P, 5V) - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``robotControl`` - - `Arduino Robot Control - `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2.5 Kb - * - ``robotMotor`` - - `Arduino Robot Motor - `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2.5 Kb - * - ``uno`` - - `Arduino Uno - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``yun`` - - `Arduino Yun - `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2.5 Kb - -More detailed information you can find here -`Arduino boards `_. - - Adafruit ~~~~~~~~ @@ -292,65 +56,277 @@ Adafruit * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM + * - ``flora8`` - - `Adafruit Flora - `_ - - ATmega32u4 ``atmega32u4`` - - 8 MHz ``8000000L`` + - `Adafruit Flora `_ + - ATMEGA32U4 + - 8 MHz - 32 Kb - 2.5 Kb - * - ``trinket3`` - - `Adafruit Trinket 8MHz 3.3V LOGIC - `_ - - ATtiny85 ``attiny85`` - - 8 MHz ``8000000L`` - - 8 Kb - - 0.5 Kb - * - ``trinket5`` - - `Adafruit Trinket 16MHz 5V LOGIC - `_ - - ATtiny85 ``ATtiny85`` - - 16 MHz ``16000000L`` - - 8 Kb - - 0.5 Kb + * - ``protrinket3`` - - `Adafruit Pro Trinket 3V/12MHz (USB) - `_ - - ATmega328P ``atmega328p`` - - 12 MHz ``12000000L`` + - `Pro Trinket 3V/12MHz (USB) `_ + - ATMEGA328P + - 12 MHz - 32 Kb - 2 Kb + * - ``protrinket3ftdi`` - - `Adafruit Pro Trinket 3V/12MHz (FTDI) - `_ - - ATmega328P ``atmega328p`` - - 12 MHz ``12000000L`` + - `Pro Trinket 3V/12MHz (FTDI) `_ + - ATMEGA328P + - 16 MHz - 32 Kb - 2 Kb + * - ``protrinket5`` - - `Adafruit Pro Trinket 5V/16MHz (USB) - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` + - `Pro Trinket 5V/16MHz (USB) `_ + - ATMEGA328P + - 16 MHz - 32 Kb - 2 Kb + * - ``protrinket5ftdi`` - - `Adafruit Pro Trinket 5V/16MHz (FTDI) - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` + - `Pro Trinket 5V/16MHz (USB) `_ + - ATMEGA328P + - 16 MHz - 32 Kb - 2 Kb -More detailed information you can find here -`Adafruits boards `_. + * - ``trinket3`` + - `Adafruit Trinket 3V/8MHz `_ + - ATTINY85 + - 8 MHz + - 8 Kb + - 0.5 Kb + * - ``trinket5`` + - `Adafruit Trinket 5V/16MHz `_ + - ATTINY85 + - 16 MHz + - 8 Kb + - 0.5 Kb -Digispark +Arduino +~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``LilyPadUSB`` + - `LilyPad Arduino USB `_ + - ATMEGA32U4 + - 8 MHz + - 32 Kb + - 2.5 Kb + + * - ``atmegangatmega168`` + - `Arduino NG or older ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``atmegangatmega8`` + - `Arduino NG or older ATmega8 `_ + - ATMEGA8 + - 16 MHz + - 8 Kb + - 1 Kb + + * - ``btatmega168`` + - `Arduino BT ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``btatmega328`` + - `Arduino BT ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``diecimilaatmega168`` + - `Arduino Duemilanove or Diecimila ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``diecimilaatmega328`` + - `Arduino Duemilanove or Diecimila ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``esplora`` + - `Arduino Esplora `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``ethernet`` + - `Arduino Ethernet `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``fio`` + - `Arduino Fio `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``leonardo`` + - `Arduino Leonardo `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``lilypadatmega168`` + - `LilyPad Arduino ATmega168 `_ + - ATMEGA168 + - 8 MHz + - 16 Kb + - 1 Kb + + * - ``lilypadatmega328`` + - `LilyPad Arduino ATmega328 `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``megaADK`` + - `Arduino Mega ADK `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + + * - ``megaatmega1280`` + - `Arduino Mega or Mega 2560 ATmega1280 `_ + - ATMEGA1280 + - 16 MHz + - 128 Kb + - 8 Kb + + * - ``megaatmega2560`` + - `Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) `_ + - ATMEGA2560 + - 16 MHz + - 256 Kb + - 8 Kb + + * - ``micro`` + - `Arduino Micro `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``miniatmega168`` + - `Arduino Mini ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``miniatmega328`` + - `Arduino Mini ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``nanoatmega168`` + - `Arduino Nano ATmega168 `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``nanoatmega328`` + - `Arduino Nano ATmega328 `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``pro16MHzatmega168`` + - `Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz) `_ + - ATMEGA168 + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``pro16MHzatmega328`` + - `Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``pro8MHzatmega168`` + - `Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz) `_ + - ATMEGA168 + - 8 MHz + - 16 Kb + - 1 Kb + + * - ``pro8MHzatmega328`` + - `Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz) `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + + * - ``robotControl`` + - `Arduino Robot Control `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``robotMotor`` + - `Arduino Robot Motor `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + + * - ``uno`` + - `Arduino Uno `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``yun`` + - `Arduino Yun `_ + - ATMEGA32U4 + - 16 MHz + - 32 Kb + - 2.5 Kb + +BitWizard ~~~~~~~~~ .. list-table:: @@ -358,31 +334,58 @@ Digispark * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM - * - ``digispark-tiny`` - - `Digispark USB Development Board `_ - - ATtiny85 ``attiny85`` - - 16 MHz ``16000000L`` - - 8 Kb - - 0.5 Kb + + * - ``raspduino`` + - `Raspduino `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + +Digistump +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + * - ``digispark-pro`` - - `Digispark Pro (Default 16 Mhz) `_ - - ATtiny167 ``attiny167`` - - 16 MHz ``16000000L`` + - `Digispark Pro (Default 16 MHz) `_ + - ATTINY167 + - 16 MHz - 16 Kb - 0.5 Kb - * - ``digispark-pro32`` - - `Digispark Pro (16 Mhz) (32 byte buffer) `_ - - ATtiny167 ``attiny167`` - - 16 Mhz ``16000000L`` - - 16 kb - - 0.5 Kb -More detailed information you can find here -`Digistump Development Boards `_. + * - ``digispark-pro32`` + - `Digispark Pro (16 MHz) (32 byte buffer) `_ + - ATTINY167 + - 16 MHz + - 16 Kb + - 0.5 Kb + + * - ``digispark-pro64`` + - `Digispark Pro (16 MHz) (64 byte buffer) `_ + - ATTINY167 + - 16 MHz + - 16 Kb + - 0.5 Kb + + * - ``digispark-tiny`` + - `Digispark (Default - 16 MHz) `_ + - ATTINY85 + - 16 MHz + - 8 Kb + - 0.5 Kb Engduino ~~~~~~~~ @@ -392,33 +395,32 @@ Engduino * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM + * - ``engduinov1`` - `Engduino 1 `_ - - ATmega32u4 ``atmega32u4`` - - 8 MHz ``8000000L`` + - ATMEGA32U4 + - 8 MHz - 32 Kb - 2.5 Kb + * - ``engduinov2`` - `Engduino 2 `_ - - ATmega32u4 ``atmega32u4`` - - 8 MHz ``8000000L`` + - ATMEGA32U4 + - 8 MHz - 32 Kb - 2.5 Kb + * - ``engduinov3`` - `Engduino 3 `_ - - ATmega32u4 ``atmega32u4`` - - 8 MHz ``8000000L`` + - ATMEGA32U4 + - 8 MHz - 32 Kb - 2.5 Kb -More detailed information you can find here -`Engduino Site `_. - - Microduino ~~~~~~~~~~ @@ -427,98 +429,70 @@ Microduino * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM - * - ``168pa8m`` - - `Microduino Core (ATmega168P, 3.3V) - `_ - - ATmega168P ``atmega168p`` - - 8 MHz ``8000000L`` - - 16 Kb - - 1 Kb - * - ``168pa16m`` - - `Microduino Core (ATmega168P, 5V) - `_ - - ATmega168P ``atmega168p`` - - 16 MHz ``16000000L`` - - 16 Kb - - 1 Kb - * - ``328p8m`` - - `Microduino Core (ATmega328P, 3.3V) - `_ - - ATmega328P ``atmega328p`` - - 8 MHz ``8000000L`` - - 32 Kb - - 2 Kb - * - ``328p16m`` - - `Microduino Core (ATmega328P, 5V) - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - * - ``644pa8m`` - - `Microduino Core+ (ATmega644PA, 3.3V) - `_ - - ATmega644PA ``atmega644p`` - - 8 MHz ``8000000L`` - - 64 Kb - - 4 Kb - * - ``644pa16m`` - - `Microduino Core+ (ATmega644PA, 5V) - `_ - - ATmega644PA ``atmega644p`` - - 16 MHz ``16000000L`` - - 64 Kb - - 4 Kb - * - ``1284p8m`` - - `Microduino Core+ (Atmega1284P, 3.3V) - `_ - - Atmega1284P ``atmega1284p`` - - 8 MHz ``8000000L`` - - 128 Kb - - 16 Kb + * - ``1284p16m`` - - `Microduino Core+ (Atmega1284P, 5V) - `_ - - Atmega1284P ``atmega1284p`` - - 16 MHz ``16000000L`` + - `Microduino Core+ (ATmega1284P@16M,5V) `_ + - ATMEGA1284P + - 16 MHz - 128 Kb - 16 Kb + + * - ``1284p8m`` + - `Microduino Core+ (ATmega1284P@8M,3.3V) `_ + - ATMEGA1284P + - 8 MHz + - 128 Kb + - 16 Kb + + * - ``168pa16m`` + - `Microduino Core (Atmega168PA@16M,5V) `_ + - ATMEGA168P + - 16 MHz + - 16 Kb + - 1 Kb + + * - ``168pa8m`` + - `Microduino Core (Atmega168PA@8M,3.3V) `_ + - ATMEGA168P + - 8 MHz + - 16 Kb + - 1 Kb + + * - ``328p16m`` + - `Microduino Core (Atmega328P@16M,5V) `_ + - ATMEGA328P + - 16 MHz + - 32 Kb + - 2 Kb + + * - ``328p8m`` + - `Microduino Core (Atmega328P@8M,3.3V) `_ + - ATMEGA328P + - 8 MHz + - 32 Kb + - 2 Kb + * - ``32u416m`` - - `Microduino-Core USB - `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` + - `Microduino Core USB (ATmega32U4@16M,5V) `_ + - ATMEGA32U4 + - 16 MHz - 32 Kb - 2.5 Kb + * - ``644pa16m`` + - `Microduino Core+ (Atmega644PA@16M,5V) `_ + - ATMEGA644P + - 16 MHz + - 64 Kb + - 4 Kb -More detailed information you can find here -`Microduino boards `_. - - -Raspduino -~~~~~~~~~ - -.. list-table:: - :header-rows: 1 - - * - Type ``board`` - - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` - - Flash - - RAM - * - ``raspduino`` - - `Raspduino - `_ - - ATmega328P ``atmega328p`` - - 16 MHz ``16000000L`` - - 32 Kb - - 2 Kb - -More detailed information you can find here -`Wiki `_. + * - ``644pa8m`` + - `Microduino Core+ (Atmega644PA@8M,3.3V) `_ + - ATMEGA644P + - 8 MHz + - 64 Kb + - 4 Kb diff --git a/docs/platforms/atmelsam.rst b/docs/platforms/atmelsam.rst index 14363615..128f9812 100644 --- a/docs/platforms/atmelsam.rst +++ b/docs/platforms/atmelsam.rst @@ -3,10 +3,11 @@ Platform ``atmelsam`` ===================== -`Atmel® | SMART `_ -offers Flash- based ARM® products based on the ARM Cortex-®M0+, Cortex-M3 and -Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich -peripheral and feature mix. +Atmel | SMART offers Flash- based ARM products based on the ARM +Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB +to 2MB of Flash including a rich peripheral and feature mix. + +http://www.atmel.com/products/microcontrollers/arm/default.aspx .. contents:: @@ -17,40 +18,25 @@ Packages :header-rows: 1 * - Name - - Alias - Contents - * - ``toolchain-gccarmnoneeabi`` - - toolchain - - `gcc-arm-embedded `_, - `GDB `_ - * - ``tool-bossac`` - - uploader - - `BOSSA CLI `_ - * - ``framework-arduino`` - - - - See below in :ref:`atmelsam_frameworks` + * - ``framework-arduinosam`` + - `Arduino Wiring-based Framework (SAM Core, 1.6) `_ + + * - ``ldscripts`` + - `Linker Scripts `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + + * - ``tool-bossac`` + - `BOSSA CLI `_ .. warning:: **Linux Users:** Don't forget to install "udev" rules file `99-platformio-udev.rules `_ (an instruction is located in the file). -.. _atmelsam_frameworks: - -Frameworks ----------- - -.. list-table:: - :header-rows: 1 - - * - Type ``framework`` - - Name - - Reference - * - ``arduino`` - - Arduino Wiring-based Framework (SAM Core, 1.6) - - `Documentation `_ - Boards ------ @@ -60,45 +46,76 @@ Boards * For more detailed ``board`` information please scroll tables below by horizontal. +Arduino +~~~~~~~ + .. list-table:: :header-rows: 1 * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM + * - ``due`` - `Arduino Due (Programming Port) `_ - - at91sam3x8e ``cortex-m3`` - - 84 MHz ``84000000L`` - - 512 Kb - - 32 Kb - * - ``dueUSB`` - - `Arduino Due (USB Native Port) `_ - - at91sam3x8e ``cortex-m3`` - - 84 MHz ``84000000L`` - - 512 Kb - - 32 Kb - * - ``digix`` - - `Digistump DigiX `_ - - at91sam3x8e ``cortex-m3`` - - 84 MHz ``84000000L`` - - 512 kb - - 32 Kb - * - ``sainSmartDue`` - - `SainSmart Due (Programming Port) `_ - - at91sam3x8e ``cortex-m3`` - - 84 MHz ``84000000L`` - - 512 Kb - - 32 Kb - * - ``sainSmartDueUSB`` - - `SainSmart Due (USB Native Port) `_ - - at91sam3x8e ``cortex-m3`` - - 84 MHz ``84000000L`` + - AT91SAM3X8E + - 84 MHz - 512 Kb - 32 Kb -More detailed information you can find here -`Atmel SMART ARM-based MCUs `_. + * - ``dueUSB`` + - `Arduino Due (USB Native Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb + +Digistump +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``digix`` + - `Digistump DigiX `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 28 Kb + +SainSmart +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``sainSmartDue`` + - `SainSmart Due (Programming Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb + + * - ``sainSmartDueUSB`` + - `SainSmart Due (USB Native Port) `_ + - AT91SAM3X8E + - 84 MHz + - 512 Kb + - 32 Kb diff --git a/docs/platforms/creating_platform.rst b/docs/platforms/creating_platform.rst index 5347be01..9865beec 100644 --- a/docs/platforms/creating_platform.rst +++ b/docs/platforms/creating_platform.rst @@ -217,6 +217,8 @@ base template of ``test-builder.py``. CPPDEFINES=["DEFINE_1", "DEFINE=2", "DEFINE_N"], + LIBS=["additional", "libs", "here"], + UPLOADER=join("$PIOPACKAGES_DIR", "tool-bar", "uploader"), UPLOADCMD="$UPLOADER $SOURCES" ) @@ -238,12 +240,10 @@ base template of ``test-builder.py``. # The source code of "platformio-build-tool" is here # https://github.com/ivankravets/platformio/blob/develop/platformio/builder/tools/platformio.py - CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # - target_elf = env.BuildFirmware(CORELIBS + ["additional", "libs", "here"]) + target_elf = env.BuildFirmware() # # Target: Build the .bin file diff --git a/docs/platforms/freescalekinetis.rst b/docs/platforms/freescalekinetis.rst new file mode 100644 index 00000000..b190bc95 --- /dev/null +++ b/docs/platforms/freescalekinetis.rst @@ -0,0 +1,97 @@ +.. _platform_freescalekinetis: + +Platform ``freescalekinetis`` +============================= + +Freescale Kinetis Microcontrollers is family of multiple hardware- and +software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU +series. Kinetis MCUs offer exceptional low-power performance, +scalability and feature integration. + +http://www.freescale.com/webapp/sps/site/homepage.jsp?code=KINETIS + +.. contents:: + +Packages +-------- + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents + + * - ``framework-mbed`` + - `mbed Framework `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + +.. warning:: + **Linux Users:** Don't forget to install "udev" rules file + `99-platformio-udev.rules `_ (an instruction is located in the file). + + + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by + horizontal. + +Freescale +~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``frdm_k20d50m`` + - `Freescale Kinetis FRDM-K20D50M `_ + - MK20DX128VLH5 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``frdm_k22f`` + - `Freescale Kinetis FRDM-K22F `_ + - MK22FN512VLH12 + - 120 MHz + - 512 Kb + - 128 Kb + + * - ``frdm_k64f`` + - `Freescale Kinetis FRDM-K64F `_ + - MK64FN1M0VLL12 + - 120 MHz + - 1024 Kb + - 256 Kb + + * - ``frdm_kl05z`` + - `Freescale Kinetis FRDM-KL05Z `_ + - MKL05Z32VFM4 + - 48 MHz + - 32 Kb + - 4 Kb + + * - ``frdm_kl25z`` + - `Freescale Kinetis FRDM-KL25Z `_ + - MKL25Z128VLK4 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``frdm_kl46z`` + - `Freescale Kinetis FRDM-KL46Z `_ + - MKL46Z256VLL4 + - 48 MHz + - 256 Kb + - 32 Kb diff --git a/docs/platforms/index.rst b/docs/platforms/index.rst index 5aa06bcc..220c3a67 100644 --- a/docs/platforms/index.rst +++ b/docs/platforms/index.rst @@ -16,7 +16,10 @@ MCU, upload protocol or etc. Please use ``board`` option. atmelavr atmelsam - stm32 + freescalekinetis + nordicnrf51 + nxplpc + ststm32 teensy timsp430 titiva diff --git a/docs/platforms/nordicnrf51.rst b/docs/platforms/nordicnrf51.rst new file mode 100644 index 00000000..43970701 --- /dev/null +++ b/docs/platforms/nordicnrf51.rst @@ -0,0 +1,145 @@ +.. _platform_nordicnrf51: + +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. + +https://www.nordicsemi.com/eng/Products/nRF51-Series-SoC + +.. contents:: + +Packages +-------- + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents + + * - ``framework-mbed`` + - `mbed Framework `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + +.. warning:: + **Linux Users:** Don't forget to install "udev" rules file + `99-platformio-udev.rules `_ (an instruction is located in the file). + + + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by + horizontal. + +JKSoft +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``wallBotBLE`` + - `JKSoft Wallbot BLE `_ + - NRF51822 + - 16 MHz + - 128 Kb + - 16 Kb + +Nordic +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``nrf51_dk`` + - `Nordic nRF51-DK `_ + - NRF51822 + - 32 MHz + - 256 Kb + - 32 Kb + + * - ``nrf51_dongle`` + - `Nordic nRF51-Dongle `_ + - NRF51822 + - 32 MHz + - 256 Kb + - 32 Kb + + * - ``nrf51_mkit`` + - `Nordic nRF51822-mKIT `_ + - NRF51822 + - 16 MHz + - 128 Kb + - 16 Kb + +RedBearLab +~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``redBearLab`` + - `RedBearLab nRF51822 `_ + - NRF51822 + - 16 MHz + - 256 Kb + - 16 Kb + + * - ``redBearLabBLENano`` + - `RedBearLab BLE Nano `_ + - NRF51822 + - 16 MHz + - 256 Kb + - 16 Kb + +Switch Science +~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``hrm1017`` + - `Switch Science mbed HRM1017 `_ + - NRF51822 + - 16 MHz + - 256 Kb + - 16 Kb diff --git a/docs/platforms/nxplpc.rst b/docs/platforms/nxplpc.rst new file mode 100644 index 00000000..0ea25a4f --- /dev/null +++ b/docs/platforms/nxplpc.rst @@ -0,0 +1,252 @@ +.. _platform_nxplpc: + +Platform ``nxplpc`` +=================== + +The NXP LPC is a family of 32-bit microcontroller integrated circuits +by NXP Semiconductors. The LPC chips are grouped into related series +that are based around the same 32-bit ARM processor core, such as the +Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each +microcontroller consists of the processor core, static RAM memory, +flash memory, debugging interface, and various peripherals. + +http://www.nxp.com/products/microcontrollers/ + +.. contents:: + +Packages +-------- + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents + + * - ``framework-mbed`` + - `mbed Framework `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + +.. warning:: + **Linux Users:** Don't forget to install "udev" rules file + `99-platformio-udev.rules `_ (an instruction is located in the file). + + + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by + horizontal. + +CQ Publishing +~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc11u35_501`` + - `TG-LPC11U35-501 `_ + - LPC11U35 + - 48 MHz + - 64 Kb + - 10 Kb + +Embedded Artists +~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc11u35`` + - `EA LPC11U35 QuickStart Board `_ + - LPC11U35 + - 48 MHz + - 64 Kb + - 10 Kb + + * - ``lpc4088`` + - `EA LPC4088 QuickStart Board `_ + - LPC4088 + - 120 MHz + - 512 Kb + - 96 Kb + + * - ``lpc4088_dm`` + - `EA LPC4088 Display Module `_ + - LPC4088 + - 120 MHz + - 512 Kb + - 96 Kb + +NGX Technologies +~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``blueboard_lpc11u24`` + - `BlueBoard-LPC11U24 `_ + - LPC11U24 + - 48 MHz + - 32 Kb + - 8 Kb + +NXP +~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc11u24`` + - `mbed LPC11U24 `_ + - LPC11U24 + - 48 MHz + - 32 Kb + - 8 Kb + + * - ``lpc1549`` + - `LPCXpresso1549 `_ + - LPC1549 + - 72 MHz + - 256 Kb + - 36 Kb + + * - ``lpc1768`` + - `mbed LPC1768 `_ + - LPC1768 + - 96 MHz + - 512 Kb + - 32 Kb + +Outrageous Circuits +~~~~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``mbuino`` + - `Outrageous Circuits mBuino `_ + - LPC11U24 + - 48 MHz + - 32 Kb + - 8 Kb + +SeeedStudio +~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``seeeduinoArchPro`` + - `Seeeduino-Arch-Pro `_ + - LPC1768 + - 96 MHz + - 512 Kb + - 32 Kb + +Solder Splash Labs +~~~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``dipcortexm0`` + - `DipCortex M0 `_ + - LPC11U24 + - 50 MHz + - 32 Kb + - 8 Kb + +Switch Science +~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``lpc1114fn28`` + - `mbed LPC1114FN28 `_ + - LPC1114FN28 + - 48 MHz + - 32 Kb + - 4 Kb + +u-blox +~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``ubloxc027`` + - `u-blox C027 `_ + - LPC1768 + - 96 MHz + - 512 Kb + - 32 Kb diff --git a/docs/platforms/stm32.rst b/docs/platforms/stm32.rst deleted file mode 100644 index 4748f6a9..00000000 --- a/docs/platforms/stm32.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _platform_stm32: - -Platform ``stm32`` -================== - -`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. - -The unparalleled and large range of STM32 devices, based on an industry-standard core and accompanied by a vast choice of tools and software, makes this family of products the ideal choice, both for small projects and for entire platform decisions. - -.. contents:: - -Packages --------- - -.. list-table:: - :header-rows: 1 - - * - Name - - Alias - - Contents - * - ``toolchain-gccarmnoneeabi`` - - toolchain - - `gcc-arm-embedded `_, - `GDB `_ - * - ``tool-stlink`` - - uploader - - `STLink `_ - * - ``framework-cmsis`` - - - - See below in :ref:`stm32_frameworks` - * - ``framework-spl`` - - - - See below in :ref:`stm32_frameworks` - * - ``framework-opencm3`` - - - - See below in :ref:`stm32_frameworks` - -.. warning:: - **Linux Users:** Don't forget to install "udev" rules file - `99-platformio-udev.rules `_ (an instruction is located in the file). - - -.. _stm32_frameworks: - -Frameworks ----------- - -.. list-table:: - :header-rows: 1 - - * - Type ``framework`` - - Name - - Reference - * - ``cmsis`` - - Vendor-independent hardware abstraction layer for the Cortex-M processor series - - `Documentation `__ - * - ``spl`` - - Standard Peripheral Library for STM32 MCUs - - `Documentation `__ - * - ``opencm3`` - - libOpenCM3 Framework - - `Documentation `__ - - -Boards ------- - -.. note:: - * You can list pre-configured boards by :ref:`cmd_boards` command - * For more detailed ``board`` information please scroll tables below by - horizontal. - -.. list-table:: - :header-rows: 1 - - * - Type ``board`` - - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` - - Flash - - RAM - * - ``stm32ldiscovery`` - - `Discovery kit for STM32L151/152 line `_ - - STM32L152rbt6 ``cortex-m3`` - - 32 MHz ``32000000L`` - - 128 Kb - - 16 Kb - * - ``stm32f3discovery`` - - `Discovery kit for STM32F303xx microcontrollers - `_ - - STM32F303vct6 ``cortex-m4`` - - 72 MHz ``72000000L`` - - 256 Kb - - 48 Kb - * - ``stm32f4discovery`` - - `Discovery kit for STM32F407/417 lines - `_ - - STM32F407vgt6 ``cortex-m4`` - - 168 Mhz ``168000000L`` - - 1 Mb - - 192 Kb - -More detailed information you can find here -`STM32 Discovery kits `_. diff --git a/docs/platforms/ststm32.rst b/docs/platforms/ststm32.rst new file mode 100644 index 00000000..c1a53f4d --- /dev/null +++ b/docs/platforms/ststm32.rst @@ -0,0 +1,205 @@ +.. _platform_ststm32: + +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. + +http://www.st.com/web/en/catalog/mmc/FM141/SC1169?sc=stm32 + +.. contents:: + +Packages +-------- + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + + * - ``tool-stlink`` + - `ST-Link `_ + + * - ``framework-spl`` + - `Standard Peripheral Library for STM32 MCUs `_ + + * - ``framework-cmsis`` + - `Vendor-independent hardware abstraction layer for the Cortex-M processor series `_ + + * - ``framework-mbed`` + - `mbed Framework `_ + + * - ``framework-opencm3`` + - `libOpenCM3 Framework `_ + + * - ``ldscripts`` + - `Linker Scripts `_ + +.. warning:: + **Linux Users:** Don't forget to install "udev" rules file + `99-platformio-udev.rules `_ (an instruction is located in the file). + + + +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by + horizontal. + +ST +~~ + +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM + + * - ``disco_f051r8`` + - `STM32F0DISCOVERY `_ + - STM32F051R8T6 + - 48 MHz + - 64 Kb + - 8 Kb + + * - ``disco_f100rb`` + - `STM32VLDISCOVERY `_ + - STM32F100RBT6 + - 24 MHz + - 128 Kb + - 8 Kb + + * - ``disco_f303vc`` + - `STM32F3DISCOVERY `_ + - STM32F303VCT6 + - 72 MHz + - 256 Kb + - 48 Kb + + * - ``disco_f334c8`` + - `32F3348DISCOVERY `_ + - STM32F334C8T6 + - 72 MHz + - 64 Kb + - 16 Kb + + * - ``disco_f401vc`` + - `32F401CDISCOVERY `_ + - STM32F401VCT6 + - 84 MHz + - 256 Kb + - 64 Kb + + * - ``disco_f407vg`` + - `STM32F4DISCOVERY `_ + - STM32F407VGT6 + - 168 MHz + - 1024 Kb + - 128 Kb + + * - ``disco_f429zi`` + - `32F429IDISCOVERY `_ + - STM32F429ZIT6 + - 180 MHz + - 2048 Kb + - 256 Kb + + * - ``disco_l152rb`` + - `STM32LDISCOVERY `_ + - STM32L152RBT6 + - 32 MHz + - 128 Kb + - 16 Kb + + * - ``nucleo_f030r8`` + - `ST Nucleo F030R8 `_ + - STM32F030R8T6 + - 48 MHz + - 64 Kb + - 8 Kb + + * - ``nucleo_f070rb`` + - `ST Nucleo F070RB `_ + - STM32F070RBT6 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``nucleo_f072rb`` + - `ST Nucleo F072RB `_ + - STM32F072RBT6 + - 48 MHz + - 128 Kb + - 16 Kb + + * - ``nucleo_f091rc`` + - `ST Nucleo F091RC `_ + - STM32F091RCT6 + - 48 MHz + - 256 Kb + - 32 Kb + + * - ``nucleo_f103rb`` + - `ST Nucleo F103RB `_ + - STM32F103RBT6 + - 72 MHz + - 128 Kb + - 20 Kb + + * - ``nucleo_f302r8`` + - `ST Nucleo F302R8 `_ + - STM32F302R8T6 + - 72 MHz + - 64 Kb + - 16 Kb + + * - ``nucleo_f334r8`` + - `ST Nucleo F334R8 `_ + - STM32F334R8T6 + - 72 MHz + - 64 Kb + - 16 Kb + + * - ``nucleo_f401re`` + - `ST Nucleo F401RE `_ + - STM32F401RET6 + - 84 MHz + - 512 Kb + - 96 Kb + + * - ``nucleo_f411re`` + - `ST Nucleo F411RE `_ + - STM32F411RET6 + - 100 MHz + - 512 Kb + - 128 Kb + + * - ``nucleo_l053r8`` + - `ST Nucleo L053R8 `_ + - STM32L053R8T6 + - 48 MHz + - 64 Kb + - 8 Kb + + * - ``nucleo_l152re`` + - `ST Nucleo L152RE `_ + - STM32L152RET6 + - 32 MHz + - 512 Kb + - 80 Kb diff --git a/docs/platforms/teensy.rst b/docs/platforms/teensy.rst index 37f172c6..c653694d 100644 --- a/docs/platforms/teensy.rst +++ b/docs/platforms/teensy.rst @@ -3,7 +3,13 @@ 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 "Mini-B" USB cable and a PC or Macintosh with a USB port. +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 "Mini-B" USB cable and a PC or Macintosh with +a USB port. + +https://www.pjrc.com/teensy .. contents:: @@ -14,46 +20,28 @@ Packages :header-rows: 1 * - Name - - Alias - Contents - * - ``toolchain-gccarmnoneeabi`` - - toolchain - - `gcc-arm-embedded `_, - `GDB `_ - * - ``toolchain-atmelavr`` - - toolchain - - `avr-gcc `_, - `GDB `_, - `AVaRICE `_, - `SimulAVR `_ - * - ``tool-teensy`` - - uploader - - `Teensy Loader `_ - * - ``framework-arduinoteensy`` - - - - See below in :ref:`teensy_frameworks` + * - ``toolchain-atmelavr`` + - `avr-gcc `_, `GDB `_, `AVaRICE `_, `SimulAVR `_ + + * - ``ldscripts`` + - `Linker Scripts `_ + + * - ``framework-arduinoteensy`` + - `Arduino Wiring-based Framework `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + + * - ``tool-teensy`` + - `Teensy Loader `_ .. warning:: **Linux Users:** Don't forget to install "udev" rules file `99-platformio-udev.rules `_ (an instruction is located in the file). -.. _teensy_frameworks: - -Frameworks ----------- - -.. list-table:: - :header-rows: 1 - - * - Type ``framework`` - - Name - - Reference - * - ``arduino`` - - Arduino Wiring-based Framework - - `Documentation `_ - Boards ------ @@ -63,39 +51,43 @@ Boards * For more detailed ``board`` information please scroll tables below by horizontal. +Teensy +~~~~~~ + .. list-table:: :header-rows: 1 * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM + * - ``teensy20`` - `Teensy 2.0 `_ - - ATmega32u4 ``atmega32u4`` - - 16 MHz ``16000000L`` + - ATMEGA32U4 + - 16 MHz - 32 Kb - 2.5 Kb + * - ``teensy20pp`` - `Teensy++ 2.0 `_ - - AT90USB1289 ``at90usb1286`` - - 16 MHz ``16000000L`` + - AT90USB1286 + - 16 MHz - 128 Kb - 8 Kb + * - ``teensy30`` - `Teensy 3.0 `_ - - MK20DX128 ``cortex-m4`` - - 48 Mhz ``48000000L`` - - 128 kb + - MK20DX128 + - 48 MHz + - 128 Kb - 16 Kb + * - ``teensy31`` - `Teensy 3.1 `_ - - MK20DX256 ``cortex-m4`` - - 72 Mhz ``72000000L`` - - 256 kb + - MK20DX256 + - 72 MHz + - 256 Kb - 64 Kb - -More detailed information you can find here -`Teensy USB Development Boards `_. diff --git a/docs/platforms/timsp430.rst b/docs/platforms/timsp430.rst index 256f9f36..26c838f4 100644 --- a/docs/platforms/timsp430.rst +++ b/docs/platforms/timsp430.rst @@ -3,10 +3,12 @@ Platform ``timsp430`` ===================== -`MSP430 microcontrollers (MCUs) from Texas Instruments (TI) `_ -are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. -These MCUs offer the lowest power consumption and the perfect mix of integrated -peripherals for thousands of applications. +MSP430 microcontrollers (MCUs) from Texas Instruments (TI) +are 16-bit, RISC-based, mixed-signal processors designed for ultra-low +power. These MCUs offer the lowest power consumption and the perfect +mix of integrated peripherals for thousands of applications. + +http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/overview.page .. contents:: @@ -17,40 +19,22 @@ Packages :header-rows: 1 * - Name - - Alias - Contents - * - ``toolchain-timsp430`` - - toolchain - - `msp-gcc `_, - `GDB `_ - * - ``tool-mspdebug`` - - uploader - - `MSPDebug `_ - * - ``framework-energiamsp430`` - - - - See below in :ref:`timsp430_frameworks` + * - ``toolchain-timsp430`` + - `msp-gcc `_, `GDB `_ + + * - ``tool-mspdebug`` + - `MSPDebug `_ + + * - ``framework-energiamsp430`` + - `Energia Wiring-based Framework (MSP430 Core) `_ .. warning:: **Linux Users:** Don't forget to install "udev" rules file `99-platformio-udev.rules `_ (an instruction is located in the file). -.. _timsp430_frameworks: - -Frameworks ----------- - -.. list-table:: - :header-rows: 1 - - * - Type ``framework`` - - Name - - Reference - * - ``energia`` - - Energia Wiring-based Framework (MSP430 Core) - - `Documentation `_ - Boards ------ @@ -60,61 +44,64 @@ Boards * For more detailed ``board`` information please scroll tables below by horizontal. +TI +~~ + .. list-table:: :header-rows: 1 * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM - * - ``lpmsp430g2231`` - - `MSP430G2231 LaunchPad `_ - - MSP430G2231 ``msp430g2231`` - - 16 MHz ``16000000L`` - - 2 Kb - - 128 B - * - ``lpmsp430g2452`` - - `MSP430G2452 LaunchPad `_ - - MSP430G2452 ``msp430g2452`` - - 16 MHz ``16000000L`` - - 8 Kb - - 256 B - * - ``lpmsp430g2553`` - - `MSP430G2553 LaunchPad `_ - - MSP430G2553 ``msp430g2553`` - - 16 MHz ``16000000L`` - - 16 Kb - - 512 B + * - ``lpmsp430f5529`` - - `MSP430F5529 LaunchPad (16 Mhz) `_ - - MSP430F5529 ``msp430f5529`` - - 16 MHz ``16000000L`` + - `LaunchPad w/ msp430f5529 (16MHz) `_ + - MSP430F5529 + - 16 MHz - 128 Kb - - 8 KB + - 1 Kb + * - ``lpmsp430f5529_25`` - - `MSP430F5529 LaunchPad (25 Mhz) `_ - - MSP430F5529 ``msp430f5529`` - - 25 MHz ``25000000L`` + - `LaunchPad w/ msp430f5529 (25MHz) `_ + - MSP430F5529 + - 25 MHz - 128 Kb - - 8 KB + - 1 Kb + * - ``lpmsp430fr5739`` - - `MSP430FR5739 Experimenter Board `_ - - MSP430FR5739 ``msp430fr5739`` - - 16 MHz ``16000000L`` + - `FraunchPad w/ msp430fr5739 `_ + - MSP430FR5739 + - 16 MHz - 16 Kb - - 1 KB + - 1 Kb + * - ``lpmsp430fr5969`` - - `MSP430FR5969 LaunchPad `_ - - MSP430FR5969 ``msp430fr5969`` - - 16 MHz ``16000000L`` + - `LaunchPad w/ msp430fr5969 `_ + - MSP430FR5969 + - 8 MHz - 64 Kb - - 2 KB - - -More detailed information you can find here -`MSP430 LaunchPads `_. + - 1 Kb + * - ``lpmsp430g2231`` + - `LaunchPad w/ msp430g2231 (1 MHz) `_ + - MSP430G2231 + - 1 MHz + - 2 Kb + - 0.125 Kb + * - ``lpmsp430g2452`` + - `LaunchPad w/ msp430g2452 (16MHz) `_ + - MSP430G2452 + - 16 MHz + - 8 Kb + - 0.25 Kb + * - ``lpmsp430g2553`` + - `LaunchPad w/ msp430g2553 (16MHz) `_ + - MSP430G2553 + - 16 MHz + - 16 Kb + - 0.5 Kb diff --git a/docs/platforms/titiva.rst b/docs/platforms/titiva.rst index 208742d9..731bab2a 100644 --- a/docs/platforms/titiva.rst +++ b/docs/platforms/titiva.rst @@ -3,12 +3,13 @@ Platform ``titiva`` =================== -`Texas Instruments TM4C12x MCUs `_ -offer the industry’s most popular ARM® -Cortex®-M4 core with scalable memory and package options, unparalleled +Texas Instruments TM4C12x MCUs offer the industrys most popular +ARM Cortex-M4 core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions. +http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/c2000_performance/control_automation/tm4c12x/overview.page + .. contents:: Packages @@ -18,45 +19,28 @@ Packages :header-rows: 1 * - Name - - Alias - Contents + + * - ``ldscripts`` + - `Linker Scripts `_ + * - ``toolchain-gccarmnoneeabi`` - - toolchain - - `gcc-arm-embedded `_, - `GDB `_ + - `gcc-arm-embedded `_, `GDB `_ + * - ``tool-lm4flash`` - - uploader - `Flash Programmer `_ - * - ``framework-energiativa`` - - - - See below in :ref:`titiva_frameworks` + * - ``framework-opencm3`` - - - - See below in :ref:`titiva_frameworks` + - `libOpenCM3 Framework `_ + + * - ``framework-energiativa`` + - `Energia Wiring-based Framework (LM4F Core) `_ .. warning:: **Linux Users:** Don't forget to install "udev" rules file `99-platformio-udev.rules `_ (an instruction is located in the file). -.. _titiva_frameworks: - -Frameworks ----------- - -.. list-table:: - :header-rows: 1 - - * - Type ``framework`` - - Name - - Reference - * - ``energia`` - - Energia Wiring-based Framework (LM4F Core) - - `Documentation `__ - * - ``opencm3`` - - libOpenCM3 Framework - - `Documentation `__ - Boards ------ @@ -66,35 +50,36 @@ Boards * For more detailed ``board`` information please scroll tables below by horizontal. +TI +~~ + .. list-table:: :header-rows: 1 * - Type ``board`` - Name - - Microcontroller ``board_mcu`` - - Frequency ``board_f_cpu`` + - Microcontroller + - Frequency - Flash - RAM - * - ``lplm4f120h5qr`` - - `Stellaris LM4F120 LaunchPad `_ - - LM4F120H5QR ``cortex-m4`` - - 80 MHz ``80000000L`` - - 256 Kb - - 32 Kb - * - ``lptm4c1230c3pm`` - - `Tiva C Series TM4C123G LaunchPad - `_ - - TM4C123GH6PM ``cortex-m4`` - - 80 MHz ``80000000L`` - - 256 Kb - - 32 Kb - * - ``lptm4c1294ncpdt`` - - `Tiva C Series TM4C1294 Connected LaunchPad - `_ - - TM4C1294NCPDT ``cortex-m4`` - - 120 Mhz ``120000000L`` - - 1 Mb - - 256 Kb -More detailed information you can find here -`TIVA C Series LaunchPads `_. + * - ``lplm4f120h5qr`` + - `LaunchPad (Stellaris) w/ lm4f120 (80MHz) `_ + - LPLM4F120H5QR + - 80 MHz + - 256 Kb + - 32 Kb + + * - ``lptm4c1230c3pm`` + - `LaunchPad (Tiva C) w/ tm4c123 (80MHz) `_ + - LPTM4C1230C3PM + - 80 MHz + - 256 Kb + - 32 Kb + + * - ``lptm4c1294ncpdt`` + - `LaunchPad (Tiva C) w/ tm4c129 (120MHz) `_ + - LPTM4C1294NCPDT + - 120 MHz + - 1024 Kb + - 256 Kb diff --git a/examples/mbed/mbed-blink/README.rst b/examples/mbed/mbed-blink/README.rst new file mode 100644 index 00000000..b36ea0e3 --- /dev/null +++ b/examples/mbed/mbed-blink/README.rst @@ -0,0 +1,21 @@ +How to buid PlatformIO based project +==================================== + +1. `Install PlatformIO `_ +2. Download `source code with examples `_ +3. Extract ZIP archive +4. Run these commands: + +.. code-block:: bash + + # Change directory to example + > cd platformio-develop/examples/mbed/mbed-blink + + # Process example project + > platformio run + + # Upload firmware + > platformio run --target upload + + # Clean build files + > platformio run --target clean diff --git a/examples/mbed/mbed-blink/platformio.ini b/examples/mbed/mbed-blink/platformio.ini new file mode 100644 index 00000000..bbef0cbe --- /dev/null +++ b/examples/mbed/mbed-blink/platformio.ini @@ -0,0 +1,43 @@ +# +# 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 + + +# NXP LPC Platform +[env:lpc1768] +platform = nxplpc +framework = mbed +board = lpc1768 + +# Nordic nRF51 Platform +[env:nrf51_mkit] +platform = nordicnrf51 +framework = mbed +board = nrf51_mkit + +# Freescale FRDM Platform +[env:frdm_k64f] +platform = freescalekinetis +framework = mbed +board = frdm_k64f + +# ST STM32 Platform +[env:nucleo_f401re] +platform = ststm32 +framework = mbed +board = nucleo_f401re \ No newline at end of file diff --git a/examples/mbed/mbed-blink/src/main.cpp b/examples/mbed/mbed-blink/src/main.cpp new file mode 100644 index 00000000..8247a2e9 --- /dev/null +++ b/examples/mbed/mbed-blink/src/main.cpp @@ -0,0 +1,12 @@ +#include "mbed.h" + +DigitalOut myled(LED1); + +int main() { + while(1) { + myled = 1; + wait(1); + myled = 0; + wait(1); + } +} \ No newline at end of file diff --git a/examples/stm32/stm32-cmsis-blink/platformio.ini b/examples/stm32/stm32-cmsis-blink/platformio.ini index c90f099e..d19acf8d 100644 --- a/examples/stm32/stm32-cmsis-blink/platformio.ini +++ b/examples/stm32/stm32-cmsis-blink/platformio.ini @@ -17,17 +17,17 @@ # Automatic targets - enable auto-uploading # targets = upload -[env:stm32f4discovery] -platform = stm32 +[env:disco_f407vg] +platform = ststm32 framework = cmsis -board = stm32f4discovery +board = disco_f407vg -[env:stm32ldiscovery] -platform = stm32 +[env:disco_l152rb] +platform = ststm32 framework = cmsis -board = stm32ldiscovery +board = disco_l152rb -[env:stm32f3discovery] -platform = stm32 +[env:disco_f303vc] +platform = ststm32 framework = cmsis -board = stm32f3discovery +board = disco_f303vc \ No newline at end of file diff --git a/examples/stm32/stm32-opencm3-blink/platformio.ini b/examples/stm32/stm32-opencm3-blink/platformio.ini index 3c472f00..4055d71f 100644 --- a/examples/stm32/stm32-opencm3-blink/platformio.ini +++ b/examples/stm32/stm32-opencm3-blink/platformio.ini @@ -17,17 +17,17 @@ # Automatic targets - enable auto-uploading # targets = upload -[env:stm32f4discovery] -platform = stm32 +[env:disco_f407vg] +platform = ststm32 framework = opencm3 -board = stm32f4discovery +board = disco_f407vg -[env:stm32ldiscovery] -platform = stm32 +[env:disco_l152rb] +platform = ststm32 framework = opencm3 -board = stm32ldiscovery +board = disco_l152rb -[env:stm32f3discovery] -platform = stm32 +[env:disco_f303vc] +platform = ststm32 framework = opencm3 -board = stm32f3discovery +board = disco_f303vc diff --git a/examples/stm32/stm32-spl-blink/platformio.ini b/examples/stm32/stm32-spl-blink/platformio.ini index 6ba5b0c1..1324053c 100644 --- a/examples/stm32/stm32-spl-blink/platformio.ini +++ b/examples/stm32/stm32-spl-blink/platformio.ini @@ -17,17 +17,17 @@ # Automatic targets - enable auto-uploading # targets = upload -[env:stm32f4discovery] -platform = stm32 +[env:disco_f407vg] +platform = ststm32 framework = cmsis,spl -board = stm32f4discovery +board = disco_f407vg -[env:stm32ldiscovery] -platform = stm32 +[env:disco_l152rb] +platform = ststm32 framework = cmsis,spl -board = stm32ldiscovery +board = disco_l152rb -[env:stm32f3discovery] -platform = stm32 +[env:disco_f303vc] +platform = ststm32 framework = cmsis,spl -board = stm32f3discovery +board = disco_f303vc diff --git a/platformio/boards/adafruit.json b/platformio/boards/adafruit.json index 4e7832d0..9618e995 100644 --- a/platformio/boards/adafruit.json +++ b/platformio/boards/adafruit.json @@ -10,7 +10,7 @@ "variant": "flora", "vid": "0x239A" }, - "framework": "arduino", + "frameworks": "arduino", "name": "Adafruit Flora", "platform": "atmelavr", "upload": { @@ -22,7 +22,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": false - } + }, + "url": "http://www.adafruit.com/product/659", + "vendor": "Adafruit" }, "trinket3": { @@ -33,14 +35,16 @@ "mcu": "attiny85", "variant": "tiny8" }, - "framework": "arduino", - "name": "Adafruit Trinket 8MHz", + "frameworks": "arduino", + "name": "Adafruit Trinket 3V/8MHz", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, "maximum_size": 8192, "protocol": "usbtiny" - } + }, + "url": "http://www.adafruit.com/products/1500", + "vendor": "Adafruit" }, "trinket5": { @@ -51,14 +55,16 @@ "mcu": "attiny85", "variant": "tiny8" }, - "framework": "arduino", - "name": "Adafruit Trinket 16MHz", + "frameworks": "arduino", + "name": "Adafruit Trinket 5V/16MHz", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, "maximum_size": 8192, "protocol": "usbtiny" - } + }, + "url": "http://www.adafruit.com/products/1501", + "vendor": "Adafruit" }, "protrinket3": { @@ -69,14 +75,16 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": "arduino", "name": "Pro Trinket 3V/12MHz (USB)", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, "maximum_size": 28672, "protocol": "usbtiny" - } + }, + "url": "http://www.adafruit.com/products/2010", + "vendor": "Adafruit" }, "protrinket5": { @@ -87,14 +95,16 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": "arduino", "name": "Pro Trinket 5V/16MHz (USB)", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, "maximum_size": 28672, "protocol": "usbtiny" - } + }, + "url": "http://www.adafruit.com/products/2000", + "vendor": "Adafruit" }, "protrinket3ftdi": { "build": { @@ -104,7 +114,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": "arduino", "name": "Pro Trinket 3V/12MHz (FTDI)", "platform": "atmelavr", "upload": { @@ -113,7 +123,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://www.adafruit.com/products/2010", + "vendor": "Adafruit" }, "protrinket5ftdi": { "build": { @@ -123,7 +135,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": "arduino", "name": "Pro Trinket 5V/16MHz (USB)", "platform": "atmelavr", "upload": { @@ -132,6 +144,8 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://www.adafruit.com/products/2000", + "vendor": "Adafruit" } } \ No newline at end of file diff --git a/platformio/boards/arduino.json b/platformio/boards/arduino.json index 43779bc1..2736d067 100644 --- a/platformio/boards/arduino.json +++ b/platformio/boards/arduino.json @@ -10,7 +10,7 @@ "variant": "leonardo", "vid": "0x1B4F" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "LilyPad Arduino USB", "platform": "atmelavr", "upload": { @@ -22,7 +22,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardLilyPadUSB", + "vendor": "Arduino" }, "atmegangatmega168": { "build": { @@ -32,7 +34,7 @@ "mcu": "atmega168", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino NG or older ATmega168", "platform": "atmelavr", "upload": { @@ -41,7 +43,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/main/boards", + "vendor": "Arduino" }, "atmegangatmega8": { "build": { @@ -51,7 +55,7 @@ "mcu": "atmega8", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino NG or older ATmega8", "platform": "atmelavr", "upload": { @@ -60,7 +64,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/main/boards", + "vendor": "Arduino" }, "btatmega168": { "build": { @@ -70,7 +76,7 @@ "mcu": "atmega168", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino BT ATmega168", "platform": "atmelavr", "upload": { @@ -80,7 +86,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/main/boards", + "vendor": "Arduino" }, "btatmega328": { "build": { @@ -90,7 +98,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino BT ATmega328", "platform": "atmelavr", "upload": { @@ -100,7 +108,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/main/boards", + "vendor": "Arduino" }, "diecimilaatmega168": { "build": { @@ -110,7 +120,7 @@ "mcu": "atmega168", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Duemilanove or Diecimila ATmega168", "platform": "atmelavr", "upload": { @@ -119,7 +129,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardDiecimila", + "vendor": "Arduino" }, "diecimilaatmega328": { "build": { @@ -129,7 +141,7 @@ "mcu": "atmega328p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Duemilanove or Diecimila ATmega328", "platform": "atmelavr", "upload": { @@ -138,7 +150,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardDiecimila", + "vendor": "Arduino" }, "esplora": { "build": { @@ -151,7 +165,7 @@ "variant": "leonardo", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Esplora", "platform": "atmelavr", "upload": { @@ -163,7 +177,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardEsplora", + "vendor": "Arduino" }, "ethernet": { "build": { @@ -173,7 +189,7 @@ "mcu": "atmega328p", "variant": "ethernet" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Ethernet", "platform": "atmelavr", "upload": { @@ -182,7 +198,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardEthernet", + "vendor": "Arduino" }, "fio": { "build": { @@ -192,7 +210,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Fio", "platform": "atmelavr", "upload": { @@ -201,7 +219,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardFio", + "vendor": "Arduino" }, "leonardo": { "build": { @@ -214,7 +234,7 @@ "variant": "leonardo", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Leonardo", "platform": "atmelavr", "upload": { @@ -226,7 +246,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/arduinoBoardLeonardo", + "vendor": "Arduino" }, "lilypadatmega168": { "build": { @@ -236,7 +258,7 @@ "mcu": "atmega168", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "LilyPad Arduino ATmega168", "platform": "atmelavr", "upload": { @@ -245,7 +267,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardLilyPad", + "vendor": "Arduino" }, "lilypadatmega328": { "build": { @@ -255,7 +279,7 @@ "mcu": "atmega328p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "LilyPad Arduino ATmega328", "platform": "atmelavr", "upload": { @@ -264,7 +288,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardLilyPad", + "vendor": "Arduino" }, "megaADK": { "build": { @@ -274,7 +300,7 @@ "mcu": "atmega2560", "variant": "mega" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Mega ADK", "platform": "atmelavr", "upload": { @@ -283,7 +309,9 @@ "protocol": "wiring", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardMegaADK", + "vendor": "Arduino" }, "megaatmega1280": { "build": { @@ -293,7 +321,7 @@ "mcu": "atmega1280", "variant": "mega" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Mega or Mega 2560 ATmega1280", "platform": "atmelavr", "upload": { @@ -302,7 +330,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/arduinoBoardMega", + "vendor": "Arduino" }, "megaatmega2560": { "build": { @@ -312,7 +342,7 @@ "mcu": "atmega2560", "variant": "mega" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)", "platform": "atmelavr", "upload": { @@ -321,7 +351,9 @@ "protocol": "wiring", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://arduino.cc/en/Main/arduinoBoardMega2560", + "vendor": "Arduino" }, "micro": { "build": { @@ -334,7 +366,7 @@ "variant": "micro", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Micro", "platform": "atmelavr", "upload": { @@ -346,7 +378,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardMicro", + "vendor": "Arduino" }, "miniatmega168": { "build": { @@ -356,7 +390,7 @@ "mcu": "atmega168", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Mini ATmega168", "platform": "atmelavr", "upload": { @@ -365,7 +399,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardMini", + "vendor": "Arduino" }, "miniatmega328": { "build": { @@ -375,7 +411,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Mini ATmega328", "platform": "atmelavr", "upload": { @@ -384,7 +420,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardMini", + "vendor": "Arduino" }, "nanoatmega168": { "build": { @@ -394,7 +432,7 @@ "mcu": "atmega168", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Nano ATmega168", "platform": "atmelavr", "upload": { @@ -403,7 +441,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardNano", + "vendor": "Arduino" }, "nanoatmega328": { "build": { @@ -413,7 +453,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Nano ATmega328", "platform": "atmelavr", "upload": { @@ -422,7 +462,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardNano", + "vendor": "Arduino" }, "pro16MHzatmega168": { "build": { @@ -432,7 +474,7 @@ "mcu": "atmega168", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)", "platform": "atmelavr", "upload": { @@ -441,7 +483,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardProMini", + "vendor": "Arduino" }, "pro16MHzatmega328": { "build": { @@ -451,7 +495,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)", "platform": "atmelavr", "upload": { @@ -460,7 +504,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardProMini", + "vendor": "Arduino" }, "pro8MHzatmega168": { "build": { @@ -470,7 +516,7 @@ "mcu": "atmega168", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)", "platform": "atmelavr", "upload": { @@ -479,7 +525,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 19200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardProMini", + "vendor": "Arduino" }, "pro8MHzatmega328": { "build": { @@ -489,7 +537,7 @@ "mcu": "atmega328p", "variant": "eightanaloginputs" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)", "platform": "atmelavr", "upload": { @@ -498,7 +546,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardProMini", + "vendor": "Arduino" }, "robotControl": { "build": { @@ -511,7 +561,7 @@ "variant": "robot_control", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Robot Control", "platform": "atmelavr", "upload": { @@ -523,7 +573,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/Robot", + "vendor": "Arduino" }, "robotMotor": { "build": { @@ -536,7 +588,7 @@ "variant": "robot_motor", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Robot Motor", "platform": "atmelavr", "upload": { @@ -548,7 +600,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/Robot", + "vendor": "Arduino" }, "uno": { "build": { @@ -558,7 +612,7 @@ "mcu": "atmega328p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Uno", "platform": "atmelavr", "upload": { @@ -567,7 +621,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardUno", + "vendor": "Arduino" }, "yun": { "build": { @@ -580,7 +636,7 @@ "variant": "yun", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Yun", "platform": "atmelavr", "upload": { @@ -593,7 +649,9 @@ "use_1200bps_touch": true, "via_ssh": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/ArduinoBoardYun", + "vendor": "Arduino" }, "due": { "build": { @@ -608,18 +666,20 @@ "vid": "0x2341", "ldscript": "sam3x8e.ld" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Due (Programming Port)", "platform": "atmelsam", "upload": { "disable_flushing": true, - "maximum_ram_size": 28672, + "maximum_ram_size": 32768, "maximum_size": 524288, "protocol": "sam-ba", - "require_upload_port" : true, + "require_upload_port" : true, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/arduinoBoardDue", + "vendor": "Arduino" }, "dueUSB": { "build": { @@ -634,17 +694,19 @@ "vid": "0x2341", "ldscript": "sam3x8e.ld" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Arduino Due (USB Native Port)", "platform": "atmelsam", "upload": { "disable_flushing": true, - "maximum_ram_size": 28672, + "maximum_ram_size": 32768, "maximum_size": 524288, "protocol": "sam-ba", - "require_upload_port" : true, + "require_upload_port" : true, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://arduino.cc/en/Main/arduinoBoardDue", + "vendor": "Arduino" } } diff --git a/platformio/boards/digistump.json b/platformio/boards/digistump.json index 8e0dc576..c03d3680 100644 --- a/platformio/boards/digistump.json +++ b/platformio/boards/digistump.json @@ -7,14 +7,16 @@ "mcu": "attiny85", "variant": "digispark_tiny" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Digispark (Default - 16 MHz)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, "maximum_size": 6012, "protocol": "digispark" - } + }, + "url": "http://digistump.com/products/1", + "vendor": "Digistump" }, "digispark-pro": { "build": { @@ -24,14 +26,16 @@ "mcu": "attiny167", "variant": "digispark_pro" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Digispark Pro (Default 16 MHz)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, "maximum_size": 14844, "protocol": "digispark" - } + }, + "url": "http://digistump.com/products/109", + "vendor": "Digistump" }, "digispark-pro32": { "build": { @@ -41,14 +45,16 @@ "mcu": "attiny167", "variant": "digispark_pro32" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Digispark Pro (16 MHz) (32 byte buffer)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, "maximum_size": 14844, "protocol": "digispark" - } + }, + "url": "http://digistump.com/products/109", + "vendor": "Digistump" }, "digispark-pro64": { "build": { @@ -58,14 +64,16 @@ "mcu": "attiny167", "variant": "digispark_pro64" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Digispark Pro (16 MHz) (64 byte buffer)", "platform": "atmelavr", "upload": { "maximum_ram_size": 512, "maximum_size": 14844, "protocol": "digispark" - } + }, + "url": "http://digistump.com/products/109", + "vendor": "Digistump" }, "digix": { "build": { @@ -80,7 +88,7 @@ "variant": "digispark_digix", "vid": "0x16D0" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Digistump DigiX", "platform": "atmelsam", "upload": { @@ -91,6 +99,8 @@ "require_upload_port" : true, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://digistump.com/products/50", + "vendor": "Digistump" } } \ No newline at end of file diff --git a/platformio/boards/engduino.json b/platformio/boards/engduino.json index 32235a93..a08639cf 100644 --- a/platformio/boards/engduino.json +++ b/platformio/boards/engduino.json @@ -10,7 +10,7 @@ "variant": "engduinov1", "vid": "0x1B4F" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Engduino 1", "platform": "atmelavr", "upload": { @@ -22,7 +22,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://www.engduino.org", + "vendor": "Engduino" }, "engduinov2": { "build": { @@ -35,7 +37,7 @@ "variant": "engduinov2", "vid": "0x1B4F" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Engduino 2", "platform": "atmelavr", "upload": { @@ -47,7 +49,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://www.engduino.org", + "vendor": "Engduino" }, "engduinov3": { "build": { @@ -60,7 +64,7 @@ "variant": "engduinov3", "vid": "0x1B4F" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Engduino 3", "platform": "atmelavr", "upload": { @@ -72,6 +76,8 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://www.engduino.org", + "vendor": "Engduino" } } \ No newline at end of file diff --git a/platformio/boards/freescalekinetis.json b/platformio/boards/freescalekinetis.json new file mode 100644 index 00000000..88be3603 --- /dev/null +++ b/platformio/boards/freescalekinetis.json @@ -0,0 +1,99 @@ +{ + "frdm_kl25z": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0plus", + "mcu": "mkl25z128vlk4" + }, + "frameworks": ["mbed"], + "name": "Freescale Kinetis FRDM-KL25Z", + "platform": "freescalekinetis", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "https://developer.mbed.org/platforms/KL25Z/", + "vendor": "Freescale" + }, + "frdm_kl46z": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0plus", + "mcu": "mkl46z256vll4" + }, + "frameworks": ["mbed"], + "name": "Freescale Kinetis FRDM-KL46Z", + "platform": "freescalekinetis", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/FRDM-KL46Z/", + "vendor": "Freescale" + }, + "frdm_k64f": { + "build": { + "f_cpu": "120000000L", + "cpu": "cortex-m4", + "mcu": "mk64fn1m0vll12" + }, + "frameworks": ["mbed"], + "name": "Freescale Kinetis FRDM-K64F", + "platform": "freescalekinetis", + "upload": { + "maximum_ram_size": 262144, + "maximum_size": 1048576 + }, + "url": "https://developer.mbed.org/platforms/FRDM-K64F/", + "vendor": "Freescale" + }, + "frdm_kl05z": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0plus", + "mcu": "mkl05z32vfm4" + }, + "frameworks": ["mbed"], + "name": "Freescale Kinetis FRDM-KL05Z", + "platform": "freescalekinetis", + "upload": { + "maximum_ram_size": 4096, + "maximum_size": 32768 + }, + "url": "https://developer.mbed.org/platforms/FRDM-KL05Z/", + "vendor": "Freescale" + }, + "frdm_k20d50m": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m4", + "mcu": "mk20dx128vlh5" + }, + "frameworks": ["mbed"], + "name": "Freescale Kinetis FRDM-K20D50M", + "platform": "freescalekinetis", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "https://developer.mbed.org/platforms/FRDM-K20D50M/", + "vendor": "Freescale" + } + , + "frdm_k22f": { + "build": { + "f_cpu": "120000000L", + "cpu": "cortex-m4", + "mcu": "mk22fn512vlh12" + }, + "frameworks": ["mbed"], + "name": "Freescale Kinetis FRDM-K22F", + "platform": "freescalekinetis", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/FRDM-K22F/", + "vendor": "Freescale" + } +} \ No newline at end of file diff --git a/platformio/boards/microduino.json b/platformio/boards/microduino.json index 86d09dcf..3336fc2e 100644 --- a/platformio/boards/microduino.json +++ b/platformio/boards/microduino.json @@ -7,7 +7,7 @@ "mcu": "atmega1284p", "variant": "plus" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core+ (ATmega1284P@16M,5V)", "platform": "atmelavr", "upload": { @@ -16,7 +16,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core%2B", + "vendor": "Microduino" }, "1284p8m": { "build": { @@ -26,7 +28,7 @@ "mcu": "atmega1284p", "variant": "plus" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core+ (ATmega1284P@8M,3.3V)", "platform": "atmelavr", "upload": { @@ -35,7 +37,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core%2B", + "vendor": "Microduino" }, "168pa16m": { "build": { @@ -45,7 +49,7 @@ "mcu": "atmega168p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core (Atmega168PA@16M,5V)", "platform": "atmelavr", "upload": { @@ -54,7 +58,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core", + "vendor": "Microduino" }, "168pa8m": { "build": { @@ -64,7 +70,7 @@ "mcu": "atmega168p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core (Atmega168PA@8M,3.3V)", "platform": "atmelavr", "upload": { @@ -73,7 +79,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core", + "vendor": "Microduino" }, "328p16m": { "build": { @@ -83,7 +91,7 @@ "mcu": "atmega328p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core (Atmega328P@16M,5V)", "platform": "atmelavr", "upload": { @@ -92,7 +100,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core", + "vendor": "Microduino" }, "328p8m": { "build": { @@ -102,7 +112,7 @@ "mcu": "atmega328p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core (Atmega328P@8M,3.3V)", "platform": "atmelavr", "upload": { @@ -111,7 +121,9 @@ "require_upload_port" : true, "protocol": "arduino", "speed": 57600 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core", + "vendor": "Microduino" }, "32u416m": { "build": { @@ -123,7 +135,7 @@ "variant": "32u4", "vid": "0x2341" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core USB (ATmega32U4@16M,5V)", "platform": "atmelavr", "upload": { @@ -135,7 +147,9 @@ "speed": 57600, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-CoreUSB", + "vendor": "Microduino" }, "644pa16m": { "build": { @@ -145,7 +159,7 @@ "mcu": "atmega644p", "variant": "plus" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core+ (Atmega644PA@16M,5V)", "platform": "atmelavr", "upload": { @@ -154,7 +168,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 115200 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core%2B", + "vendor": "Microduino" }, "644pa8m": { "build": { @@ -164,7 +180,7 @@ "mcu": "atmega644p", "variant": "plus" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Microduino Core+ (Atmega644PA@8M,3.3V)", "platform": "atmelavr", "upload": { @@ -173,6 +189,8 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "https://www.microduino.cc/wiki/index.php?title=Microduino-Core%2B", + "vendor": "Microduino" } } \ No newline at end of file diff --git a/platformio/boards/misc.json b/platformio/boards/misc.json index 8c1e85a0..abb6d9a1 100644 --- a/platformio/boards/misc.json +++ b/platformio/boards/misc.json @@ -7,7 +7,7 @@ "mcu": "atmega328p", "variant": "standard" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Raspduino", "platform": "atmelavr", "upload": { @@ -16,7 +16,9 @@ "protocol": "arduino", "require_upload_port" : true, "speed": 57600 - } + }, + "url": "http://www.bitwizard.nl/wiki/index.php/Raspduino", + "vendor": "BitWizard" }, "sainSmartDue": { "build": { @@ -31,18 +33,20 @@ "vid": "0x2341", "ldscript": "sam3x8e.ld" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "SainSmart Due (Programming Port)", "platform": "atmelsam", "upload": { "disable_flushing": true, - "maximum_ram_size": 28672, + "maximum_ram_size": 32768, "maximum_size": 524288, "protocol": "sam-ba", - "require_upload_port" : true, + "require_upload_port" : true, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://www.sainsmart.com/arduino/control-boards/sainsmart-due-atmel-sam3x8e-arm-cortex-m3-board-black.html", + "vendor": "SainSmart" }, "sainSmartDueUSB": { "build": { @@ -57,17 +61,19 @@ "vid": "0x2341", "ldscript": "sam3x8e.ld" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "SainSmart Due (USB Native Port)", "platform": "atmelsam", "upload": { "disable_flushing": true, - "maximum_ram_size": 28672, + "maximum_ram_size": 32768, "maximum_size": 524288, "protocol": "sam-ba", - "require_upload_port" : true, + "require_upload_port" : true, "use_1200bps_touch": true, "wait_for_upload_port": true - } + }, + "url": "http://www.sainsmart.com/arduino/control-boards/sainsmart-due-atmel-sam3x8e-arm-cortex-m3-board-black.html", + "vendor": "SainSmart" } } \ No newline at end of file diff --git a/platformio/boards/nordicnrf51.json b/platformio/boards/nordicnrf51.json new file mode 100644 index 00000000..acdabaee --- /dev/null +++ b/platformio/boards/nordicnrf51.json @@ -0,0 +1,116 @@ +{ + "nrf51_mkit": { + "build": { + "f_cpu": "16000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "Nordic nRF51822-mKIT", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "http://developer.mbed.org/platforms/Nordic-nRF51822/", + "vendor": "Nordic" + }, + "hrm1017": { + "build": { + "f_cpu": "16000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "Switch Science mbed HRM1017", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/mbed-HRM1017/", + "vendor": "Switch Science" + }, + "redBearLab": { + "build": { + "f_cpu": "16000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "RedBearLab nRF51822", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/RedBearLab-nRF51822/", + "vendor": "RedBearLab" + }, + "nrf51_dk": { + "build": { + "f_cpu": "32000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "Nordic nRF51-DK", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/Nordic-nRF51-DK/", + "vendor": "Nordic" + }, + "redBearLabBLENano": { + "build": { + "f_cpu": "16000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "RedBearLab BLE Nano", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/RedBearLab-BLE-Nano/", + "vendor": "RedBearLab" + }, + "nrf51_dongle": { + "build": { + "f_cpu": "32000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "Nordic nRF51-Dongle", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/Nordic-nRF51-Dongle/", + "vendor": "Nordic" + } + , + "wallBotBLE": { + "build": { + "f_cpu": "16000000L", + "cpu": "cortex-m0", + "mcu": "nrf51822" + }, + "frameworks": ["mbed"], + "name": "JKSoft Wallbot BLE", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "https://developer.mbed.org/platforms/JKSoft-Wallbot-BLE/", + "vendor": "JKSoft" + } + +} \ No newline at end of file diff --git a/platformio/boards/nxplpc.json b/platformio/boards/nxplpc.json new file mode 100644 index 00000000..67392e27 --- /dev/null +++ b/platformio/boards/nxplpc.json @@ -0,0 +1,210 @@ +{ + "lpc1768": { + "build": { + "f_cpu": "96000000L", + "cpu": "cortex-m3", + "mcu": "lpc1768" + }, + "frameworks": ["mbed"], + "name": "mbed LPC1768", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 524288 + }, + "url": "http://developer.mbed.org/platforms/mbed-LPC1768/", + "vendor": "NXP" + }, + "lpc11u24": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "lpc11u24" + }, + "frameworks": ["mbed"], + "name": "mbed LPC11U24", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 32768 + }, + "url": "https://developer.mbed.org/platforms/mbed-LPC11U24/", + "vendor": "NXP" + }, + "lpc4088": { + "build": { + "f_cpu": "120000000L", + "cpu": "cortex-m4", + "mcu": "lpc4088" + }, + "frameworks": ["mbed"], + "name": "EA LPC4088 QuickStart Board", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 98304, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/EA-LPC4088/", + "vendor": "Embedded Artists" + }, + "dipcortexm0": { + "build": { + "f_cpu": "50000000L", + "cpu": "cortex-m0", + "mcu": "lpc11u24" + }, + "frameworks": ["mbed"], + "name": "DipCortex M0", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 32768 + }, + "url": "https://developer.mbed.org/platforms/DipCortex-M0/", + "vendor": "Solder Splash Labs" + }, + "blueboard_lpc11u24": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "lpc11u24" + }, + "frameworks": ["mbed"], + "name": "BlueBoard-LPC11U24", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 32768 + }, + "url": "https://developer.mbed.org/platforms/BlueBoard-LPC11U24/", + "vendor": "NGX Technologies" + }, + "seeeduinoArchPro": { + "build": { + "f_cpu": "96000000L", + "cpu": "cortex-m3", + "mcu": "lpc1768" + }, + "frameworks": ["mbed"], + "name": "Seeeduino-Arch-Pro", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/Seeeduino-Arch-Pro/", + "vendor": "SeeedStudio" + }, + "ubloxc027": { + "build": { + "f_cpu": "96000000L", + "cpu": "cortex-m3", + "mcu": "lpc1768" + }, + "frameworks": ["mbed"], + "name": "u-blox C027", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/u-blox-C027/", + "vendor": "u-blox" + }, + "lpc1114fn28": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "lpc1114fn28" + }, + "frameworks": ["mbed"], + "name": "mbed LPC1114FN28", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 4096, + "maximum_size": 32768 + }, + "url": "https://developer.mbed.org/platforms/LPC1114FN28/", + "vendor": "Switch Science" + }, + "lpc11u35": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "lpc11u35" + }, + "frameworks": ["mbed"], + "name": "EA LPC11U35 QuickStart Board", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 10240, + "maximum_size": 65536 + }, + "url": "https://developer.mbed.org/platforms/EA-LPC11U35/", + "vendor": "Embedded Artists" + }, + "lpc11u35_501": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "lpc11u35" + }, + "frameworks": ["mbed"], + "name": "TG-LPC11U35-501", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 10240, + "maximum_size": 65536 + }, + "url": "https://developer.mbed.org/platforms/TG-LPC11U35-501/", + "vendor": "CQ Publishing" + }, + "lpc1549": { + "build": { + "f_cpu": "72000000L", + "cpu": "cortex-m3", + "mcu": "lpc1549" + }, + "frameworks": ["mbed"], + "name": "LPCXpresso1549", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 36864, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/LPCXpresso1549/", + "vendor": "NXP" + }, + "mbuino": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "lpc11u24" + }, + "frameworks": ["mbed"], + "name": "Outrageous Circuits mBuino", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 32768 + }, + "url": "https://developer.mbed.org/platforms/Outrageous-Circuits-mBuino/", + "vendor": "Outrageous Circuits" + }, + "lpc4088_dm": { + "build": { + "f_cpu": "120000000L", + "cpu": "cortex-m4", + "mcu": "lpc4088" + }, + "frameworks": ["mbed"], + "name": "EA LPC4088 Display Module", + "platform": "nxplpc", + "upload": { + "maximum_ram_size": 98304, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/EA-LPC4088-Display-Module/", + "vendor": "Embedded Artists" + } +} \ No newline at end of file diff --git a/platformio/boards/stm32.json b/platformio/boards/stm32.json deleted file mode 100644 index 2dae3544..00000000 --- a/platformio/boards/stm32.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "stm32f4discovery": { - "build": { - "core": "stm32", - "extra_flags": "-DSTM32F40_41xxx", - "f_cpu": "168000000L", - "ldscript": "stm32f405x6.ld", - "cpu": "cortex-m4", - "mcu": "stm32f407vgt6", - "variant": "stm32f4" - }, - "framework": "cmsis", - "name": "STM32F4Discovery (168 MHz) with digital accelerometer, digital microphone, audio DAC", - "platform": "stm32", - "upload": { - "maximum_ram_size": 131071, - "maximum_size": 1048575 - } - }, - "stm32ldiscovery": { - "build": { - "core": "stm32", - "extra_flags": "-DSTM32L1XX_MD", - "f_cpu": "32000000L", - "ldscript": "stm32l15xx6.ld", - "cpu": "cortex-m3", - "mcu": "stm32l152rbt6", - "variant": "stm32l1" - }, - "framework": "cmsis", - "name": "STM32LDiscovery (32 MHz) ultra low-power development kit", - "platform": "stm32", - "upload": { - "maximum_ram_size": 16384, - "maximum_size": 131072 - } - }, - "stm32f3discovery": { - "build": { - "core": "stm32", - "extra_flags": "-DSTM32F303xC", - "f_cpu": "72000000L", - "ldscript": "stm32f30xx.ld", - "cpu": "cortex-m4", - "mcu": "stm32f303vct6", - "variant": "stm32f3" - }, - "framework": "cmsis", - "name": "STM32F3Discovery (72 MHz) with accelerometer, gyroscope and e-compass", - "platform": "stm32", - "upload": { - "maximum_ram_size": 262144, - "maximum_size": 131072 - } - } -} \ No newline at end of file diff --git a/platformio/boards/ststm32.json b/platformio/boards/ststm32.json new file mode 100644 index 00000000..b1e29c7d --- /dev/null +++ b/platformio/boards/ststm32.json @@ -0,0 +1,318 @@ +{ + "disco_f407vg": { + "build": { + "core": "stm32", + "extra_flags": "-DSTM32F40_41xxx", + "f_cpu": "168000000L", + "ldscript": "stm32f405x6.ld", + "cpu": "cortex-m4", + "mcu": "stm32f407vgt6", + "variant": "stm32f4" + }, + "frameworks": ["cmsis", "spl", "opencm3", "mbed"], + "name": "STM32F4DISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 1048576 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF252419", + "vendor": "ST" + }, + "disco_l152rb": { + "build": { + "core": "stm32", + "extra_flags": "-DSTM32L1XX_MD", + "f_cpu": "32000000L", + "ldscript": "stm32l15xx6.ld", + "cpu": "cortex-m3", + "mcu": "stm32l152rbt6", + "variant": "stm32l1" + }, + "frameworks": ["cmsis","spl","opencm3"], + "name": "STM32LDISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF258515", + "vendor": "ST" + }, + "disco_f303vc": { + "build": { + "core": "stm32", + "extra_flags": "-DSTM32F303xC", + "f_cpu": "72000000L", + "ldscript": "stm32f30xx.ld", + "cpu": "cortex-m4", + "mcu": "stm32f303vct6", + "variant": "stm32f3" + }, + "frameworks": ["cmsis", "spl", "opencm3", "mbed"], + "name": "STM32F3DISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 49152, + "maximum_size": 262144 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF254044", + "vendor": "ST" + }, + "disco_f100rb": { + "build": { + "f_cpu": "24000000L", + "cpu": "cortex-m3", + "mcu": "stm32f100rbt6" + }, + "frameworks": ["mbed"], + "name": "STM32VLDISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 131072 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF250863", + "vendor": "ST" + }, + "disco_f051r8": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "stm32f051r8t6" + }, + "frameworks": ["mbed"], + "name": "STM32F0DISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 65536 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF253215", + "vendor": "ST" + }, + "disco_f334c8": { + "build": { + "f_cpu": "72000000L", + "cpu": "cortex-m4", + "mcu": "stm32f334c8t6" + }, + "frameworks": ["mbed"], + "name": "32F3348DISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 65536 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF260318", + "vendor": "ST" + }, + "disco_f401vc": { + "build": { + "f_cpu": "84000000L", + "cpu": "cortex-m4", + "mcu": "stm32f401vct6" + }, + "frameworks": ["mbed"], + "name": "32F401CDISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 65536, + "maximum_size": 262144 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF259098", + "vendor": "ST" + }, + "disco_f429zi": { + "build": { + "f_cpu": "180000000L", + "cpu": "cortex-m4", + "mcu": "stm32f429zit6" + }, + "frameworks": ["mbed"], + "name": "32F429IDISCOVERY", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 262144, + "maximum_size": 2097152 + }, + "url": "http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF259090", + "vendor": "ST" + }, + "nucleo_f030r8": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "stm32f030r8t6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F030R8", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 65536 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F030R8/", + "vendor": "ST" + }, + "nucleo_f070rb": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "stm32f070rbt6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F070RB", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F070RB/", + "vendor": "ST" + }, + "nucleo_f072rb": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "stm32f072rbt6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F072RB", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 131072 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F072RB/", + "vendor": "ST" + }, + "nucleo_f091rc": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "stm32f091rct6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F091RC", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 262144 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F091RC/", + "vendor": "ST" + }, + "nucleo_f103rb": { + "build": { + "f_cpu": "72000000L", + "cpu": "cortex-m3", + "mcu": "stm32f103rbt6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F103RB", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 20480, + "maximum_size": 131072 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F103RB/", + "vendor": "ST" + }, + "nucleo_f302r8": { + "build": { + "f_cpu": "72000000L", + "cpu": "cortex-m4", + "mcu": "stm32f302r8t6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F302R8", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 65536 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F302R8/", + "vendor": "ST" + }, + "nucleo_f334r8": { + "build": { + "f_cpu": "72000000L", + "cpu": "cortex-m4", + "mcu": "stm32f334r8t6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F334R8", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 65536 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F334R8/", + "vendor": "ST" + }, + "nucleo_f401re": { + "build": { + "f_cpu": "84000000L", + "cpu": "cortex-m4", + "mcu": "stm32f401ret6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F401RE", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 98304, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F401RE/", + "vendor": "ST" + }, + "nucleo_f411re": { + "build": { + "f_cpu": "100000000L", + "cpu": "cortex-m4", + "mcu": "stm32f411ret6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo F411RE", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-F411RE/", + "vendor": "ST" + }, + "nucleo_l053r8": { + "build": { + "f_cpu": "48000000L", + "cpu": "cortex-m0", + "mcu": "stm32l053r8t6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo L053R8", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 65536 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-L053R8/", + "vendor": "ST" + }, + "nucleo_l152re": { + "build": { + "f_cpu": "32000000L", + "cpu": "cortex-m3", + "mcu": "stm32l152ret6" + }, + "frameworks": ["mbed"], + "name": "ST Nucleo L152RE", + "platform": "ststm32", + "upload": { + "maximum_ram_size": 81920, + "maximum_size": 524288 + }, + "url": "https://developer.mbed.org/platforms/ST-Nucleo-L152RE/", + "vendor": "ST" + } +} \ No newline at end of file diff --git a/platformio/boards/teensy.json b/platformio/boards/teensy.json index 49403ecb..bb3b4a88 100644 --- a/platformio/boards/teensy.json +++ b/platformio/boards/teensy.json @@ -5,13 +5,15 @@ "f_cpu": "16000000L", "mcu": "atmega32u4" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Teensy 2.0", "platform": "teensy", "upload": { "maximum_ram_size": 2560, "maximum_size": 32256 - } + }, + "url": "https://www.pjrc.com/store/teensy.html", + "vendor": "Teensy" }, "teensy20pp": { @@ -20,13 +22,15 @@ "f_cpu": "16000000L", "mcu": "at90usb1286" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Teensy++ 2.0", "platform": "teensy", "upload": { "maximum_ram_size": 8192, "maximum_size": 130048 - } + }, + "url": "https://www.pjrc.com/store/teensypp.html", + "vendor": "Teensy" }, "teensy30": { @@ -38,13 +42,15 @@ "mcu": "mk20dx128", "cpu": "cortex-m4" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Teensy 3.0", "platform": "teensy", "upload": { "maximum_ram_size": 16384, "maximum_size": 131072 - } + }, + "url": "https://www.pjrc.com/store/teensy3.html", + "vendor": "Teensy" }, "teensy31": { @@ -56,12 +62,14 @@ "mcu": "mk20dx256", "cpu": "cortex-m4" }, - "framework": "arduino", + "frameworks": ["arduino"], "name": "Teensy 3.1", "platform": "teensy", "upload": { "maximum_ram_size": 65536, "maximum_size": 262144 - } + }, + "url": "https://www.pjrc.com/store/teensy31.html", + "vendor": "Teensy" } } diff --git a/platformio/boards/timsp430.json b/platformio/boards/timsp430.json index a8d2b46f..88731614 100644 --- a/platformio/boards/timsp430.json +++ b/platformio/boards/timsp430.json @@ -6,14 +6,16 @@ "mcu": "msp430f5529", "variant": "launchpad_f5529" }, - "framework": "energia", + "frameworks": ["energia"], "name": "LaunchPad w/ msp430f5529 (16MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, "maximum_size": 131072, "protocol": "tilib" - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html", + "vendor": "TI" }, "lpmsp430f5529_25": { "build": { @@ -22,14 +24,16 @@ "mcu": "msp430f5529", "variant": "launchpad_f5529" }, - "framework": "energia", + "frameworks": ["energia"], "name": "LaunchPad w/ msp430f5529 (25MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, "maximum_size": 131072, "protocol": "tilib" - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html", + "vendor": "TI" }, "lpmsp430fr5739": { "build": { @@ -38,14 +42,16 @@ "mcu": "msp430fr5739", "variant": "fraunchpad" }, - "framework": "energia", + "frameworks": ["energia"], "name": "FraunchPad w/ msp430fr5739", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, "maximum_size": 15872, "protocol": "rf2500" - } + }, + "url": "http://www.ti.com/tool/msp-exp430fr5739", + "vendor": "TI" }, "lpmsp430fr5969": { "build": { @@ -54,14 +60,16 @@ "mcu": "msp430fr5969", "variant": "launchpad_fr5969" }, - "framework": "energia", + "frameworks": ["energia"], "name": "LaunchPad w/ msp430fr5969", "platform": "timsp430", "upload": { "maximum_ram_size": 1024, "maximum_size": 65536, "protocol": "tilib" - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr5969.html", + "vendor": "TI" }, "lpmsp430g2231": { "build": { @@ -70,14 +78,16 @@ "mcu": "msp430g2231", "variant": "launchpad" }, - "framework": "energia", - "name": "LaunchPad w/ msp430g2231 (1MHz)", + "frameworks": ["energia"], + "name": "LaunchPad w/ msp430g2231 (1 MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 128, "maximum_size": 2048, "protocol": "rf2500" - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html", + "vendor": "TI" }, "lpmsp430g2452": { "build": { @@ -86,14 +96,16 @@ "mcu": "msp430g2452", "variant": "launchpad" }, - "framework": "energia", + "frameworks": ["energia"], "name": "LaunchPad w/ msp430g2452 (16MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 256, "maximum_size": 8192, "protocol": "rf2500" - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html", + "vendor": "TI" }, "lpmsp430g2553": { "build": { @@ -102,13 +114,15 @@ "mcu": "msp430g2553", "variant": "launchpad" }, - "framework": "energia", + "frameworks": ["energia"], "name": "LaunchPad w/ msp430g2553 (16MHz)", "platform": "timsp430", "upload": { "maximum_ram_size": 512, "maximum_size": 16384, "protocol": "rf2500" - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html", + "vendor": "TI" } } \ No newline at end of file diff --git a/platformio/boards/titiva.json b/platformio/boards/titiva.json index 757ee6fa..6b90b012 100644 --- a/platformio/boards/titiva.json +++ b/platformio/boards/titiva.json @@ -8,13 +8,15 @@ "mcu": "lplm4f120h5qr", "variant": "stellarpad" }, - "framework": "energia", + "frameworks": ["energia", "opencm3"], "name": "LaunchPad (Stellaris) w/ lm4f120 (80MHz)", "platform": "titiva", "upload": { "maximum_ram_size": 32768, "maximum_size": 262144 - } + }, + "url": "http://www.ti.com/tool/ek-lm4f120xl", + "vendor": "TI" }, "lptm4c1230c3pm": { "build": { @@ -25,13 +27,15 @@ "mcu": "lptm4c1230c3pm", "variant": "stellarpad" }, - "framework": "energia", + "frameworks": ["energia", "opencm3"], "name": "LaunchPad (Tiva C) w/ tm4c123 (80MHz)", "platform": "titiva", "upload": { "maximum_ram_size": 32768, "maximum_size": 262144 - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-connected-ek-tm4c123gxl.html", + "vendor": "TI" }, "lptm4c1294ncpdt": { "build": { @@ -42,12 +46,14 @@ "mcu": "lptm4c1294ncpdt", "variant": "launchpad_129" }, - "framework": "energia", + "frameworks": ["energia", "opencm3"], "name": "LaunchPad (Tiva C) w/ tm4c129 (120MHz)", "platform": "titiva", "upload": { "maximum_ram_size": 262144, "maximum_size": 1048576 - } + }, + "url": "http://www.ti.com/ww/en/launchpad/launchpads-connected-ek-tm4c1294xl.html", + "vendor": "TI" } } \ No newline at end of file diff --git a/platformio/builder/scripts/atmelavr.py b/platformio/builder/scripts/atmelavr.py index c32fe8b1..eacb925b 100644 --- a/platformio/builder/scripts/atmelavr.py +++ b/platformio/builder/scripts/atmelavr.py @@ -82,13 +82,11 @@ else: UPLOADEEPCMD='"$UPLOADER" $UPLOADERFLAGS -U eeprom:w:$SOURCES:i' ) -CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # -target_elf = env.BuildFirmware(["m"] + CORELIBS) +target_elf = env.BuildFirmware() # # Target: Extract EEPROM data (from EEMEM directive) to .eep file diff --git a/platformio/builder/scripts/atmelsam.py b/platformio/builder/scripts/atmelsam.py index 347cb75a..596872c8 100644 --- a/platformio/builder/scripts/atmelsam.py +++ b/platformio/builder/scripts/atmelsam.py @@ -68,13 +68,11 @@ env.Append( ] ) -CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # -target_elf = env.BuildFirmware(["m", "gcc"] + CORELIBS) +target_elf = env.BuildFirmware() # # Target: Build the .bin file diff --git a/platformio/builder/scripts/basearm.py b/platformio/builder/scripts/basearm.py index 0cb81b83..9ae00990 100644 --- a/platformio/builder/scripts/basearm.py +++ b/platformio/builder/scripts/basearm.py @@ -50,16 +50,15 @@ env.Replace( "-mcpu=${BOARD_OPTIONS['build']['cpu']}" ], + LIBS=["c", "gcc", "m"], + SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES' ) -if env.get("BOARD_OPTIONS", {}).get("build", {}).get("cpu", "")[-2:] == "m4": +if env.get("BOARD_OPTIONS", {}).get("build", {}).get( + "cpu", "")[-2:] == "m4" and env.get("BOARD") != "frdm_k20d50m": env.Append( - ASFLAGS=[ - "-mfloat-abi=hard", - "-mfpu=fpv4-sp-d16" - ], - CCFLAGS=[ + CPPFLAGS=[ "-mfloat-abi=hard", "-mfpu=fpv4-sp-d16", "-fsingle-precision-constant" diff --git a/platformio/builder/scripts/baseavr.py b/platformio/builder/scripts/baseavr.py index bfe19df8..8a0384f1 100644 --- a/platformio/builder/scripts/baseavr.py +++ b/platformio/builder/scripts/baseavr.py @@ -47,6 +47,8 @@ env.Replace( "-Wl,--gc-sections" ], + LIBS=["m"], + SIZEPRINTCMD='"$SIZETOOL" --mcu=$BOARD_MCU -C -d $SOURCES' ) diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 77ef6c88..ba3871bc 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -2,13 +2,17 @@ # See LICENSE for details. """ - Build script for Arduino Framework (based on Wiring). +Arduino 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. + +http://arduino.cc/en/Reference/HomePage """ from os import listdir, walk from os.path import isfile, join -from SCons.Script import DefaultEnvironment, Return +from SCons.Script import DefaultEnvironment env = DefaultEnvironment() @@ -146,7 +150,6 @@ if BOARD_BUILDOPTS.get("core", None) == "teensy": # Target: Build Core Library # - libs = [] if "variant" in BOARD_BUILDOPTS: @@ -178,4 +181,4 @@ if env.subst("${PLATFORMFW_DIR}")[-3:] == "sam": join("$PLATFORMFW_DIR", "system", "libsam", "source") )) -Return("libs") +env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/frameworks/cmsis.py b/platformio/builder/scripts/frameworks/cmsis.py index 4af5b98a..1b9c0236 100644 --- a/platformio/builder/scripts/frameworks/cmsis.py +++ b/platformio/builder/scripts/frameworks/cmsis.py @@ -2,12 +2,20 @@ # See LICENSE for details. """ - Build script for CMSIS Framework. +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. + +http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php """ from os.path import join -from SCons.Script import DefaultEnvironment, Return +from SCons.Script import DefaultEnvironment env = DefaultEnvironment() @@ -39,4 +47,4 @@ libs.append(envsafe.BuildLibrary( join("$PLATFORMFW_DIR", "variants", "${BOARD_OPTIONS['build']['variant']}") )) -Return("libs") +env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/frameworks/energia.py b/platformio/builder/scripts/frameworks/energia.py index a4f72a63..d240aa6a 100644 --- a/platformio/builder/scripts/frameworks/energia.py +++ b/platformio/builder/scripts/frameworks/energia.py @@ -2,12 +2,18 @@ # See LICENSE for details. """ - Build script for Energia Framework (based on Wiring). +Energia framework enables pretty much anyone to start easily creating +microcontroller-based projects and applications. Its easy-to-use libraries +and functions provide developers of all experience levels to start +blinking LEDs, buzzing buzzers and sensing sensors more quickly than ever +before. + +http://energia.nu/reference/ """ from os.path import join -from SCons.Script import DefaultEnvironment, Return +from SCons.Script import DefaultEnvironment env = DefaultEnvironment() @@ -52,4 +58,4 @@ libs.append(env.BuildLibrary( join("$PLATFORMFW_DIR", "cores", "${BOARD_OPTIONS['build']['core']}") )) -Return("libs") +env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/frameworks/mbed.py b/platformio/builder/scripts/frameworks/mbed.py new file mode 100644 index 00000000..7e4918ab --- /dev/null +++ b/platformio/builder/scripts/frameworks/mbed.py @@ -0,0 +1,148 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +""" +The mbed framework The mbed SDK has been designed to provide enough +hardware abstraction to be intuitive and concise, yet powerful enough to +build complex projects. It is built on the low-level ARM CMSIS APIs, +allowing you to code down to the metal if needed. In addition to RTOS, +USB and Networking libraries, a cookbook of hundreds of reusable +peripheral and module libraries have been built on top of the SDK by +the mbed Developer Community. + +http://mbed.org/ +""" + +import xml.etree.ElementTree as ElementTree +from binascii import crc32 +from os.path import join, normpath + +from SCons.Script import DefaultEnvironment + +env = DefaultEnvironment() + +BOARD_OPTS = env.get("BOARD_OPTIONS", {}).get("build", {}) + +env.Replace( + PLATFORMFW_DIR=join("$PIOPACKAGES_DIR", "framework-mbed") +) + +MBED_VARIANTS = { + "stm32f3discovery": "DISCO_F303VC", + "stm32f4discovery": "DISCO_F407VG", + "stm32f429discovery": "DISCO_F429ZI", + "blueboard_lpc11u24": "LPC11U24", + "dipcortexm0": "LPC11U24", + "seeeduinoArchPro": "ARCH_PRO", + "ubloxc027": "UBLOX_C027", + "lpc1114fn28": "LPC1114", + "lpc11u35": "LPC11U35_401", + "mbuino": "LPC11U24", + "nrf51_mkit": "NRF51822", + "redBearLab": "NRF51822", + "nrf51-dt": "NRF51_DK", + "redBearLabBLENano": "NRF51822", + "wallBotBLE": "NRF51822", + "frdm_kl25z": "KL25Z", + "frdm_kl46z": "KL46Z", + "frdm_k64f": "K64F", + "frdm_kl05z": "KL05Z", + "frdm_k20d50m": "K20D50M", + "frdm_k22f": "K22F" +} + + +def parse_eix_file(filename): + result = {} + paths = ( + ("CFLAGS", "./Target/Source/CC/Switch"), + ("CXXFLAGS", "./Target/Source/CPPC/Switch"), + ("CPPDEFINES", "./Target/Source/Symbols/Symbol"), + ("FILES", "./Target/Files/File"), + ("LINKFLAGS", "./Target/Source/LD/Switch"), + ("STDLIBS", "./Target/Source/Syslibs/Library"), + ("LDSCRIPT_PATH", "./Target/Source/Scriptfile"), + ("CPPPATH", "./Target/Compiler/Includepaths/Includepath") + ) + + tree = ElementTree.parse(filename) + + for (key, path) in paths: + if key not in result: + result[key] = [] + + for node in tree.findall(path): + _nkeys = node.keys() + result[key].append( + node.get(_nkeys[0]) if len(_nkeys) == 1 else node.attrib) + + return result + + +def get_source_files(flist): + files = [] + for f in flist: + if f['type'] == "h" or not f['name'].startswith("mbed"): + continue + files.append(join("$BUILD_DIR", "FrameworkMbed", f['name'][5:])) + return files + + +def get_build_flags(data): + flags = {} + cflags = set(data.get("CFLAGS", [])) + cxxflags = set(data.get("CXXFLAGS", [])) + cppflags = set(cflags & cxxflags) + flags['CPPFLAGS'] = list(cppflags) + flags['CXXFLAGS'] = list(cxxflags - cppflags) + flags['CFLAGS'] = list(cflags - cppflags) + return flags + +board_type = env.subst("$BOARD") +variant = MBED_VARIANTS[ + board_type] if board_type in MBED_VARIANTS else board_type.upper() +eixdata = parse_eix_file( + join(env.subst("$PLATFORMFW_DIR"), "variant", variant, "%s.eix" % variant)) + +build_flags = get_build_flags(eixdata) +env.Replace( + CPPFLAGS=build_flags.get("CPPFLAGS", []), + CFLAGS=build_flags.get("CFLAGS", []), + CXXFLAGS=build_flags.get("CXXFLAGS", []), + LINKFLAGS=eixdata.get("LINKFLAGS", []), + CPPDEFINES=[define for define in eixdata.get("CPPDEFINES", [])], + LDSCRIPT_PATH=normpath(join( + "$PLATFORMFW_DIR", "core", eixdata.get("LDSCRIPT_PATH")[0][5:])) +) + +# Hook for K64F and K22F +if board_type in ("frdm_k22f", "frdm_k64f"): + env.Append( + LINKFLAGS=["-Wl,--start-group"] + ) + +for lib_path in eixdata.get("CPPPATH"): + _vdir = join("$BUILD_DIR", "FrameworkMbedInc%d" % crc32(lib_path)) + env.VariantDir( + _vdir, + join("$PLATFORMFW_DIR", "core", lib_path[5:]) + ) + env.Append(CPPPATH=[_vdir]) + + +# +# Target: Build mbed Library +# + +libs = [l for l in eixdata.get("STDLIBS", []) if l not in env.get("LIBS")] + +env.VariantDir( + join("$BUILD_DIR", "FrameworkMbed"), + join("$PLATFORMFW_DIR", "core") +) +libs.append(env.Library( + join("$BUILD_DIR", "FrameworkMbed"), + get_source_files(eixdata.get("FILES", [])) +)) + +env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/frameworks/opencm3.py b/platformio/builder/scripts/frameworks/opencm3.py index 5742429c..d89fe44c 100644 --- a/platformio/builder/scripts/frameworks/opencm3.py +++ b/platformio/builder/scripts/frameworks/opencm3.py @@ -2,14 +2,19 @@ # See LICENSE for details. """ - Build script for OpenCM3 Framework. +The libopencm3 framework aims to create a free/libre/open-source +firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, +including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, +17xx parts, Atmel SAM3, Energy Micro EFM32 and others. + +http://www.libopencm3.org/wiki/Main_Page """ import re from os import listdir, sep, walk from os.path import isfile, join, normpath -from SCons.Script import DefaultEnvironment, Return +from SCons.Script import DefaultEnvironment from platformio.util import exec_command @@ -168,4 +173,4 @@ libs.append(env.Library( get_source_files(root_dir) )) -Return("libs") +env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/frameworks/spl.py b/platformio/builder/scripts/frameworks/spl.py index ee19fc0c..21394b82 100644 --- a/platformio/builder/scripts/frameworks/spl.py +++ b/platformio/builder/scripts/frameworks/spl.py @@ -2,12 +2,17 @@ # See LICENSE for details. """ - Build script for SPL Framework +The ST Standard Peripheral Library provides a set of functions for +handling the peripherals on the STM32 Cortex-M3 family. +The idea is to save the user (the new user, in particular) having to deal +directly with the registers. + +http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743?sc=stm32embeddedsoftware """ from os.path import join -from SCons.Script import DefaultEnvironment, Return +from SCons.Script import DefaultEnvironment env = DefaultEnvironment() @@ -61,4 +66,4 @@ libs.append(envsafe.BuildLibrary( ignore_files )) -Return("libs") +env.Append(LIBS=libs) diff --git a/platformio/builder/scripts/freescalekinetis.py b/platformio/builder/scripts/freescalekinetis.py new file mode 100644 index 00000000..bb5f7048 --- /dev/null +++ b/platformio/builder/scripts/freescalekinetis.py @@ -0,0 +1,59 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +""" + Builder for Freescale Kinetis series ARM microcontrollers. +""" + +from os.path import join +from shutil import copyfile + +from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Default, + DefaultEnvironment, SConscript) + + +def UploadToDisk(target, source, env): # pylint: disable=W0613,W0621 + env.AutodetectUploadPort() + copyfile(join(env.subst("$BUILD_DIR"), "firmware.bin"), + join(env.subst("$UPLOAD_PORT"), "firmware.bin")) + print ("Firmware has been successfully uploaded.\n" + "Please restart your board.") + +env = DefaultEnvironment() + +SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) + +# +# 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, UploadToDisk) +AlwaysBuild(upload) + +# +# Target: Define targets +# + +Default([target_firm, target_size]) diff --git a/platformio/builder/scripts/nordicnrf51.py b/platformio/builder/scripts/nordicnrf51.py new file mode 100644 index 00000000..1460b81d --- /dev/null +++ b/platformio/builder/scripts/nordicnrf51.py @@ -0,0 +1,59 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +""" + Builder for Nordic nRF51 series ARM microcontrollers. +""" + +from os.path import join +from shutil import copyfile + +from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Default, + DefaultEnvironment, SConscript) + + +def UploadToDisk(target, source, env): # pylint: disable=W0613,W0621 + env.AutodetectUploadPort() + copyfile(join(env.subst("$BUILD_DIR"), "firmware.bin"), + join(env.subst("$UPLOAD_PORT"), "firmware.bin")) + print ("Firmware has been successfully uploaded.\n" + "Please restart your board.") + +env = DefaultEnvironment() + +SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) + +# +# 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, UploadToDisk) +AlwaysBuild(upload) + +# +# Target: Define targets +# + +Default([target_firm, target_size]) diff --git a/platformio/builder/scripts/nxplpc.py b/platformio/builder/scripts/nxplpc.py new file mode 100644 index 00000000..39b9dfd9 --- /dev/null +++ b/platformio/builder/scripts/nxplpc.py @@ -0,0 +1,59 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +""" + Builder for NXP LPC series ARM microcontrollers. +""" + +from os.path import join +from shutil import copyfile + +from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Default, + DefaultEnvironment, SConscript) + + +def UploadToDisk(target, source, env): # pylint: disable=W0613,W0621 + env.AutodetectUploadPort() + copyfile(join(env.subst("$BUILD_DIR"), "firmware.bin"), + join(env.subst("$UPLOAD_PORT"), "firmware.bin")) + print ("Firmware has been successfully uploaded.\n" + "Please restart your board.") + +env = DefaultEnvironment() + +SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) + +# +# 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, UploadToDisk) +AlwaysBuild(upload) + +# +# Target: Define targets +# + +Default([target_firm, target_size]) diff --git a/platformio/builder/scripts/stm32.py b/platformio/builder/scripts/ststm32.py similarity index 67% rename from platformio/builder/scripts/stm32.py rename to platformio/builder/scripts/ststm32.py index 4cd991af..9bc2f4c8 100644 --- a/platformio/builder/scripts/stm32.py +++ b/platformio/builder/scripts/ststm32.py @@ -2,15 +2,23 @@ # See LICENSE for details. """ - Builder for STMicroelectronics - STM32 Series ARM microcontrollers. + Builder for ST STM32 Series ARM microcontrollers. """ from os.path import join +from shutil import copyfile from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Default, DefaultEnvironment, SConscript) + +def UploadToDisk(target, source, env): # pylint: disable=W0613,W0621 + env.AutodetectUploadPort() + copyfile(join(env.subst("$BUILD_DIR"), "firmware.bin"), + join(env.subst("$UPLOAD_PORT"), "firmware.bin")) + print ("Firmware has been successfully uploaded.\n" + "Please restart your board.") + env = DefaultEnvironment() SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) @@ -38,13 +46,11 @@ env.Append( ] ) -CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # -target_elf = env.BuildFirmware(["c", "gcc", "m", "nosys"] + CORELIBS) +target_elf = env.BuildFirmware() # # Target: Build the .bin file @@ -66,7 +72,10 @@ AlwaysBuild(target_size) # Target: Upload by default .bin file # -upload = env.Alias(["upload", "uploadlazy"], target_firm, "$UPLOADCMD") +if "mbed" in env.subst("$FRAMEWORK"): + upload = env.Alias(["upload", "uploadlazy"], target_firm, UploadToDisk) +else: + upload = env.Alias(["upload", "uploadlazy"], target_firm, "$UPLOADCMD") AlwaysBuild(upload) # diff --git a/platformio/builder/scripts/teensy.py b/platformio/builder/scripts/teensy.py index a6f9837c..140fa8fd 100644 --- a/platformio/builder/scripts/teensy.py +++ b/platformio/builder/scripts/teensy.py @@ -53,13 +53,11 @@ else: UPLOADHEXCMD='"$UPLOADER" $UPLOADERFLAGS' ) -CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # -target_elf = env.BuildFirmware(["m"] + CORELIBS) +target_elf = env.BuildFirmware() # # Target: Build the firmware file diff --git a/platformio/builder/scripts/timsp430.py b/platformio/builder/scripts/timsp430.py index 98fbd1d1..90507539 100644 --- a/platformio/builder/scripts/timsp430.py +++ b/platformio/builder/scripts/timsp430.py @@ -48,6 +48,8 @@ env.Replace( "-Wl,-gc-sections,-u,main" ], + LIBS=["m"], + SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES', UPLOADER=join("$PIOPACKAGES_DIR", "tool-mspdebug", "mspdebug"), @@ -74,13 +76,11 @@ env.Append( ) ) -CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # -target_elf = env.BuildFirmware(["m"] + CORELIBS) +target_elf = env.BuildFirmware() # # Target: Build the .hex diff --git a/platformio/builder/scripts/titiva.py b/platformio/builder/scripts/titiva.py index b96d4b70..db14ecdf 100644 --- a/platformio/builder/scripts/titiva.py +++ b/platformio/builder/scripts/titiva.py @@ -27,13 +27,11 @@ env.Append( ] ) -CORELIBS = env.ProcessGeneral() - # # Target: Build executable and linkable firmware # -target_elf = env.BuildFirmware(["c", "gcc", "m"] + CORELIBS) +target_elf = env.BuildFirmware() # # Target: Build the .bin file diff --git a/platformio/builder/tools/pioupload.py b/platformio/builder/tools/pioupload.py index 130fd22f..512615b6 100644 --- a/platformio/builder/tools/pioupload.py +++ b/platformio/builder/tools/pioupload.py @@ -7,7 +7,7 @@ from time import sleep from SCons.Script import Exit from serial import Serial -from platformio.util import get_serialports +from platformio.util import get_logicaldisks, get_serialports def FlushSerialBuffer(env, port): @@ -52,16 +52,28 @@ def WaitForNewSerialPort(_, before): def AutodetectUploadPort(env): - if "UPLOAD_PORT" not in env: + if "UPLOAD_PORT" in env: + return + + if env.subst("$FRAMEWORK") == "mbed": + for item in get_logicaldisks(): + if not item['name'] or "mbed" != item['name'].lower(): + continue + print "Auto-detected UPLOAD_PORT: %s" % item['disk'] + env.Replace(UPLOAD_PORT=item['disk']) + break + else: for item in get_serialports(): - if "VID:PID" in item['hwid']: - print "Auto-detected UPLOAD_PORT: %s" % item['port'] - env.Replace(UPLOAD_PORT=item['port']) - break + if "VID:PID" not in item['hwid']: + continue + print "Auto-detected UPLOAD_PORT: %s" % item['port'] + env.Replace(UPLOAD_PORT=item['port']) + break if "UPLOAD_PORT" not in env: Exit("Error: Please specify `upload_port` for environment or use " - "global `--upload-port` option.\n") + "global `--upload-port` option.\n" + "For the some development platforms it can be USB flash drive\n") def exists(_): diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 37931953..ca464b25 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -6,11 +6,11 @@ import re from os import getenv, listdir, remove, sep, walk from os.path import basename, dirname, isdir, isfile, join, normpath -from SCons.Script import SConscript, SConscriptChdir +from SCons.Script import Exit, SConscript, SConscriptChdir from SCons.Util import case_sensitive_suffixes -def ProcessGeneral(env): +def BuildFirmware(env): # fix ASM handling under non-casitive OS if not case_sensitive_suffixes('.s', '.S'): env.Replace( @@ -24,20 +24,8 @@ def ProcessGeneral(env): if "BUILD_FLAGS" in env: env.MergeFlags(env['BUILD_FLAGS']) - corelibs = [] - if "FRAMEWORK" in env: - if env['FRAMEWORK'] in ("arduino", "energia"): - env.ConvertInoToCpp() - for f in env['FRAMEWORK'].split(","): - SConscriptChdir(0) - corelibs += SConscript( - env.subst(join("$PIOBUILDER_DIR", "scripts", "frameworks", - "%s.py" % f.strip().lower())) - ) - return corelibs + env.BuildFramework() - -def BuildFirmware(env, corelibs): firmenv = env.Clone() vdirs = firmenv.VariantDirRecursive( join("$BUILD_DIR", "src"), "$PROJECTSRC_DIR") @@ -59,12 +47,15 @@ def BuildFirmware(env, corelibs): _LIBFLAGS=" -Wl,--end-group" ) - firmenv.MergeFlags(getenv("PLATFORMIO_SRCBUILD_FLAGS", "$SRCBUILD_FLAGS")) + _srcbuild_flags = getenv("PLATFORMIO_SRCBUILD_FLAGS", + env.subst("$SRCBUILD_FLAGS")) + if _srcbuild_flags: + firmenv.MergeFlags(_srcbuild_flags) return firmenv.Program( join("$BUILD_DIR", "firmware"), [firmenv.GlobCXXFiles(vdir) for vdir in vdirs], - LIBS=corelibs + deplibs, + LIBS=env.get("LIBS") + deplibs, LIBPATH="$BUILD_DIR", PROGSUFFIX=".elf" ) @@ -95,6 +86,26 @@ def VariantDirRecursive(env, variant_dir, src_dir, duplicate=True, return variants +def BuildFramework(env): + if "FRAMEWORK" not in env: + return + + if env['FRAMEWORK'].lower() in ("arduino", "energia"): + env.ConvertInoToCpp() + + for f in env['FRAMEWORK'].split(","): + framework = f.strip().lower() + if framework in env.get("BOARD_OPTIONS", {}).get("frameworks"): + SConscriptChdir(0) + SConscript( + env.subst(join("$PIOBUILDER_DIR", "scripts", "frameworks", + "%s.py" % framework)) + ) + else: + Exit("Error: This board doesn't support %s framework!" % + framework) + + def BuildLibrary(env, variant_dir, library_dir, ignore_files=None): lib = env.Clone() vdirs = lib.VariantDirRecursive( @@ -303,10 +314,10 @@ def exists(_): def generate(env): - env.AddMethod(ProcessGeneral) env.AddMethod(BuildFirmware) env.AddMethod(GlobCXXFiles) env.AddMethod(VariantDirRecursive) + env.AddMethod(BuildFramework) env.AddMethod(BuildLibrary) env.AddMethod(BuildDependentLibraries) env.AddMethod(ConvertInoToCpp) diff --git a/platformio/commands/boards.py b/platformio/commands/boards.py index 400a4ae4..1bb89f21 100644 --- a/platformio/commands/boards.py +++ b/platformio/commands/boards.py @@ -16,7 +16,7 @@ def cli(query, json_output): # pylint: disable=R0912 if json_output: return ouput_boards_json(query) - BOARDLIST_TPL = ("{type:<30} {mcu:<13} {frequency:<8} " + BOARDLIST_TPL = ("{type:<30} {mcu:<14} {frequency:<8} " " {flash:<7} {ram:<6} {name}") grpboards = {} diff --git a/platformio/commands/init.py b/platformio/commands/init.py index c5f58aaa..1c32ecca 100644 --- a/platformio/commands/init.py +++ b/platformio/commands/init.py @@ -94,11 +94,11 @@ def fill_project_envs(project_file, board_types, disable_auto_uploading): data = builtin_boards[type_] # find default framework for board - framework = data.get("framework", None) + frameworks = data.get("frameworks") content.append("[env:autogen_%s]" % type_) content.append("platform = %s" % data['platform']) - if framework: - content.append("framework = %s" % framework) + if frameworks: + content.append("framework = %s" % frameworks[0]) content.append("board = %s" % type_) content.append("%stargets = upload" % ("# " if disable_auto_uploading diff --git a/platformio/commands/search.py b/platformio/commands/search.py index 3af2aa5b..821c10c4 100644 --- a/platformio/commands/search.py +++ b/platformio/commands/search.py @@ -24,7 +24,7 @@ def cli(query, json_output): if query == "all": query = "" - search_data = "%s %s" % (name, info) + search_data = "%s %s %s" % (name, info, p.get_installed_packages()) if query and query.lower() not in search_data.lower(): continue diff --git a/platformio/exception.py b/platformio/exception.py index 5646befe..451e7761 100644 --- a/platformio/exception.py +++ b/platformio/exception.py @@ -44,6 +44,11 @@ class UnknownBoard(PlatformioException): MESSAGE = "Unknown board type '%s'" +class UnknownFramework(PlatformioException): + + MESSAGE = "Unknown framework '%s'" + + class UnknownPackage(PlatformioException): MESSAGE = "Detected unknown package '%s'" diff --git a/platformio/platforms/atmelavr.py b/platformio/platforms/atmelavr.py index f8b34bb9..6ca3e0f4 100644 --- a/platformio/platforms/atmelavr.py +++ b/platformio/platforms/atmelavr.py @@ -8,8 +8,13 @@ from platformio.util import get_boards class AtmelavrPlatform(BasePlatform): """ - An embedded platform for Atmel AVR microcontrollers - (with Arduino Framework) + Atmel AVR 8- and 32-bit MCUs deliver a unique combination of + performance, power efficiency and design flexibility. Optimized to + speed time to market-and easily adapt to new ones-they are based on + the industrys most code-efficient architecture for C and assembly + programming. + + http://www.atmel.com/products/microcontrollers/avr/default.aspx """ PACKAGES = { diff --git a/platformio/platforms/atmelsam.py b/platformio/platforms/atmelsam.py index f5913ce9..aacb03a1 100644 --- a/platformio/platforms/atmelsam.py +++ b/platformio/platforms/atmelsam.py @@ -7,8 +7,11 @@ from platformio.platforms.base import BasePlatform class AtmelsamPlatform(BasePlatform): """ - An embedded platform for Atmel SAM microcontrollers - (with Arduino Framework) + Atmel | SMART offers Flash- based ARM products based on the ARM + Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB + to 2MB of Flash including a rich peripheral and feature mix. + + http://www.atmel.com/products/microcontrollers/arm/default.aspx """ PACKAGES = { diff --git a/platformio/platforms/base.py b/platformio/platforms/base.py index dcfef9d9..869f0e15 100644 --- a/platformio/platforms/base.py +++ b/platformio/platforms/base.py @@ -12,6 +12,86 @@ from platformio import exception, util from platformio.app import get_state_item, set_state_item from platformio.pkgmanager import PackageManager +PLATFORM_PACKAGES = { + + "framework-arduinoavr": [ + ("Arduino Wiring-based Framework (AVR Core, 1.6)", + "http://arduino.cc/en/Reference/HomePage") + ], + "framework-arduinosam": [ + ("Arduino Wiring-based Framework (SAM Core, 1.6)", + "http://arduino.cc/en/Reference/HomePage") + ], + "framework-arduinoteensy": [ + ("Arduino Wiring-based Framework", + "http://arduino.cc/en/Reference/HomePage") + ], + "framework-energiamsp430": [ + ("Energia Wiring-based Framework (MSP430 Core)", + "http://energia.nu/reference/") + ], + "framework-energiativa": [ + ("Energia Wiring-based Framework (LM4F Core)", + "http://energia.nu/reference/") + ], + "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") + ], + "framework-spl": [ + ("Standard Peripheral Library for STM32 MCUs", + "http://www.st.com" + "/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890") + ], + "framework-opencm3": [ + ("libOpenCM3 Framework", "http://www.libopencm3.org/") + ], + "framework-mbed": [ + ("mbed Framework", "http://mbed.org") + ], + "ldscripts": [ + ("Linker Scripts", + "https://sourceware.org/binutils/docs/ld/Scripts.html") + ], + "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/") + ], + "toolchain-gccarmnoneeabi": [ + ("gcc-arm-embedded", "https://launchpad.net/gcc-arm-embedded"), + ("GDB", "http://www.gnu.org/software/gdb/") + ], + "toolchain-timsp430": [ + ("msp-gcc", "http://sourceforge.net/projects/mspgcc/"), + ("GDB", "http://www.gnu.org/software/gdb/") + ], + "tool-avrdude": [ + ("AVRDUDE", "http://www.nongnu.org/avrdude/") + ], + "tool-micronucleus": [ + ("Micronucleus", "https://github.com/micronucleus/micronucleus") + ], + "tool-bossac": [ + ("BOSSA CLI", "https://sourceforge.net/projects/b-o-s-s-a/") + ], + "tool-stlink": [ + ("ST-Link", "https://github.com/texane/stlink") + ], + "tool-teensy": [ + ("Teensy Loader", "https://www.pjrc.com/teensy/loader.html") + ], + "tool-lm4flash": [ + ("Flash Programmer", "http://www.ti.com/tool/lmflashprogrammer") + ], + "tool-mspdebug": [ + ("MSPDebug", "http://mspdebug.sourceforge.net/") + ] +} + class PlatformFactory(object): diff --git a/platformio/platforms/freescalekinetis.py b/platformio/platforms/freescalekinetis.py new file mode 100644 index 00000000..61106fea --- /dev/null +++ b/platformio/platforms/freescalekinetis.py @@ -0,0 +1,28 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from platformio.platforms.base import BasePlatform + + +class FreescalekinetisPlatform(BasePlatform): + + """ + Freescale Kinetis Microcontrollers is family of multiple hardware- and + software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU + series. Kinetis MCUs offer exceptional low-power performance, + scalability and feature integration. + + http://www.freescale.com/webapp/sps/site/homepage.jsp?code=KINETIS + """ + + PACKAGES = { + + "toolchain-gccarmnoneeabi": { + "alias": "toolchain", + "default": True + }, + + "framework-mbed": { + "default": True + } + } diff --git a/platformio/platforms/nordicnrf51.py b/platformio/platforms/nordicnrf51.py new file mode 100644 index 00000000..975b4ce4 --- /dev/null +++ b/platformio/platforms/nordicnrf51.py @@ -0,0 +1,30 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from platformio.platforms.base import BasePlatform + + +class Nordicnrf51Platform(BasePlatform): + + """ + 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. + + https://www.nordicsemi.com/eng/Products/nRF51-Series-SoC + """ + + PACKAGES = { + + "toolchain-gccarmnoneeabi": { + "alias": "toolchain", + "default": True + }, + + "framework-mbed": { + "default": True + } + } diff --git a/platformio/platforms/nxplpc.py b/platformio/platforms/nxplpc.py new file mode 100644 index 00000000..4da1334f --- /dev/null +++ b/platformio/platforms/nxplpc.py @@ -0,0 +1,30 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from platformio.platforms.base import BasePlatform + + +class NxplpcPlatform(BasePlatform): + + """ + The NXP LPC is a family of 32-bit microcontroller integrated circuits + by NXP Semiconductors. The LPC chips are grouped into related series + that are based around the same 32-bit ARM processor core, such as the + Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each + microcontroller consists of the processor core, static RAM memory, + flash memory, debugging interface, and various peripherals. + + http://www.nxp.com/products/microcontrollers/ + """ + + PACKAGES = { + + "toolchain-gccarmnoneeabi": { + "alias": "toolchain", + "default": True + }, + + "framework-mbed": { + "default": True + } + } diff --git a/platformio/platforms/stm32.py b/platformio/platforms/ststm32.py similarity index 54% rename from platformio/platforms/stm32.py rename to platformio/platforms/ststm32.py index 63607d95..a33947f1 100644 --- a/platformio/platforms/stm32.py +++ b/platformio/platforms/ststm32.py @@ -4,10 +4,17 @@ from platformio.platforms.base import BasePlatform -class Stm32Platform(BasePlatform): +class Ststm32Platform(BasePlatform): """ - An embedded platform for STMicroelectronics ARM microcontrollers + 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. + + http://www.st.com/web/en/catalog/mmc/FM141/SC1169?sc=stm32 """ PACKAGES = { @@ -36,5 +43,9 @@ class Stm32Platform(BasePlatform): "framework-opencm3": { "default": True + }, + + "framework-mbed": { + "default": True } } diff --git a/platformio/platforms/teensy.py b/platformio/platforms/teensy.py index 8e0f2179..648c1c3f 100644 --- a/platformio/platforms/teensy.py +++ b/platformio/platforms/teensy.py @@ -8,8 +8,13 @@ from platformio.util import get_boards class TeensyPlatform(BasePlatform): """ - An embedded platform for Teensy boards - (with Arduino Framework) + 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 "Mini-B" USB cable and a PC or Macintosh with + a USB port. + + https://www.pjrc.com/teensy """ PACKAGES = { diff --git a/platformio/platforms/timsp430.py b/platformio/platforms/timsp430.py index ae17a121..a15b5fd1 100644 --- a/platformio/platforms/timsp430.py +++ b/platformio/platforms/timsp430.py @@ -5,9 +5,14 @@ from platformio.platforms.base import BasePlatform class Timsp430Platform(BasePlatform): + """ - An embedded platform for TI MSP430 microcontrollers - (with Energia Framework) + MSP430 microcontrollers (MCUs) from Texas Instruments (TI) + are 16-bit, RISC-based, mixed-signal processors designed for ultra-low + power. These MCUs offer the lowest power consumption and the perfect + mix of integrated peripherals for thousands of applications. + + http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/overview.page """ PACKAGES = { diff --git a/platformio/platforms/titiva.py b/platformio/platforms/titiva.py index 657cffa9..ed14d2da 100644 --- a/platformio/platforms/titiva.py +++ b/platformio/platforms/titiva.py @@ -7,8 +7,12 @@ from platformio.platforms.base import BasePlatform class TitivaPlatform(BasePlatform): """ - An embedded platform for TI TIVA C ARM microcontrollers - (with Energia and OpenCM3 Frameworks) + Texas Instruments TM4C12x MCUs offer the industrys most popular + ARM Cortex-M4 core with scalable memory and package options, unparalleled + connectivity peripherals, advanced application functions, industry-leading + analog integration, and extensive software solutions. + + http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/c2000_performance/control_automation/tm4c12x/overview.page """ PACKAGES = { diff --git a/platformio/util.py b/platformio/util.py index b4f0473c..2965e020 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -3,8 +3,10 @@ import json import os +import re import subprocess -from os.path import abspath, dirname, expanduser, isdir, isfile, join, realpath +from os.path import (abspath, basename, dirname, expanduser, isdir, isfile, + join, realpath) from platform import system, uname from threading import Thread @@ -173,7 +175,30 @@ def get_serialports(): from serial.tools.list_ports_posix import comports else: raise exception.GetSerialPortsError(os.name) - return[{"port": p, "description": d, "hwid": h} for p, d, h in comports()] + return [{"port": p, "description": d, "hwid": h} for p, d, h in comports()] + + +def get_logicaldisks(): + disks = [] + if system() == "Windows": + result = exec_command( + ["wmic", "logicaldisk", "get", "name,VolumeName"]).get("out") + disknamere = re.compile(r"^([A-Z]{1}\:)\s*(\S+)?") + for line in result.split("\n"): + match = disknamere.match(line.strip()) + if not match: + continue + disks.append({"disk": match.group(1), "name": match.group(2)}) + else: + result = exec_command(["df"]).get("out") + disknamere = re.compile(r"\d+\%\s+([a-z\d\-_/]+)$", flags=re.I) + for line in result.split("\n"): + match = disknamere.search(line.strip()) + if not match: + continue + disks.append({"disk": match.group(1), + "name": basename(match.group(1))}) + return disks def get_api_result(path, params=None, data=None): @@ -232,3 +257,40 @@ def get_boards(type_=None): if type_ not in boards: raise exception.UnknownBoard(type_) return boards[type_] + + +def get_frameworks(type_=None): + frameworks = {} + + try: + frameworks = get_frameworks._cache # pylint: disable=W0212 + except AttributeError: + frameworks_path = join( + get_source_dir(), "builder", "scripts", "frameworks") + + frameworks_list = [f[:-3] for f in os.listdir(frameworks_path) + if not f.startswith("__") and f.endswith(".py")] + for _type in frameworks_list: + script_path = join(frameworks_path, "%s.py" % _type) + with open(script_path) as f: + fcontent = f.read() + assert '"""' in fcontent + _doc_start = fcontent.index('"""') + 3 + fdoc = fcontent[ + _doc_start:fcontent.index('"""', _doc_start)].strip() + description = " ".join(fdoc.split("\n")[:-2]) + frameworks[_type] = { + "description": description, + "url": fdoc.split("\n")[-1].strip(), + "script": script_path + } + get_frameworks._cache = frameworks # pylint: disable=W0212 + + if type_ is None: + return frameworks + else: + if type_ not in frameworks: + raise exception.UnknownFramework(type_) + return frameworks[type_] + + return frameworks diff --git a/scripts/docspregen.py b/scripts/docspregen.py new file mode 100644 index 00000000..36e48579 --- /dev/null +++ b/scripts/docspregen.py @@ -0,0 +1,191 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from os.path import dirname, join, realpath +from sys import path +from sys import exit as sys_exit +from math import ceil +path.append("..") +from platformio import util +from platformio.platforms.base import PLATFORM_PACKAGES, PlatformFactory + + +def generate_boards(boards): + + def _round_memory_size(size): + size = ceil(size) + for b in (64, 32, 16, 8, 4, 2, 1): + if b < size: + return int(ceil(size / b) * b) + assert NotImplemented() + + lines = [] + + lines.append(""" +.. list-table:: + :header-rows: 1 + + * - Type ``board`` + - Name + - Microcontroller + - Frequency + - Flash + - RAM""") + + for board in sorted(boards): + for type_, data in board.iteritems(): + assert type_ in util.get_boards() + board_ram = float(data['upload']['maximum_ram_size']) / 1024 + lines.append(""" + * - ``{type}`` + - `{name} <{url}>`_ + - {mcu} + - {f_cpu:d} MHz + - {rom} Kb + - {ram} Kb""".format( + type=type_, + name=data['name'], + url=data['url'], + mcu=data['build']['mcu'].upper(), + f_cpu=int((data['build']['f_cpu'][:-1])) / 1000000, + ram=int(board_ram) if board_ram % 1 == 0 else board_ram, + rom=_round_memory_size( + data['upload']['maximum_size'] / 1024) + )) + + return "\n".join(lines + [""]) + + +def generate_packages(packages): + lines = [] + lines.append(""".. list-table:: + :header-rows: 1 + + * - Name + - Contents""") + for type_, data in packages.iteritems(): + assert type_ in PLATFORM_PACKAGES + contitems = [ + "`%s <%s>`_" % (name, url) + for name, url in PLATFORM_PACKAGES[type_] + ] + lines.append(""" + * - ``{type_}`` + - {contents}""".format( + type_=type_, + contents=", ".join(contitems))) + + lines.append(""" +.. warning:: + **Linux Users:** Don't forget to install "udev" rules file + `99-platformio-udev.rules `_ (an instruction is located in the file). + +""") + return "\n".join(lines) + + +def generate_platform(name): + print "Processing platform: %s" % name + lines = [] + + lines.append(".. _platform_%s:" % name) + lines.append("") + + _title = "Platform ``%s``" % name + lines.append(_title) + lines.append("=" * len(_title)) + + p = PlatformFactory.newPlatform(name) + lines.extend([l.strip() for l in p.__doc__.split("\n")]) + + lines.append(""".. contents::""") + lines.append(""" +Packages +-------- +""") + lines.append(generate_packages(p.get_packages())) + lines.append(""" +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by + horizontal. +""") + + vendors = {} + for board, data in util.get_boards().items(): + platform = data['platform'] + vendor = data['vendor'] + if name in platform: + if vendor in vendors: + vendors[vendor].append({board: data}) + else: + vendors[vendor] = [{board: data}] + for vendor, boards in sorted(vendors.iteritems()): + lines.append(str(vendor)) + lines.append("~" * len(vendor)) + lines.append(generate_boards(boards)) + return "\n".join(lines) + + +def update_platform_docs(): + for name in PlatformFactory.get_platforms().keys(): + rst_path = join( + dirname(realpath(__file__)), "..", "docs", "platforms", "%s.rst" % name) + with open(rst_path, "w") as f: + f.write(generate_platform(name)) + + +def generate_framework(name, data): + print "Processing framework: %s" % name + lines = [] + + lines.append(".. _framework_%s:" % name) + lines.append("") + + _title = "Framework ``%s``" % name + lines.append(_title) + lines.append("=" * len(_title)) + lines.append(data['description']) + lines.append("""\n.. contents::""") + lines.append(""" +Boards +------ + +.. note:: + * You can list pre-configured boards by :ref:`cmd_boards` command + * For more detailed ``board`` information please scroll tables below by horizontal. +""") + + vendors = {} + for board, data in util.get_boards().items(): + frameworks = data['frameworks'] + vendor = data['vendor'] + if name in frameworks: + if vendor in vendors: + vendors[vendor].append({board: data}) + else: + vendors[vendor] = [{board: data}] + for vendor, boards in sorted(vendors.iteritems()): + lines.append(str(vendor)) + lines.append("~" * len(vendor)) + lines.append(generate_boards(boards)) + return "\n".join(lines) + + +def update_framework_docs(): + for name, data in util.get_frameworks().items(): + rst_path = join(util.get_source_dir(), "..", "docs", "frameworks", + "%s.rst" % name) + with open(rst_path, "w") as f: + f.write(generate_framework(name, data)) + + +def main(): + update_platform_docs() + update_framework_docs() + +if __name__ == "__main__": + sys_exit(main()) diff --git a/scripts/mbed_to_package.py b/scripts/mbed_to_package.py new file mode 100644 index 00000000..e56d0f05 --- /dev/null +++ b/scripts/mbed_to_package.py @@ -0,0 +1,64 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from os import getcwd, mkdir, makedirs, listdir +from os.path import isfile, isdir, join +from shutil import copy2, rmtree, copytree +from sys import exit as sys_exit +from sys import path +import zipfile + + +MBED_DIR = "/home/valeros/mbed-master" +OUTPUT_DIR = "/home/valeros/mbed-framework" +CORE_DIR = join(OUTPUT_DIR, "core") +VARIANT_DIR = join(OUTPUT_DIR, "variant") + +path.append("..") +path.append(MBED_DIR) +from workspace_tools.export import gccarm +from platformio.util import exec_command + + +def _unzip_generated_file(mcu): + filename = join( + MBED_DIR, "build", "export", "MBED_A1_emblocks_%s.zip" % mcu) + variant_dir = join(VARIANT_DIR, mcu) + if isfile(filename): + print "Processing board: %s" % mcu + with zipfile.ZipFile(filename) as zfile: + mkdir(variant_dir) + file_data = zfile.read("MBED_A1/MBED_A1.eix") + with open(join(variant_dir, "%s.eix" % mcu), "w") as f: + f.write(file_data) + else: + print "Warning! Skipped board: %s" % mcu + + +def main(): + print "Starting..." + if isdir(OUTPUT_DIR): + rmtree(OUTPUT_DIR) + print "Delete previous framework dir" + makedirs(VARIANT_DIR) + # copy MBED library + mbedlib_dir = join(MBED_DIR, "libraries", "mbed") + for item in listdir(mbedlib_dir): + src = join(mbedlib_dir, item) + dst = join(CORE_DIR, item) + if isdir(src): + copytree(src, dst) + else: + copy2(src, dst) + # make .eix files + for mcu in set(gccarm.GccArm.TARGETS): + exec_command( + ["python", join(MBED_DIR, "workspace_tools", "project.py"), + "--mcu", mcu, "-i", "emblocks", "-p", "0"], cwd=getcwd() + ) + _unzip_generated_file(mcu) + print "Complete!" + + +if __name__ == "__main__": + sys_exit(main()) diff --git a/tests/commands/test_boards.py b/tests/commands/test_boards.py index 3dfd1a11..dfeef591 100644 --- a/tests/commands/test_boards.py +++ b/tests/commands/test_boards.py @@ -44,7 +44,7 @@ def test_board_options(platformio_setup, clirunner, validate_cliresult): def test_board_ldscripts(platformio_setup, clirunner, validate_cliresult): result = clirunner.invoke( install_cli, [ - "stm32", + "ststm32", "--skip-default-package", "--with-package=ldscripts" ]) diff --git a/tests/commands/test_init.py b/tests/commands/test_init.py index 3dd9e318..0d816ff2 100644 --- a/tests/commands/test_init.py +++ b/tests/commands/test_init.py @@ -41,7 +41,7 @@ def test_init_special_board(platformio_setup, clirunner, validate_cliresult): config = util.get_project_config() expected_result = [ ("platform", str(uno['platform'])), - ("framework", str(uno['framework'])), + ("framework", str(uno['frameworks'][0])), ("board", "uno"), ("targets", "upload") ]