forked from platformio/platformio-core
Show device system information (MCU, Frequency, RAM, Flash, Debugging tools) in a build log
This commit is contained in:
@ -7,7 +7,9 @@ PlatformIO 3.0
|
|||||||
3.5.2 (2018-??-??)
|
3.5.2 (2018-??-??)
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
* Show all available upload protocols before firmware uploading
|
* Show device system information (MCU, Frequency, RAM, Flash, Debugging tools)
|
||||||
|
in a build log
|
||||||
|
* Show all available upload protocols before firmware uploading in a build log
|
||||||
* Handle "os.mbed.com" URL as a Mercurial (hg) repository
|
* Handle "os.mbed.com" URL as a Mercurial (hg) repository
|
||||||
* Improved support for old mbed libraries without manifest
|
* Improved support for old mbed libraries without manifest
|
||||||
* Fixed issue with duplicated "include" records when generating data for IDE
|
* Fixed issue with duplicated "include" records when generating data for IDE
|
||||||
|
2
docs
2
docs
Submodule docs updated: a65d042693...ec9ec10dcd
@ -184,7 +184,8 @@ if "idedata" in COMMAND_LINE_TARGETS:
|
|||||||
env.Exit(1)
|
env.Exit(1)
|
||||||
|
|
||||||
|
|
||||||
def print_upload_protocols_info(source, target, env):
|
def print_upload_protocols_info( # pylint: disable=unused-argument
|
||||||
|
source, target, _):
|
||||||
selected = env.subst("$UPLOAD_PROTOCOL")
|
selected = env.subst("$UPLOAD_PROTOCOL")
|
||||||
available = env.BoardConfig().get("upload", {}).get(
|
available = env.BoardConfig().get("upload", {}).get(
|
||||||
"protocols", [selected])
|
"protocols", [selected])
|
||||||
|
@ -41,8 +41,9 @@ def PioPlatform(env):
|
|||||||
def BoardConfig(env, board=None):
|
def BoardConfig(env, board=None):
|
||||||
p = initPioPlatform(env['PLATFORM_MANIFEST'])
|
p = initPioPlatform(env['PLATFORM_MANIFEST'])
|
||||||
try:
|
try:
|
||||||
assert env.get("BOARD", board), "BoardConfig: Board is not defined"
|
board = board or env.get("BOARD")
|
||||||
config = p.board_config(board if board else env.get("BOARD"))
|
assert board, "BoardConfig: Board is not defined"
|
||||||
|
config = p.board_config(board)
|
||||||
except (AssertionError, exception.UnknownBoard) as e:
|
except (AssertionError, exception.UnknownBoard) as e:
|
||||||
sys.stderr.write("Error: %s\n" % str(e))
|
sys.stderr.write("Error: %s\n" % str(e))
|
||||||
env.Exit(1)
|
env.Exit(1)
|
||||||
@ -97,6 +98,50 @@ def LoadPioPlatform(env, variables):
|
|||||||
env.Replace(LDSCRIPT_PATH=board_config.get("build.ldscript"))
|
env.Replace(LDSCRIPT_PATH=board_config.get("build.ldscript"))
|
||||||
|
|
||||||
|
|
||||||
|
def PrintSystemInfo(env):
|
||||||
|
data = []
|
||||||
|
debug_tools = None
|
||||||
|
mcu = env.subst("$BOARD_MCU")
|
||||||
|
f_cpu = env.subst("$BOARD_F_CPU")
|
||||||
|
if mcu:
|
||||||
|
data.append(mcu.upper())
|
||||||
|
if f_cpu:
|
||||||
|
f_cpu = int("".join([c for c in str(f_cpu) if c.isdigit()]))
|
||||||
|
data.append("%dMHz" % (f_cpu / 1000000))
|
||||||
|
|
||||||
|
if "BOARD" in env:
|
||||||
|
board_config = env.BoardConfig()
|
||||||
|
debug_tools = board_config.get("debug", {}).get("tools")
|
||||||
|
ram = board_config.get("upload", {}).get("maximum_ram_size")
|
||||||
|
flash = board_config.get("upload", {}).get("maximum_size")
|
||||||
|
for (key, value) in (("RAM", ram), ("Flash", flash)):
|
||||||
|
if not value:
|
||||||
|
continue
|
||||||
|
data.append("%s/%s" % (key, util.format_filesize(value)))
|
||||||
|
|
||||||
|
if data:
|
||||||
|
print "System: %s" % " ".join(data)
|
||||||
|
|
||||||
|
# Debugging
|
||||||
|
if not debug_tools:
|
||||||
|
return
|
||||||
|
|
||||||
|
data = []
|
||||||
|
onboard = []
|
||||||
|
external = []
|
||||||
|
for key, value in debug_tools.items():
|
||||||
|
if value.get("onboard"):
|
||||||
|
onboard.append(key)
|
||||||
|
else:
|
||||||
|
external.append(key)
|
||||||
|
if onboard:
|
||||||
|
data.append("ON-BORD(%s)" % ", ".join(sorted(onboard)))
|
||||||
|
if external:
|
||||||
|
data.append("EXTERNAL(%s)" % ", ".join(sorted(external)))
|
||||||
|
|
||||||
|
print "Debug: %s" % " ".join(data)
|
||||||
|
|
||||||
|
|
||||||
def exists(_):
|
def exists(_):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -106,4 +151,5 @@ def generate(env):
|
|||||||
env.AddMethod(BoardConfig)
|
env.AddMethod(BoardConfig)
|
||||||
env.AddMethod(GetFrameworkScript)
|
env.AddMethod(GetFrameworkScript)
|
||||||
env.AddMethod(LoadPioPlatform)
|
env.AddMethod(LoadPioPlatform)
|
||||||
|
env.AddMethod(PrintSystemInfo)
|
||||||
return env
|
return env
|
||||||
|
@ -42,6 +42,8 @@ def BuildProgram(env):
|
|||||||
|
|
||||||
_append_pio_macros()
|
_append_pio_macros()
|
||||||
|
|
||||||
|
env.PrintSystemInfo()
|
||||||
|
|
||||||
# fix ASM handling under non-casitive OS
|
# fix ASM handling under non-casitive OS
|
||||||
if not case_sensitive_suffixes(".s", ".S"):
|
if not case_sensitive_suffixes(".s", ".S"):
|
||||||
env.Replace(AS="$CC", ASCOM="$ASPPCOM")
|
env.Replace(AS="$CC", ASCOM="$ASPPCOM")
|
||||||
|
@ -16,6 +16,7 @@ import json
|
|||||||
|
|
||||||
import click
|
import click
|
||||||
|
|
||||||
|
from platformio import util
|
||||||
from platformio.managers.platform import PlatformManager
|
from platformio.managers.platform import PlatformManager
|
||||||
|
|
||||||
|
|
||||||
@ -60,22 +61,13 @@ def print_boards(boards):
|
|||||||
click.echo("-" * terminal_width)
|
click.echo("-" * terminal_width)
|
||||||
|
|
||||||
for board in boards:
|
for board in boards:
|
||||||
ram_size = board['ram']
|
|
||||||
if ram_size >= 1024:
|
|
||||||
if ram_size % 1024:
|
|
||||||
ram_size = "%.1fkB" % (ram_size / 1024.0)
|
|
||||||
else:
|
|
||||||
ram_size = "%dkB" % (ram_size / 1024)
|
|
||||||
else:
|
|
||||||
ram_size = "%dB" % ram_size
|
|
||||||
|
|
||||||
click.echo(
|
click.echo(
|
||||||
BOARDLIST_TPL.format(
|
BOARDLIST_TPL.format(
|
||||||
type=click.style(board['id'], fg="cyan"),
|
type=click.style(board['id'], fg="cyan"),
|
||||||
mcu=board['mcu'],
|
mcu=board['mcu'],
|
||||||
frequency="%dMhz" % (board['fcpu'] / 1000000),
|
frequency="%dMHz" % (board['fcpu'] / 1000000),
|
||||||
flash="%dkB" % (board['rom'] / 1024),
|
flash=util.format_filesize(board['rom']),
|
||||||
ram=ram_size,
|
ram=util.format_filesize(board['ram']),
|
||||||
name=board['name']))
|
name=board['name']))
|
||||||
|
|
||||||
|
|
||||||
|
@ -684,9 +684,11 @@ class PlatformBoardConfig(object):
|
|||||||
"mcu":
|
"mcu":
|
||||||
self._manifest.get("build", {}).get("mcu", "").upper(),
|
self._manifest.get("build", {}).get("mcu", "").upper(),
|
||||||
"fcpu":
|
"fcpu":
|
||||||
int(
|
int("".join([
|
||||||
re.sub(r"[^\d]+", "",
|
c for c in str(
|
||||||
self._manifest.get("build", {}).get("f_cpu", "0L"))),
|
self._manifest.get("build", {}).get("f_cpu", "0L"))
|
||||||
|
if c.isdigit()
|
||||||
|
])),
|
||||||
"ram":
|
"ram":
|
||||||
self._manifest.get("upload", {}).get("maximum_ram_size", 0),
|
self._manifest.get("upload", {}).get("maximum_ram_size", 0),
|
||||||
"rom":
|
"rom":
|
||||||
|
@ -743,6 +743,23 @@ def parse_date(datestr):
|
|||||||
return time.strptime(datestr)
|
return time.strptime(datestr)
|
||||||
|
|
||||||
|
|
||||||
|
def format_filesize(filesize):
|
||||||
|
base = 1024
|
||||||
|
unit = 0
|
||||||
|
suffix = "B"
|
||||||
|
filesize = float(filesize)
|
||||||
|
if filesize < base:
|
||||||
|
return "%d%s" % (filesize, suffix)
|
||||||
|
for i, suffix in enumerate("KMGTPEZY"):
|
||||||
|
unit = base**(i + 2)
|
||||||
|
if filesize >= unit:
|
||||||
|
continue
|
||||||
|
if filesize % (base**(i + 1)):
|
||||||
|
return "%.2f%s" % ((base * filesize / unit), suffix)
|
||||||
|
break
|
||||||
|
return "%d%s" % ((base * filesize / unit), suffix)
|
||||||
|
|
||||||
|
|
||||||
def rmtree_(path):
|
def rmtree_(path):
|
||||||
|
|
||||||
def _onerror(_, name, __):
|
def _onerror(_, name, __):
|
||||||
|
Reference in New Issue
Block a user