Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
859c098
Fix nested comment warning in RX GCC ports (#550)
francdoc Jun 16, 2026
b880ffe
Fixed SMP execution profile total getters (#553)
fdesbiens Jun 22, 2026
32a68cc
Fixed private-timer timestamp issue in several ports (A5, A7, A9, R8)…
fdesbiens Jun 22, 2026
2dfe5ac
Fixed ARMv8 SMP time sources (#555)
fdesbiens Jun 22, 2026
d9e7dfe
Add SysTick counter reset in Cortex-M ports (#561)
hefanbo Jun 24, 2026
3fcfb4e
Updated Cortex-M BASEPRI zero immediates (#564)
fdesbiens Jun 29, 2026
a33f6ef
Updated Cortex-R4 Thumb bit immediates (#565)
fdesbiens Jun 29, 2026
d2de89d
Merge remote-tracking branch 'origin/master' into dev
fdesbiens Jul 22, 2026
92ce075
Marked txm_module_object_deallocate as deprecated (#559)
fdesbiens Jul 27, 2026
190c4d6
Flagged txm_module_object_pointer_get as deprecated (#562)
fdesbiens Jul 27, 2026
2baae7c
Fixed VFP issues on Cortex-R4 and R5 ports (#578)
fdesbiens Aug 6, 2026
f84dd3d
Added Cortex-R52 port with Armv8-R AEM FVP example build (#579)
fdesbiens Aug 8, 2026
bd8d30f
Fixed code_buffer leak in the module converter utilities (#581)
fdesbiens Aug 8, 2026
2b0e4e4
Hardened the module converter utilities against malformed input (#580)
fdesbiens Aug 8, 2026
5481fc7
Fixed the resource leaks on the xQueueCreate error paths (#582)
fdesbiens Aug 9, 2026
f3df5f9
Added a regression suite for the FreeRTOS compatibility layer (#583)
fdesbiens Aug 9, 2026
cfed1d8
Fixed the kernel object leaks on the static creation error paths (#584)
fdesbiens Aug 9, 2026
cbdf924
Removed the duplicated function body in the Cortex-M4 AC6 port (#589)
fdesbiens Aug 9, 2026
eb4ec4e
Restored ports_arch as the source of truth for the Cortex-M ports (#590)
fdesbiens Aug 9, 2026
08b120d
Added port consistency checks and wired them into CI and release prep…
fdesbiens Aug 9, 2026
f23a180
Added bash A profile update scripts and restored ports_arch as their …
fdesbiens Aug 9, 2026
68eb205
Made the Arm ports build with LLVM, and added a check that keeps them…
fdesbiens Aug 10, 2026
f3ab36d
Made the example builds work with LLVM, and fixed four that were brok…
fdesbiens Aug 10, 2026
a8aebc5
Completed the Cortex-M0 barriers and made its example build with both…
fdesbiens Aug 10, 2026
08eff80
Made the Cortex-A12, A15 and A17 examples link with an LLVM toolchain…
fdesbiens Aug 10, 2026
51ca412
Added build scripts for the AArch64 examples, which had none (#597)
fdesbiens Aug 11, 2026
13722fe
Repaired the garbled description at the top of check_clang.sh (#598)
fdesbiens Aug 11, 2026
b87a62d
Brought Cortex-A34 and the A78 SMP port under the ARMv8-A generator (…
fdesbiens Aug 11, 2026
8031d8b
Enrolled the Cortex-R52 port in the LLVM C check and exposed the skip…
fdesbiens Aug 11, 2026
96b1638
Gave the Armv8-M examples a linkable sample and fixed what stopped th…
fdesbiens Aug 11, 2026
c78c080
Made the ARMv8-A debug launch configurations name their own core (#602)
fdesbiens Aug 11, 2026
31fbe21
Removed developer machine paths from the shipped project files (#603)
fdesbiens Aug 11, 2026
b0ad67b
Brought the Cortex-R52 examples under the LLVM check, and fixed two b…
fdesbiens Aug 11, 2026
990d51b
Brought up ThreadX on S32Z280 silicon and fixed the MPU encoding it e…
fdesbiens Aug 12, 2026
010a6c9
Gave the gnu ports a CMake build, which most of them lacked (#607)
fdesbiens Aug 12, 2026
acdc02b
Assembled the code behind feature macros, and fixed the POP it found …
fdesbiens Aug 13, 2026
c991c9e
Added TX_ENABLE_FIQ_SUPPORT to the feature-macro assembly stage (#610)
fdesbiens Aug 13, 2026
b877305
Verified lazy VFP context switching on S32Z280 silicon (#609)
fdesbiens Aug 13, 2026
559460b
Exercised the nested IRQ path, which had never once been entered (#611)
fdesbiens Aug 13, 2026
5a7f4f8
Verified nested IRQ handling on S32Z280 silicon (#612)
fdesbiens Aug 14, 2026
19d90a4
Exercised the nested FIQ path, the last pair nothing had ever called …
fdesbiens Aug 14, 2026
ea91bea
Verified nested FIQ handling on S32Z280 silicon (#614)
fdesbiens Aug 14, 2026
27891f3
Read the TCM configuration off the part, and corrected what we though…
fdesbiens Aug 14, 2026
ba5e589
Made the basic processing counter visible to the reporting thread (#616)
fdesbiens Aug 14, 2026
b1a4882
Enabled ATCM on S32Z280, and left the other two banks off for a measu…
fdesbiens Aug 14, 2026
1491705
Removed a few binary files in source tree. (#403)
yf13 Aug 15, 2026
20d4b97
Removed generated build output and per-user IDE state, and fixed two …
fdesbiens Aug 15, 2026
358e7a9
Stopped the remaining example scripts naming archives that were delet…
fdesbiens Aug 15, 2026
1296cf1
Corrected the S32Z280 data SRAM map against the Reference Manual and …
fdesbiens Aug 15, 2026
09c190a
Added a CMake target for the Linux sample program (#622)
fdesbiens Aug 15, 2026
090f8ed
Added Cortex-M52 (Armv8.1-M) port (#519)
cpussw01 Aug 16, 2026
0e7db2b
Stopped the generated Armv8-M readmes claiming a false origin date (#…
fdesbiens Aug 16, 2026
2f378a4
Stopped POSIX mq_send() leaking the message buffer when the send fail…
fdesbiens Aug 16, 2026
3501c5c
Stopped two POSIX call sites falling through their error handler (#625)
fdesbiens Aug 16, 2026
f184531
Added the POSIX compatibility layer to the CMake build, with regressi…
fdesbiens Aug 16, 2026
2f69454
Stopped pthread_self() faulting when the caller is not a pthread (#627)
fdesbiens Aug 16, 2026
ff638da
Configured the LINFlexD console twice, because once is not enough at …
fdesbiens Aug 17, 2026
b2983c0
Ran the interrupt handler from ATCM, and measured what that buys (#630)
fdesbiens Aug 17, 2026
1d3f3f8
Measured the cache benchmark at four alignments, because one is not e…
fdesbiens Aug 17, 2026
3aaaa67
Revalidated the ATCM handler result across four placements, and it ho…
fdesbiens Aug 17, 2026
35de568
Retracted the claim that a second TCM bank costs the data cache (#633)
fdesbiens Aug 17, 2026
62e966f
Enabled BTCM, measured it, and put a ThreadX thread stack in it (#634)
fdesbiens Aug 17, 2026
367d918
Measured context-switch cost against the memory holding the stack (#635)
fdesbiens Aug 17, 2026
f535a4e
Measured stack-heavy work against the memory holding the stack (#636)
fdesbiens Aug 17, 2026
1ef4933
Gave each thread its own MPU window, and made a violation fault (#637)
fdesbiens Aug 17, 2026
ca62edd
Swept the stack-heavy measurement across placements, and qualified it…
fdesbiens Aug 18, 2026
b3486f9
Bounded the wait in the thread priority change regression tests (#640)
fdesbiens Aug 18, 2026
dafb7d7
Stopped a stalled install from costing a whole regression run (#641)
fdesbiens Aug 20, 2026
f2d27de
Stopped a dead apt mirror from taking the whole install down with it …
fdesbiens Aug 20, 2026
7928dc4
Ran the ThreadX and SMP regression suites one test at a time (#643)
fdesbiens Aug 20, 2026
4d9ce41
Gave the wait abort ISR test a budget instead of an open-ended wait (…
fdesbiens Aug 20, 2026
a5483f0
Bounded the wait for the delayed suspension window (#645)
fdesbiens Aug 20, 2026
83dfbc3
Made a teardown hang in the SMP suite say where it stopped (#646)
fdesbiens Aug 20, 2026
fe40079
Stopped the thread priority change test leaving core 0 to a finished …
fdesbiens Aug 20, 2026
c8d27c4
Stopped the SMP stack check analyzing a stack it just found broken (#…
fdesbiens Aug 20, 2026
e46b1b0
Asked the wait abort test for three windows, and failed a run that re…
fdesbiens Aug 20, 2026
977e14e
Ran the regression suites on dev, where the pull requests actually ar…
fdesbiens Aug 24, 2026
9218bad
Kept the coverage publish on master, where the environment allows it …
fdesbiens Aug 24, 2026
5a68c9d
Allowed the Linux toolchain file to accept a compiler override (#656)
fdesbiens Aug 24, 2026
a4397e1
Reconfigured the build when the requested compiler changes (#657)
fdesbiens Aug 24, 2026
eabdb86
Matched gcov to the compiler that produced the coverage data (#658)
fdesbiens Aug 24, 2026
adc6469
Published the coverage report instead of everything the run produced …
fdesbiens Aug 24, 2026
7959aef
Kept the coverage report from the runs that most need one (#659)
fdesbiens Aug 24, 2026
042049a
Revived the Cortex-M build, which had compiled nothing since June (#653)
fdesbiens Aug 24, 2026
3d852eb
Pinned every action to a commit SHA, and moved them off Node 20 (#660)
fdesbiens Aug 25, 2026
b6a00a2
Added the Dependabot configuration the pinned actions need (#662)
fdesbiens Aug 25, 2026
2d9b9f7
Bumped gcovr off the 4.1 pin it had been held on since 2018 (#663)
fdesbiens Aug 25, 2026
b756220
Fixed the coverage report's paths and scoping (#664)
fdesbiens Aug 25, 2026
3e85bbd
Instrumented every build configuration and merged their coverage (#665)
fdesbiens Aug 26, 2026
f89d65f
Covered the trace entry update paths and the misaligned stack adjustm…
fdesbiens Aug 26, 2026
147754c
Enforced a coverage floor on the merged report (#667)
fdesbiens Aug 26, 2026
9c32abb
Assembled the module ports, which no check had ever compiled (#672)
fdesbiens Aug 28, 2026
5b94bad
Fixed the AArch64 samples, none of which had ever linked with GCC (#673)
fdesbiens Aug 28, 2026
ff7fbe0
Added a GCC check for the Arm ports and ran it in CI (#675)
fdesbiens Aug 28, 2026
a2800fe
Covered the SMP suspension teardown and the long byte pool search (#677)
fdesbiens Aug 28, 2026
57390fc
Refused the Cortex-R52 VFP option without a hard float ABI (#686)
fdesbiens Sep 1, 2026
8c681c1
Asserted that the Cortex-R52 port refuses the options it documents as…
fdesbiens Sep 1, 2026
13c8c76
Added the boot-at-EL1 option to the S32Z280 entry path (#690)
fdesbiens Sep 2, 2026
c469a77
Fixed the missing immediate prefix on MOV in Cortex-M schedulers (#693)
fdesbiens Sep 3, 2026
17ff21a
Fixed the garbled comment in the POSIX condition variable sources (#694)
fdesbiens Sep 3, 2026
508af54
Fixed the incorrect loop bound constant in the IAR file lock support …
fdesbiens Sep 3, 2026
d7789f0
Fixed the clobbered return address in the RISC-V context save (#696)
fdesbiens Sep 3, 2026
b0ec8bf
Fixed the invalid module data pointers in the absolute module load (#…
fdesbiens Sep 8, 2026
29afcc3
Fixed a kernel stack leak when deleting user-mode module threads (#692)
prashit-vora Sep 8, 2026
945f5f5
Moved the ARC ISR enter callout onto the system stack (#700)
fdesbiens Sep 8, 2026
e99f0d4
Corrected the module kernel stack size so it no longer overstates the…
fdesbiens Sep 8, 2026
515ab8a
Added the missing memory barrier so ARMv7-A SMP schedulers no longer …
fdesbiens Sep 9, 2026
164f211
riscv64: spec compliance and regression test fix (#698)
akifejaz Sep 9, 2026
2e48ce0
Removed the stray build artifacts committed with the RISC-V64 port fi…
fdesbiens Sep 9, 2026
d3fb72b
Aligned the simulator ports' fake stack pointer so ThreadX no longer …
fdesbiens Sep 9, 2026
37f48fa
Removed FIFO queueing from the ARMv7-A SMP ports so an ISR can no lon…
fdesbiens Sep 9, 2026
9a03838
Stopped the test runners from reporting an incomplete build as test f…
fdesbiens Sep 9, 2026
146d57b
Fixed the RISC-V64 trap frame size mismatch in the regression test BS…
fdesbiens Sep 9, 2026
3fc28d8
Allowed a BASEPRI-masked interrupt to wake the Cortex-M idle loop fro…
fdesbiens Sep 9, 2026
40db27e
riscv32: spec compliance and regression test fix (#691)
akifejaz Sep 9, 2026
4d90a0c
Stopped the win32 and win64 ports from enabling performance metrics a…
ntfreak Sep 9, 2026
6ce8d5c
Marked every published ThreadX include directory as SYSTEM so applica…
fdesbiens Sep 9, 2026
8be4c45
Compiled the module manager C sources, which no check had ever built …
fdesbiens Sep 9, 2026
16297d7
Added a workflow that runs the Cortex-R52 images on the Armv8-R AEM F…
fdesbiens Sep 9, 2026
850a172
Added lazy FPU stacking and QEMU functional tests for RV64 GNU port (…
Winstonllllai Sep 9, 2026
383dd31
Removed the vector table offset register and system stack pointer set…
fdesbiens Sep 9, 2026
a8c8459
Added ARMv7-A SMP Linux build scripts(A5,A7,A9) (#674)
prashit-vora Sep 9, 2026
7f6e496
Added the missing VFP enable field to the Cortex-R5/AC5 thread contro…
fdesbiens Sep 9, 2026
5e9d046
Compiled the module manager C sources with GCC, as clang already did …
fdesbiens Sep 10, 2026
39277cf
Stated the compiler and coverage requirements directly, and said who …
fdesbiens Sep 10, 2026
42f1d2b
Pointed the SMP coverage comment at the pull request that made its me…
fdesbiens Sep 10, 2026
18abe10
Enabled the RISC-V regression suite in CI for QEMU targets (#717)
akifejaz Sep 10, 2026
6c84e61
Gave install_riscv.sh the network hardening install.sh already had, a…
fdesbiens Sep 10, 2026
d56f96f
Refreshed the reason gcc_check leaves RISC-V out (#722)
fdesbiens Sep 10, 2026
9ee198a
Made the stack analyze binary search require several consecutive fill…
fdesbiens Sep 10, 2026
7074119
Refused thread delete and reset while an exit transition is in progre…
fdesbiens Sep 10, 2026
c0aa4db
Initialized the suspend status before the non-interruptable suspend i…
fdesbiens Sep 10, 2026
dde43b8
Replaced the stale system stack switch pseudo-code in the ARMv7-A por…
fdesbiens Sep 11, 2026
83a3e62
Added a Module Manager host test harness and released a module thread…
fdesbiens Sep 14, 2026
cd6a2d9
Put the module manager test's thread on the kernel's created list, so…
fdesbiens Sep 14, 2026
5d235a5
Fixed the garbage _tx_initialize_unused_memory in the GNU Cortex-A po…
fdesbiens Sep 15, 2026
1d4a4ae
Guarded _tx_thread_stack_analyze against inverted stack pointers (#727)
fdesbiens Sep 15, 2026
d15f28a
Masked the SMP remap core maps to silence a false -O2 array bounds er…
fdesbiens Sep 15, 2026
9b2979e
Replaced the GNU-only dsb/isb 0xF operands with the UAL sy form (#729)
fdesbiens Sep 15, 2026
3e5a16c
Allowed tx_timer_change to be called from tx_application_define (#730)
fdesbiens Sep 15, 2026
201cc04
Applied R_ARM_RELATIVE relocations at GNU ThreadX module startup (#731)
fdesbiens Sep 15, 2026
30b3d22
Restored the random stack fill value cleared during thread creation (…
fdesbiens Sep 15, 2026
f5e59a1
Completed Windows simulator support and regression coverage (#736)
fdesbiens Sep 15, 2026
9e4c571
Normalized the AI disclosure comment to one fixed line per file (#740)
fdesbiens Sep 15, 2026
26e4aa1
Fixed the build of tx_misra.c with MISRA and event trace enabled (#746)
fdesbiens Sep 16, 2026
b93d1ee
Fixed the simulator ports and thread create paths so they compile whe…
fdesbiens Sep 16, 2026
24d1f27
Decorrelated the wait abort ISR test's interrupt source from the thre…
fdesbiens Sep 16, 2026
e9b5aec
Added MISRA build configurations to the ThreadX regression matrix (#747)
fdesbiens Sep 16, 2026
ad558a7
Fixed the zero trace time stamps in the Linux ports' MISRA builds (#749)
fdesbiens Sep 16, 2026
70a5300
Added a ThreadX module manager port for the Cortex-R52 (#639)
fdesbiens Sep 17, 2026
b37cd4a
Fixed RISC-V regression portability failures (#773)
fdesbiens Sep 23, 2026
d55fe1e
Stopped the release script adding a Co-authored-by trailer (#777)
fdesbiens Sep 28, 2026
7495b02
Merge commit from fork
fdesbiens Sep 28, 2026
3276b0e
Merge commit from fork
fdesbiens Sep 28, 2026
2930618
Merge commit from fork
fdesbiens Sep 28, 2026
ff4be30
Covered the control block ID cleared when module memory is given back…
fdesbiens Sep 28, 2026
35d4137
Merge commit from fork
fdesbiens Sep 28, 2026
a967d00
Merge commit from fork
fdesbiens Sep 28, 2026
ee4c2fb
Merge commit from fork
fdesbiens Sep 28, 2026
5f9ebde
Merge commit from fork
fdesbiens Sep 28, 2026
a9bd72d
Merge commit from fork
fdesbiens Sep 28, 2026
47a5259
Stopped the SMP Linux port losing a mutex wake-up to a suspend signal…
fdesbiens Sep 28, 2026
b567428
Stopped the Linux port losing a mutex wake-up to a suspend signal (#754)
fdesbiens Sep 28, 2026
e3ed79d
Stopped tx_thread_relinquish discarding the rebalance it requests (#758)
fdesbiens Sep 28, 2026
2886bdf
Stopped the SMP Linux port leaking a critical section on unprotect (#…
fdesbiens Sep 28, 2026
c3bf5e6
Made the SMP pt test's randomised phase set preemption thresholds (#760)
fdesbiens Sep 28, 2026
990faf6
Enabled execution profiling for Cortex-R5 (#766)
fdesbiens Sep 28, 2026
6098ce6
Added a blame ignore list for the mechanical header and version passe…
fdesbiens Sep 28, 2026
c805d9d
Linked ThreadX readers to published documentation (#774)
fdesbiens Sep 28, 2026
f65727f
Added a script that counts Assisted-by attributions completely (#775)
fdesbiens Sep 28, 2026
9bf9978
Silenced the SMP MISRA shim's implicit conversions (#751)
fdesbiens Sep 28, 2026
a752784
Updated ThreadX contribution guide for current workflows (#776)
fdesbiens Sep 28, 2026
8336199
Normalized the AI disclosure comment and added a check that keeps it …
fdesbiens Sep 28, 2026
cf577c7
Made ThreadX object names const-qualifiable behind an option (#761)
fdesbiens Sep 28, 2026
a7ded6a
Updated ThreadX version constants and port strings to 6.5.2.202603 (#…
fdesbiens Sep 28, 2026
80dfbe7
Added the release and disclosure passes to the blame ignore list (#782)
fdesbiens Sep 28, 2026
0a52df8
Stopped the version pass skipping ports in silence (#786)
fdesbiens Sep 28, 2026
7212b36
Added an Erbium example to the RISC-V64 GNU port
AFOliveira Sep 30, 2026
f19d8c2
Added simulator tests for Erbium interrupt regressions
fdesbiens Sep 30, 2026
fb4a876
Fixed Erbium interrupt masking and PLIC update races
fdesbiens Sep 30, 2026
f09846d
Made the install step timeout a template input (#790)
fdesbiens Sep 30, 2026
729959f
Made the build step timeout a template input (#791)
fdesbiens Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
62 changes: 62 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Commits that changed file headers, copyright lines or version constants across
# the whole tree. They carry no behavioural change, so `git blame` should look
# through them to the commit that last touched the code itself.
#
# GitHub applies this file automatically. To use it locally, run once:
#
# git config blame.ignoreRevsFile .git-blame-ignore-revs
#
# Add a commit here only when it is mechanical and repository-wide. A commit
# that changes behaviour does not belong in this file, however large it is.

# 2023-10-23 Update release version to 6.3.0 and date to 10-31-2023 (#308)
# 1366 files
13b700fd3ed763cedcba7dbd17b859077a01aa9c

# 2024-01-29 Update copyright.
# 3618 files
8276bcf71142197e09551e29f1779299fa591ec7

# 2024-01-30 Update version id string.
# 1048 files
3e1da1f0b0973e6b833b08b10fb27c7c718835b3

# 2024-02-23 Update the copyright for all assembly files.
# 798 files
039a3463974f922f6dd6bfb8afb7ee2895eaebcf

# 2024-02-27 Update version number to 6.4.1
# 237 files
27f0ce9ca2334b975c298fd00eac1bc05ecec1f7

# 2025-02-24 Updated ports version to v6.4.2.
# 235 files
376e26be292f7d579091650a70b5670195240539

# 2026-03-05 Updated copyright headers and version number constants (#509)
# 5970 files
c3259a216026372e3833dd8996a68f77e8595fbd

# 2026-06-03 Release 6.5.1.202602 preparation (#543)
# 204 files
de1c6e9bbe13e2db480e4e0ed2d3589ebdd5db27

# 2026-06-06 Added copyright headers to files missing them
# 581 files
730b61874bc5cf40768987605ae5187fde0fa1e2

# 2026-06-08 Release 6.5.1.202602a preparation (#547)
# 207 files
df30b8b96e4c0c6d72e0bb80d2a2ec31666e5afe

# 2026-09-15 Normalized the AI disclosure comment to one fixed line per file (#740)
# 455 files
9e4c57138dfa004cd512b60259c1c5047a8b3dd1

# 2026-09-28 Normalized the AI disclosure comment and added a check that keeps it so (#762)
# 158 files
83361990cb4d03da8851e30030688ed3abb4d840

# 2026-09-28 Updated ThreadX version constants and port strings to 6.5.2.202603 (#781)
# 212 files
a7ded6a3b9e12985a6c52af4df419d2326cccc0a
91 changes: 91 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
version: 2

# Keeps the pinned action SHAs moving.
#
# Every action reference under .github/workflows is a 40-character commit SHA
# with the version in a trailing comment. A SHA pin *without* this file is worse
# than a floating tag: it freezes CI on whatever was current the day it was
# written, which is how actions/cache@v1 came to sit in ci_cortex_m.yml until
# GitHub started auto-failing every request that used it. Measured on
# 2026-08-24, before the catch-up: download-artifact was four majors behind,
# checkout and upload-artifact three each, cache and upload-pages-artifact two.
# Nothing had ever reported that, because there was no configuration here -- nor
# in netxduo, filex, guix or rtos-docs-asciidoc, so this file sets the pattern
# rather than following one.
#
# Dependabot understands the SHA form and rewrites the trailing version comment
# together with the pin, so the comment cannot drift away from the SHA it
# describes. That is what keeps "which exact code ran in our CI" answerable from
# the repository, which the SBOM and certification work needs on its own.
#
# Two things this does not fix. It reports drift, not silence: a workflow that
# never triggers rots unnoticed no matter what is pinned in it, and the trigger
# fixes in ci_cortex_m.yml and regression_test.yml are the cure for that. And it
# does nothing at all until this file reaches the default branch -- see the note
# on target-branch below.
#
# There is no entry for any other ecosystem, and that is a decision rather than
# an oversight: the project forbids external dependencies, there are no
# submodules, and the one pinned tool -- gcovr in scripts/install.sh -- lives in
# a shell script that no Dependabot ecosystem can parse. That pin moves by hand.
updates:
- package-ecosystem: "github-actions"
# "/" is the only accepted value for this ecosystem; it covers
# .github/workflows and .github/actions. The five reusable-workflow
# references in regression_test.yml are local paths
# (./.github/workflows/regression_template.yml) and are correctly left
# alone -- they carry no version to move.
directory: "/"

schedule:
interval: "weekly"
day: "monday"
time: "06:00"
timezone: "Etc/UTC"

# Dependabot reads this file from the repository's DEFAULT branch, which is
# master. But master is deliberately kept behind dev, and pull requests
# belong on dev, where the regression suites gate them. target-branch sends
# the pull requests to dev and makes Dependabot read the workflows it is
# updating from dev as well.
#
# The consequence to plan for: landing this file on dev arms it, it does not
# fire it. Nothing happens until a release merge carries it to master.
#
# Setting target-branch also opts out of Dependabot *security* updates,
# which only ever run against the default branch. For this ecosystem the
# cost is small -- an action advisory arrives as an ordinary version bump on
# the weekly run -- but it is a real trade and not a detail to rediscover
# later.
target-branch: "dev"

groups:
# Patch and minor arrive together in one pull request: they are the
# routine traffic, and reviewing them one at a time is how an update queue
# starts being ignored, which is the failure mode this file exists to
# prevent. Majors stay ungrouped, one pull request each, because every
# breaking change this repository has met in an action set has been a
# major -- download-artifact v8 defaulting digest-mismatch to error, and
# upload-artifact v6 requiring runner 2.327.1 or newer, are both from the
# last catch-up.
actions-minor-and-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"

# Nine distinct third-party and first-party actions are in use. Dependabot's
# default limit of five would hold majors back with nothing saying that it
# had; ten leaves room for a wave without becoming a silent cap.
open-pull-requests-limit: 10

labels:
- "dependencies"

# Reviewers are not listed here. .github/CODEOWNERS already routes every
# path to @eclipse-threadx/admins and Dependabot honours it.
#
# Commit subjects are left at Dependabot's own "Bump x from a to b" wording.
# The project asks for a past-tense subject and still gets one: these pull
# requests are squash-merged, and the subject is set at that point.
110 changes: 73 additions & 37 deletions .github/workflows/ci_cortex_m.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,31 @@
# This is a basic workflow to help you get started with Actions

name: cortex_m

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
# Cross-compiles the Cortex-M ports with GCC.
#
# Two things were wrong with this workflow and both are fixed here.
#
# It ran on master only, for both push and pull_request, while dev is the
# integration branch -- the same defect ports_arch_check.yml carries a comment
# about, where it cost eight months of ports drifting unnoticed. So this
# gated no pull request that anybody opened.
#
# And it had not compiled anything since at least 2026-06-08. Every run since
# then failed in six to eight seconds, at "Prepare all required actions",
# before checkout: GitHub automatically fails any request using
# actions/cache@v1. Nobody noticed, because of the first defect.
#
# The toolchain setup now follows clang_check.yml rather than third party
# actions: a pinned release fetched directly, verified against Arm's published
# checksum, and cached with actions/cache@v4. That also moves the compiler
# from 9-2019-q4 to a version matching the project's stated GCC 14 default.
#
# This covers four ports of the forty under ports/ that have a gnu directory.
# Widening that to every Arm gnu port is separate work.
on:
push:
branches: [ master ]
branches: [ master, dev ]
pull_request:
branches: [ master ]
branches: [ master, dev ]
paths:
- ".github/workflows/ci_cortex_m.yml"
- 'common/**'
Expand All @@ -18,60 +35,79 @@ on:
- 'ports/cortex_m4/gnu/**'
- 'ports/cortex_m7/gnu/**'

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

strategy:
fail-fast: false
matrix:
port: [0, 3, 4, 7]

name: Cortex M${{ matrix.port }} build

# Steps represent a sequence of tasks that will be executed as part of the job
env:
# Pinned deliberately, as the runner image is: a toolchain upgrade should
# be a reviewable commit rather than something that changes underneath the
# ports. Releases: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
GCC_VERSION: 14.3.rel1
GCC_TARGET: arm-none-eabi

steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
# Actions are pinned to a commit SHA, with the version in the trailing
# comment. A tag can be moved; a SHA cannot, so this is what makes "which
# code ran in CI" answerable from the repository. Dependabot moves these
# pins and rewrites the comment with them -- see .github/dependabot.yml.
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true

# Store the arm compilers in the cache to speed up builds
- name: Cache arm-none-eabi-gcc tools
- name: Cache the Arm GNU toolchain
id: cache-arm-gcc
uses: actions/cache@v1
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: $HOME/arm-none-eabi-gcc-9-2019-q4
key: ${{ runner.os }}-arm-gcc-9-2019-q4
path: toolchain
key: arm-gnu-toolchain-${{ env.GCC_VERSION }}-x86_64-${{ env.GCC_TARGET }}

# Get the arm-non-eabi-gcc toolchain
- name: Install arm-none-eabi-gcc
uses: fiam/arm-none-eabi-gcc@v1
- name: Install the Arm GNU toolchain
if: steps.cache-arm-gcc.outputs.cache-hit != 'true'
with:
release: '9-2019-q4' # The arm-none-eabi-gcc release to use.
directory: $HOME/arm-none-eabi-gcc-9-2019-q4
run: |
set -eu
base="https://developer.arm.com/-/media/Files/downloads/gnu/${GCC_VERSION}/binrel"
archive="arm-gnu-toolchain-${GCC_VERSION}-x86_64-${GCC_TARGET}.tar.xz"
mkdir -p toolchain && cd toolchain
curl -fsSLO "$base/$archive"
curl -fsSLO "$base/$archive.sha256asc"
sha256sum -c "$archive.sha256asc"
tar xf "$archive"
rm -f "$archive"

# Get CMake into the environment
- name: Install cmake 3.19.1
uses: lukka/get-cmake@v3.19.1
- name: Put the toolchain on PATH
run: |
set -eu
echo "$GITHUB_WORKSPACE/toolchain/arm-gnu-toolchain-${GCC_VERSION}-x86_64-${GCC_TARGET}/bin" >> "$GITHUB_PATH"

# Get Ninja into the environment
- name: Install ninja-build
uses: seanmiddleditch/gha-setup-ninja@v3
# Only reaches apt if the runner image has stopped shipping ninja. This
# repository has already paid for unguarded apt calls: scripts/install.sh
# carries a long comment about apt-get update stalling for over two hours
# and taking whole regression runs with it. Do not turn this into an
# unconditional install.
- name: Ensure ninja is available
run: |
set -eu
if command -v ninja >/dev/null 2>&1; then
ninja --version
else
sudo apt-get update
sudo apt-get install -y --no-install-recommends ninja-build
fi

- name: Report the toolchain version
run: ${{ env.GCC_TARGET }}-gcc --version

# Prepare the build system
- name: Prepare build system
run: cmake -Bbuild -DCMAKE_TOOLCHAIN_FILE=./cmake/cortex_m${{ matrix.port }}.cmake -GNinja .
env:
PATH: "$HOME/arm-none-eabi-gcc-9-2019-q4/bin:$PATH"

- name: Compile and link
run: cmake --build ./build
env:
PATH: "$HOME/arm-none-eabi-gcc-9-2019-q4/bin:$PATH"


74 changes: 74 additions & 0 deletions .github/workflows/clang_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: clang_check

# Builds the Arm ports with Arm Toolchain for Embedded, which is LLVM based and
# is the successor to Arm Compiler 6. The gnu ports are otherwise only ever
# built with GNU tooling, and GNU as accepts several non-canonical forms that
# LLVM's assembler rejects; this catches those before they accumulate.
on:
pull_request:
branches: [ master, dev ]
paths:
- ".github/workflows/clang_check.yml"
- "scripts/check_clang.sh"
# CMakeLists.txt, cmake/ and common_smp/ were missing until 26 Aug 2026,
# so this check did not run when the files it reads changed. The
# ports_smp example builds compile common_smp/src and the CMake stage
# reads the toolchain file and the top-level project. utility/ is
# deliberately absent: the FreeRTOS and POSIX layers under it are not
# enabled by any target this workflow builds. Keep this list and
# gcc_check.yml's the same.
- "CMakeLists.txt"
- "cmake/**"
- "common/**"
# common_modules/ holds the portable module manager that the module
# manager stage compiles once per Arm module port -- the larger half of
# what that stage builds. Without it a change there leaves the stage
# unrun, which is the same "absent from the count reads as covered" the
# stage exists to close.
- "common_modules/**"
- "common_smp/**"
- "ports/**"
- "ports_arch/**"
- "ports_module/**"
- "ports_smp/**"

jobs:
atfe:
runs-on: ubuntu-24.04

env:
# Pinned deliberately, as the runner image is: a toolchain upgrade should
# be a reviewable commit rather than something that changes underneath the
# ports. Releases: https://github.com/arm/arm-toolchain/releases
ATFE_VERSION: 22.1.0

steps:
# Actions are pinned to a commit SHA, with the version in the trailing
# comment. A tag can be moved; a SHA cannot, so this is what makes "which
# code ran in CI" answerable from the repository. Dependabot moves these
# pins and rewrites the comment with them -- see .github/dependabot.yml.
- name: Checkout sources
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Cache Arm Toolchain for Embedded
id: cache-atfe
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: atfe
key: atfe-${{ env.ATFE_VERSION }}-linux-x86_64

- name: Install Arm Toolchain for Embedded
if: steps.cache-atfe.outputs.cache-hit != 'true'
run: |
set -eu
base="https://github.com/arm/arm-toolchain/releases/download/release-${ATFE_VERSION}-ATfE"
archive="ATfE-${ATFE_VERSION}-Linux-x86_64.tar.xz"
mkdir -p atfe && cd atfe
curl -fsSLO "$base/$archive"
curl -fsSLO "$base/$archive.sha256"
sha256sum -c "$archive.sha256"
tar xf "$archive"
rm -f "$archive"

- name: Build the Arm ports with clang
run: scripts/check_clang.sh --clang "atfe/ATfE-${ATFE_VERSION}-Linux-x86_64/bin/clang"
Loading
Loading