Conversation
Signed-off-by: Gilberto Conti <g.conti@arduino.cc>
Arduino_RouterBridge 0.4.3 fixes maximum buffer size for udp and tcp client implementations
Squash change that includes PRs arduino#482 arduino#483 arduino#484 arduino#485 arduino#486. Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Force a version update of the xz dependency to v0.5.15 in the go.mod
file of the sync-zephyr-artifacts tool to fix the following issue with
v0.5.14 when building on darwin/arm64:
lzma/reader.go:33:15: cannot use 1 << 31 (untyped int constant
2147483648) as int value in assignment
(overflows)
See ulikunitz/xz#65 .
unoq: silence bogus error if loader/sketch needs reflashing
Needed for automatic loader updates on USB-based boards.
tools: require arduino/scripting-tools 0.0.7
docs: correct typos and improve clarity in documentation files
json: unoq: update Arduino_RouterBridge to 0.4.3
Escape double quotes and backslashes everywhere in the JSON output of get_board_details.sh to ensure that the output is a valid JSON.
Rewrite get_core_version.sh to properly separate each version component during processing. Export a Zephyr-compatible VERSION file if a filename is provided as the first argument.
Add the possibility of writing to platform.local.txt instead of boards.local.txt when the board variable is not set. This allows for global configuration settings that are not specific to any particular board to be saved.
The build.sh script now saves the build version to loader/VERSION (so it is picked up by the Zephyr build system) and updates the version field in both platform.local.txt and boards.local.txt. To ensure multiple boards share the same version, the build_all.sh script exports a global PINNED_CORE_VERSION environment variable so that get_core_version.sh can use it instead of generating a new version for each run.
This is step 1. for automatic flash of the loader if the onboard version is different from the one shipped with the core: passing the current build version in the USB descriptor as iConfig, so that it is available on the host side to check if the loader needs to be reflashed. For the legacy USB stack, the version is passed to USB drivers directly via the Kconfig option CONFIG_USB_CONFIGURATION_STRING_DESC. Boards using the new USB stack, like the Portenta C33, set this value via the USBD_DESC_CONFIG_DEFINE macro instead.
Add generic 'upload.artifacts.loader' and 'upload.artifacts.sketch' variables to platform.txt to allow for cleaner upload patterns and explicit file dependencies. Remove 'stm32flash' and 'adb' upload patterns, as they are not used by any of the supported boards. Also remove any '.erase' patterns, as all of them were empty anyway.
tracks https://github.com/arduino/arduino-renesas-bootloader/tree/zephyr_alt , allows consecutive uploads (loader+sketch)
Switching to this core requires an updated bootloader. Since it will be flashed only if needed, the procedure is now: * Double click reset to enter bootloader mode * Burn bootloader * Wait until the blue led starts flashing * Double click reset to enter bootloader mode again * Upload sketch
For boards that have soft USB, use the new 'scripting-tools' tool to
check the USB configuration string reported by the board. If it does not
match the expected version, reflash the bootloader before uploading the
sketch.
Refactor loader and sketch commands so they can be reused in both the
bootloader and upload patterns. Note that {loader.cmd} should leave the
target waiting for the sketch upload, and additional arguments are
passed to the loader command depending on whether the sketch will be
flashed in the same session or not.
Convert the bossac tool to use the new loader/sketch commands, and
remove the old upload/bootloader patterns.
Requires a new version of rp2040tool that: - includes the option to skip the final RESET of the CPU - accepts .uf2 files without always adding the extension Add missing artifact with the new version.
usb: add automatic loader reflash (v2)
Bootloader VID/PID and upload/bootloader interfaces are not used if the upload tool is not DFU, so remove those extra fields.
- nicla_vision: 0x005b was copied from portenta H7 - portentac33: add bootloader USB information - ek_ra8d1: use VID/PID from Renesas bootloader mode - frdm_mcxn947, frdm_rw612: set open source VID/PIDs
- Remove redundant legacy <board>.vid/pid entries (in IDE 2.x they are
used as a fallback for when the new <board>.upload_port.0.vid/pid
for pluggable discovery aren't defined).
- To minimize the repetitions, define a set of default values in
platform.txt that can be overridden by the boards:
- {bootloader.vid/pid} is set to {upload_port.0.vid/pid}, for boards
that do not switch to a different state after the connection
- {upload.vid/pid} is set to {bootloader.vid/pid}, because that is the
most common case where flashing is done by the bootloader.
This requires boards to only provide the upload_port.0.vid/pid values,
and optionally override the {bootloader.pid} values if it differs.
- Remove entries that duplicate the above defaults.
boards: fix USB IDs
Enable CONFIG_DYNAMIC_THREAD (+ its required CONFIG_THREAD_STACK_INFO dependency) with CONFIG_DYNAMIC_THREAD_ALLOC=y and no static pool, so runtime thread stacks (k_thread_stack_alloc) are allocated from the system heap (CONFIG_HEAP_MEM_POOL_SIZE) rather than a fixed build-time pool.
Freshen up the README to reflect the current state of the project and remove outdated information. Updated instructions for installation, first use, and troubleshooting. Added acknowledgments for contributors.
Arduino_LED_Matrix: add missing include guard
extra/build.sh: Fix macOS build.
Signed-off-by: Daniele Cloralio <d.cloralio@arduino.cc>
libraries/WiFi: Add SerialBridge example.
Signed-off-by: Daniele Cloralio <d.cloralio@arduino.cc>
libraries: WiFi: add firmware version support
libraries: WiFi: add documentation for esp32 reflash
boards: giga/portentah7; change dmas to use 1 not 0
misc: export k_work cancel APIs and ignore generated files
README: update for 1.0.0 release
moved sketch header outside of loader main, in order to favor reuse of that code section, it can then be used by the sketch itself for ota Signed-off-by: Andrea Gilardoni <a.gilardoni@arduino.cc>
loader: sketch_header: moved sketch header
|
Memory usage change @ 8e2365f
Click for full report table
Click for full report CSV |
…g outliers Adds a tool that flattens ci_calc_size_reports.py's per-board JSON delta reports into per-sketch records and flags flash/RAM deltas that are statistical outliers (MAD-based) within their own board/link_mode's distribution. Outliers are computed per board rather than across a pooled global distribution, since boards are not comparable to each other (each has its own typical delta from board-specific code paths) and pooling them would hide genuine per-board regressions behind cross-board noise. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
pillo79
force-pushed
the
pr-delta-calc
branch
3 times, most recently
from
September 22, 2026 14:54
387ef88 to
9c26801
Compare
Adds per-board delta summaries (min/mean/median/max) and cross-board trend reporting for sketches already flagged as outliers. Introduces MIN_DELTA (a general "is this delta notable" threshold, not tied to any particular output format) and _build_report_data(), which assembles every row set a report needs (board summary, flash/RAM outlier tables, outlier-sketch trend table) as plain Python values with no markup. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds the HTML rendering primitives (_Safe/_Cell wrapper types, _render_td, _html_table, _html_table_grouped for two-row grouped headers -- both replacing an empty table with a "none" message rather than rendering a table with no rows, _mono/_board_name/_bold_board_label for typewriter- font package and board names, _delta_cell for sign/threshold-based shading) and generate_html(), which wires them and _build_report_data()'s output into an actual page: an intro paragraph, a grouped per-board summary table (Flash/RAM x min/mean/median/max) with package/board rendered in a typewriter font, flash/RAM outlier tables, and the outlier-sketch cross-board trend table, with a "(top N of M)" heading suffix only when a table is actually truncated. Delta columns are shaded green/red/gray by sign and the MIN_DELTA threshold. Wires up --output-html in main(). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Render each metric's delta distribution as a bubble chart (one row per board/link_mode, bubble size = matching sketch count), embedded as inline SVG so the report stays a single self-contained file with no external assets or JavaScript. Boards below MIN_DELTA are left out of the plot and summarized in a companion table instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Deltas span a huge dynamic range (a handful of bytes up to tens of kilobytes) all on one linear axis, which crushes every point except the largest outliers into an unreadable cluster near the noise band. symlog (not plain log) since deltas can be negative or zero; every plotted point already clears MIN_DELTA, so the linear region just covers the (empty) noise band it's centered on without needing to render anything there. Adjust margins to fit the new axis scale. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Each bubble now shows board/link_mode, exact delta value, and sketch count (bubble size) on hover, via a native SVG <title> element -- the SVG equivalent of HTML's title="" attribute, rendered by the browser with no JavaScript. matplotlib has no per-point tooltip API, so this switches from one batched scatter() call for all points to one call per point, each with its own gid; matplotlib wraps a gid'd artist in <g id="...">...</g>, and _figure_to_inline_svg (already doing font-family/tspan post-processing on the raw SVG) inserts a <title> as that group's first child. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a Markdown renderer built on the same _build_report_data() output the HTML report already uses: a one-line count recap, the outlier-sketch cross-board trend table, the per-board summary filtered down to rows with at least one notable (>= MIN_DELTA) value, and one collapsed <details> section per package titled "Full per-board/link-mode summary for `<package>`" (package column dropped inside each, since it's constant within its own group). Package/board names are rendered in a typewriter font (backticks). Numeric delta columns are right-aligned, always signed (+/-), and values exceeding MIN_DELTA are bolded and prefixed with a small colored dot by sign (green negative, red positive) using nested <sub>/<sup> to shrink and vertically center it without inflating row height — GitHub is the only Markdown renderer this targets, so relying on that tag nesting is safe. Ignored deltas (within MIN_DELTA) get no dot, only the plain signed number. An empty table (e.g. no outliers found) renders as "_none_" instead of a header row with nothing under it. No charts (no Markdown equivalent for an embedded image with per-point styling), just plain GFM tables. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…port Adds two exhaustive reference sections: one <details> per board/link_mode listing every sketch's flash/RAM delta there, and one <details> per sketch listing every board/link_mode it was built for and its delta there. Each section is a native HTML accordion (<details name="...">) rather than one giant flat table (28 board groups + 61 sketch groups in the sample data) — opening one collapses any other open in the same named group, no JavaScript required. Board names use the report's usual bold-monospace style, sketch and package names use plain monospace, in both the details title and the table body. Per-board titles also carry the package name (constant within the table, but not otherwise implied by the board/link_mode alone) and a "- N sketches" / "- N boards" count of the hidden table's rows, so the collapsed summary is informative on its own. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reads head_sha/head_url from the report JSON's commit_hash/commit_url fields (all files in one CI run describe the same commit, so the first file found is representative) and adds --base-sha, since the reports themselves never record what baseline they were diffed against (ci_calc_size_reports.py only takes the baseline SHA as a transient CLI argument, it isn't persisted into the JSON). Both reports now open with "Commit <short-sha> vs base <short-sha>", each linked when a URL is available -- the base commit's URL is derived from the head commit's URL pattern (same repo), and either side falls back to "unknown" if not available. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Install matplotlib via apt-get in the verify-core step so that extra/ci_calc_size_trends.py can generate charts. Runs extra/ci_calc_size_trends.py against sketches-reports/ right after ci_calc_size_reports.py annotates it with deltas. The Markdown output is appended below the existing build summary in both the step summary and the PR comment that leave_pr_comment.yml already posts. The HTML report (charts included) is uploaded as its own size-trends-report artifact, and a link to it is appended to the body right after upload, once the artifact ID is known. The trends command is best-effort, matching how ci_calc_size_reports.py is already treated in this step, and the HTML upload/link are skipped cleanly (if-no-files-found: ignore, plus an artifact-id check on the link step) if generation fails for any reason. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
package_core.yml now generates and posts its own size trends summary (Markdown appended to the PR comment, full HTML linked as an artifact), making the separate arduino/report-size-deltas@v1.1.0-based comment on the sketches-reports artifact redundant duplicate output. Also drops the sketches-reports artifact upload in package_core.yml, since that workflow was its only consumer -- ci_calc_size_trends.py already reads the directory directly within the same job, no artifact round-trip needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
pillo79
force-pushed
the
pr-delta-calc
branch
from
September 23, 2026 10:18
9c26801 to
307b54c
Compare
For each plotted board/link_mode row, overlay a light-blue mean ± 1 standard deviation band (computed over every sketch on that board, not just the ones clearing MIN_DELTA) plus a vertical bar at the mean, so each row's typical spread is visible alongside the individual bubbles. The axis extent is still driven purely by the plotted bubble values, not by the sigma window, so a wide spread doesn't stretch the chart. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.