PlatformIO Core 5.1 π
Professional collaborative platform for embedded development
We are happy to announce the next release of PlatformIO Core with the boosted performance for PlatformIO Home, support for SCons 4.1, and the improved package management system!
Table of Contents
What is New
In this section, we are going to highlight the most important changes and features introduced in PlatformIO Core 5.1. Please visit PlatformIO 5.1.0 Release Notes for more detailed information.
PlatformIO Home
PlatformIO Home is a powerful, modern, and interactive user interface (UI) for PlatformIO collaborative platform. Itβs powered by PlatformIO Labsβ Modern UI Toolkit and contains the following key instruments:
- Project Management
- Library Management
- Development Platforms, frameworks, and boards Management
- Device Management (serial, logical, and multicast DNS services)
- Static Code Analysis
- Firmware File Explorer
- Firmware Memory Inspection
- Firmware Sections & Symbols Viewer.
PlatformIO Core 5.1 brings significantly boosted performance to PlatformIO Home by migrating the codebase to the pure Python 3 Asynchronous I/O stack. This approach solves previous issues caused by the Twisted engine that depends on operating system libraries and 3rd-party Python packages.
Build System
SCons 4.1
The PlatformIO Core 5.1 build engine has been upgraded to the latest SCons 4.1 - a next-generation software construction tool:
- Configuration files are Python scripts β use the power of a real programming language to solve build problems
- Built-in reliable and automatic dependency analysis
- Improved support for parallel builds
- Ability to share built files in a cache to speed up multiple builds.
Command-line character limitation
Operating systems have their own default command-line character limitations. Windows OS is limited to 8192 characters where most Unix OSes to 131072. These limitations lead to build issues caused by development frameworks that pass multiple βincludeβ flags or dependent libraries per one command.
PlatformIO Core 5.1 was switched to the SCons TempFileMunge that automatically handles long commands and moves flags to a temporary file.
Package Management
Starting with PlatformIO Core 5.1, the package management system does not cleanup unnecessary packages automatically. We had a lot of discussion around this case, and the best solution was to allow users to personally maintain PlatformIO System.
Hence, PlatformIO Core 5.1 introduces updated pio system prune command with new options:
--dry-run
option to show data that will be removed--core-packages
option to remove unnecessary core packages--platform-packages
option to remove unnecessary development platform packages
Please note that PlatformIO Core 5.1 will monitor PlatformIO installation and inform you about unnecessary data when their size on disk crosses a value set in check_prune_system_threshold setting. A default value is set to 1024Mb (1Gb).
To list unnecessary data without pruning, please use the following command β pio system prune --dry-run
.
Debugging
The initial debug adapter speed is an important setting that greatly affects the overall debugging experience. This new option will help users to more easily tune that value directly from their project configuration file regardless of what debug server is used. Here are some typical examples:
[env:custom_debug_speed_examples]
...
; fixed speed in kHz
debug_speed = 500
; automatic speed (only J-Link)
debug_speed = auto
; adaptive clocking instead of fixed JTAG speed (only J-Link)
debug_speed = adaptive
Please note that not all dev-platforms support this feature at the moment, but weβll gradually implement this functionality in all eligible platforms. Stay tuned!
Upgrade
- PlatformIO IDE: Left Sidebar > PlatformIO (icon) > Quick Access > Upgrade PlatformIO Core
- Terminal: Please run
pio upgrade
command in terminal.
Stay in touch with us
Stay tuned to this blog or follow us on LinkedIn and Twitter @PlatformIO_Org to keep up to date with the latest news, articles and tips!