Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5d2c393
Add RISC-V32 QEMU-virt example
akifejaz Jan 1, 2026
a7961fe
Fix VFP build failure in Cortex-A tx_thread_schedule.S
mehmetteren Jan 6, 2026
b443c0f
Added missing ULONG64 definition for RX ports
Mar 11, 2025
6c25eff
improve port robustness, portability, and CSR handling
akifejaz Jan 26, 2026
99ed67d
few cleanups
akifejaz Jan 26, 2026
21256be
Cleanup the macros in tx_port.h & comments in inc/*.S
akifejaz Feb 5, 2026
0b0f1d0
Merge pull request #496 from akifejaz/rv64-gnu-port
fdesbiens Feb 5, 2026
579246b
Merge pull request #494 from spir6s/master
fdesbiens Feb 5, 2026
ede5aa2
Support XuanTie E906 CPU.
goodnorning Feb 12, 2026
c1bff3a
removed dead code in riscv64/gnu port
akifejaz Feb 16, 2026
757db54
Add RISC-V32 arch. port layer
akifejaz Feb 16, 2026
4de9be7
Merge pull request #490 from akifejaz/rv32-port
fdesbiens Feb 24, 2026
1d796d5
Add RISC-V32 arch. port layer
akifejaz Feb 16, 2026
7bf8308
Support XuanTie E906 CPU
goodnorning Feb 25, 2026
0a0615a
Merge pull request #501 from akifejaz/rv64-gnu-port
fdesbiens Feb 25, 2026
8f126ee
Merge pull request #492 from akifejaz/qemu-virt-rv32
fdesbiens Feb 25, 2026
888f7a4
Added a RISC-V32 architecture port layer for Clang.
francisco-merino-quintauris Feb 26, 2026
49439bf
Fixes to the RISC-V32 architecture port layer for Clang.
francisco-merino-quintauris Feb 26, 2026
c62ed82
Added a missing symbol to tx_api.h for TX SMP.
fdesbiens Feb 26, 2026
3bbc096
Merge pull request #503 from fdesbiens/issue499
fdesbiens Feb 26, 2026
f405107
Added ax attribute to ThreadX module example build preamble.S files
fdesbiens Feb 27, 2026
33610aa
Merge pull request #504 from fdesbiens/issue499
fdesbiens Feb 27, 2026
ff287cc
update qemu examples as per new rv port format
akifejaz Mar 1, 2026
cd101d9
update comments
akifejaz Mar 1, 2026
5910de8
Merge pull request #506 from akifejaz/qemu-examples
fdesbiens Mar 1, 2026
da5093f
Proposed changes to the original PR
fdesbiens Mar 2, 2026
0c92f48
Merge pull request #493 from mehmetteren/dev
fdesbiens Mar 2, 2026
b3e8a9a
Merge pull request #500 from goodnorning/feature/support_xuantie_e906
fdesbiens Mar 4, 2026
385d39f
Merge pull request #502 from quintauris-tech/riscv32-clang-port
fdesbiens Mar 4, 2026
c3259a2
Updated copyright headers and version number constants (#509)
fdesbiens Mar 5, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .github/workflows/ci_cortex_m.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
path: $HOME/arm-none-eabi-gcc-9-2019-q4
key: ${{ runner.os }}-arm-gcc-9-2019-q4

# Get the arm-non-eabi-gcc toolchain
# Get the arm-non-eabi-gcc toolchain
- name: Install arm-none-eabi-gcc
uses: fiam/arm-none-eabi-gcc@v1
if: steps.cache-arm-gcc.outputs.cache-hit != 'true'
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/regression_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
issues: read
checks: write
pull-requests: write

# The type of runner that the job will run on
runs-on: ubuntu-latest

Expand All @@ -66,7 +66,7 @@ jobs:
uses: actions/checkout@v4.2.2
with:
submodules: true

- name: Install softwares
run: ${{ inputs.install_script }}

Expand All @@ -75,15 +75,15 @@ jobs:

- name: Test
run: ${{ inputs.test_script }}

- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2.11.0
if: always()
with:
check_name: Test Results ${{ inputs.result_affix }}
files: |
${{ inputs.cmake_path }}/build/*/*.xml

- name: Upload Test Results
if: success() || failure()
uses: actions/upload-artifact@v4.6.2
Expand All @@ -93,7 +93,7 @@ jobs:
${{ inputs.cmake_path }}/build/*.txt
${{ inputs.cmake_path }}/build/*/Testing/**/*.xml
${{ inputs.cmake_path }}/build/**/regression/output_files/*.bin

- name: Configure GitHub Pages
uses: actions/configure-pages@v5.0.0

Expand Down Expand Up @@ -158,7 +158,7 @@ jobs:
if: (!inputs.skip_deploy && !inputs.skip_coverage)
with:
path: ${{ inputs.cmake_path }}/coverage_report/${{ inputs.coverage_name }}

deploy_code_coverage:
runs-on: ubuntu-latest
if: ((github.event_name == 'push') || (github.event_name == 'workflow_dispatch')) && !inputs.skip_coverage && !inputs.skip_deploy && !failure() && !cancelled()
Expand All @@ -183,7 +183,7 @@ jobs:
with:
path: .

- name: Delete Duplicate Code Coverage Artifact
- name: Delete Duplicate Code Coverage Artifact
uses: geekyeggo/delete-artifact@v5.1.0
with:
name: coverage_report
Expand All @@ -195,7 +195,7 @@ jobs:
- name: Write Code Coverage Report URL
run: >-
if [ "${{ inputs.deploy_list }}" != "" ]; then
for i in ${{ inputs.deploy_list }}; do
for i in ${{ inputs.deploy_list }}; do
echo 'Coverage report for ' $i ':${{ steps.deployment.outputs.page_url }}'$i >> $GITHUB_STEP_SUMMARY
done
else
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.vscode/
.settings/
.metadata/
.tmp/
_deps/
build/
Debug/
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@
| Cleanup | Closed | 6.1.3 | Updates to use builtins/inline assembler | ports/cortex_m23/gnu/inc/tx_port.h<br/>ports/cortex_m23/gnu/src/tx_thread_secure_stack.c | 08/01/2021 | Scott Larson |
| Cleanup | Closed | 6.1.3 | Remove unnecessary settings directories from example. | ports/cortex_a35/ac6/** | 08/01/2021 | Scott Larson |
| Cleanup | Closed | 6.1.3 | Remove unneeded load of _tx_thread_preempt_disable. | ports/arc_em/metaware/src/tx_timer_interrupt.s<br/>ports/arc_hs/metaware/src/tx_timer_interrupt.s | 08/01/2021 | Scott Larson |
| Enhancement | Closed | 6.1.3 | Update product constants.<br/>MISRA compliance changes | common_smp/inc/tx_api.h<br/>common_smp/src/tx_thread_create.c<br/>common_smp/src/tx_time_get.c<br/>common_smp/src/tx_thread_smp_high_level_initialize.c | 08/01/2021 | Scott Larson |
| Enhancement | Closed | 6.1.3 | Update product constants.<br/>MISRA compliance changes | common_smp/inc/tx_api.h<br/>common_smp/src/tx_thread_create.c<br/>common_smp/src/tx_time_get.c<br/>common_smp/src/tx_thread_smp_high_level_initialize.c | 08/01/2021 | Scott Larson |
| New feature | Closed | 6.1.3 | Pre-execution module preamble validation and preparation | common_modules/module_manager/src/txm_module_manager_start.c<br/>common_modules/module_manager/src/txm_module_manager_absolute_load.c | 08/01/2021 | Scott Larson |
| Enhancement | Closed | 6.1.3 | Added port-specific dispathc. | common/inc/tx_api.h | 08/01/2021 | Scott Larson |
| Enhancement | Closed | 6.1.3 | Fix stack overlap checking.<br/>Added 64-bit & SMP support. | common_modules/module_manager/src/txm_module_manager_thread_create.c | 08/01/2021 | Scott Larson |
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ if (NOT TX_USER_FILE)
set(TX_USER_FILE ${CMAKE_CURRENT_LIST_DIR}/common/inc/tx_user_sample.h)
else()
message(STATUS "Using custom tx_user.h file from ${TX_USER_FILE}")
endif()
endif()
configure_file(${TX_USER_FILE} ${CUSTOM_INC_DIR}/tx_user.h COPYONLY)
target_include_directories(${PROJECT_NAME}
PUBLIC
target_include_directories(${PROJECT_NAME}
PUBLIC
${CUSTOM_INC_DIR}
)
target_compile_definitions(${PROJECT_NAME} PUBLIC "TX_INCLUDE_USER_DEFINE_FILE" )
Expand Down
10 changes: 5 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Thanks for your interest in this project.

Eclipse ThreadX provides a vendor-neutral, open source, safety certified OS for
real-time applications published on under a permissive license. The Eclipse
ThreadX suite encompasses:
ThreadX suite encompasses:
* ThreadX - advanced real-time operating system (RTOS) designed specifically for deeply embedded applications
* NetX Duo - advanced, industrial-grade TCP/IP network stack designed specifically for deeply embedded real-time and IoT applications
* FileX - high-performance, FAT-compatible file system that’s fully integrated with ThreadX kernel
Expand All @@ -20,7 +20,7 @@ Project site: https://projects.eclipse.org/projects/iot.threadx

## Terms of Use

This repository is subject to the Terms of Use of the Eclipse Foundation
This repository is subject to the Terms of Use of the Eclipse Foundation
https://www.eclipse.org/legal/termsofuse.php

## Developer resources
Expand Down Expand Up @@ -54,7 +54,7 @@ Development Process and operates under the terms of the Eclipse IP Policy.

## Eclipse Contributor Agreement

In order to be able to contribute to Eclipse Foundation projects you must electronically sign the Eclipse Contributor Agreement (ECA).
In order to be able to contribute to Eclipse Foundation projects you must electronically sign the Eclipse Contributor Agreement (ECA).
https://www.eclipse.org/legal/ECA.php

The ECA provides the Eclipse Foundation with a permanent record that you agree
Expand All @@ -63,10 +63,10 @@ the Developer Certificate of Origin (DCO). Having an ECA on file associated with
the email address matching the "Author" field of your contribution's Git commits
fulfills the DCO's requirement that you sign-off on your contributions.

For more information, please see the Eclipse Committer Handbook:
For more information, please see the Eclipse Committer Handbook:
https://www.eclipse.org/projects/handbook/#resources-commit

## Contact

Contact the project developers via the project's "dev" list.
Contact the project developers via the project's "dev" list.
https://accounts.eclipse.org/mailing-list/threadx-dev
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Eclipse ThreadX has been integrated to the semiconductor's SDKs and development

We also provide [getting started guide](https://github.com/eclipse-threadx/getting-started) and [samples](https://github.com/eclipse-threadx/samples) using development boards from semiconductors you can build and test with.

See [Overview of Eclipse ThreadX RTOS](https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx/overview-threadx.md) for the high-level overview.
See [Overview of Eclipse ThreadX RTOS](https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx/overview-threadx.md) for the high-level overview.

## Repository Structure and Usage
### Directory layout
Expand All @@ -23,16 +23,16 @@ See [Overview of Eclipse ThreadX RTOS](https://github.com/eclipse-threadx/rtos-d
├── common_modules # Core ThreadX module files
├── common_smp # Core ThreadX SMP files
├── docs # Documentation supplements
├── ports # Architecture and compiler specific files. See below for directory breakdown
│ ├── cortex_m7
├── ports # Architecture and compiler specific files. See below for directory breakdown
│ ├── cortex_m7
│ │ ├── iar # Example IAR compiler sample project
│ │ │ ├── example build # IAR workspace and sample project files
│ │ │ ├── inc # tx_port.h for this architecture
│ │ │ └── src # Source files for this architecture
│ │ ├── ac6 # Example ac6/Keil sample project
│ │ ├── gnu # Example gnu sample project
│ │ └── ...
│ └── ...
│ └── ...
├── ports_modules # Architecture and compiler specific files for threadX modules
├── ports_smp # Architecture and compiler specific files for threadX SMP
├── samples # demo_threadx.c
Expand Down Expand Up @@ -87,7 +87,7 @@ The master branch has the most recent code with all new features and bug fixes.
/* xx-xx-xxxx Scott Larson Include tx_user.h, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
/**************************************************************************/
```

## Supported Architecture Ports
Expand All @@ -97,8 +97,8 @@ The master branch has the most recent code with all new features and bug fixes.
arc_em cortex_a12 cortex_m0 cortex_r4
arc_hs cortex_a15 cortex_m23 cortex_r5
arm11 cortex_a17 cortex_m3 cortex_r7
arm9 cortex_a34 cortex_m33
c667x cortex_a35 cortex_m4
arm9 cortex_a34 cortex_m33
c667x cortex_a35 cortex_m4
linux cortex_a5 cortex_m55
risc-v32 cortex_a53 cortex_m7
rxv1 cortex_a55 cortex_m85
Expand Down
29 changes: 29 additions & 0 deletions cmake/riscv32-clang-unknown-elf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Toolchain settings
set(CMAKE_C_COMPILER clang-18)
set(CMAKE_CXX_COMPILER clang++-18)
#set(AS llvm-as)
#set(AR llvm-ar)
#set(OBJCOPY llvm-objcopy)
#set(OBJDUMP llvm-objdump-18)
#set(SIZE llvm-size)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# this makes the test compiles use static library option so that we don't need to pre-set linker flags and scripts
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

set(CMAKE_C_FLAGS "${CFLAGS}" CACHE INTERNAL "c compiler flags")
set(CMAKE_CXX_FLAGS "${CXXFLAGS}" CACHE INTERNAL "cxx compiler flags")
set(CMAKE_ASM_FLAGS "${ASFLAGS} -D__ASSEMBLER__" CACHE INTERNAL "asm compiler flags")
set(CMAKE_EXE_LINKER_FLAGS "${LDFLAGS}" CACHE INTERNAL "exe link flags")

SET(CMAKE_C_FLAGS_DEBUG "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -g" CACHE INTERNAL "c debug compiler flags")
SET(CMAKE_CXX_FLAGS_DEBUG "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -g" CACHE INTERNAL "cxx debug compiler flags")
SET(CMAKE_ASM_FLAGS_DEBUG "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -g" CACHE INTERNAL "asm debug compiler flags")

SET(CMAKE_C_FLAGS_RELEASE "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -O3" CACHE INTERNAL "c release compiler flags")
SET(CMAKE_CXX_FLAGS_RELEASE "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -O3" CACHE INTERNAL "cxx release compiler flags")
SET(CMAKE_ASM_FLAGS_RELEASE "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32" CACHE INTERNAL "asm release compiler flags")
29 changes: 29 additions & 0 deletions cmake/riscv32-unknown-elf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Toolchain settings
set(CMAKE_C_COMPILER riscv32-unknown-elf-gcc)
set(CMAKE_CXX_COMPILER riscv32-unknown-elf-g++)
set(AS riscv32-unknown-elf-as)
set(AR riscv32-unknown-elf-ar)
set(OBJCOPY riscv32-unknown-elf-objcopy)
set(OBJDUMP riscv32-unknown-elf-objdump)
set(SIZE riscv32-unknown-elf-size)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# this makes the test compiles use static library option so that we don't need to pre-set linker flags and scripts
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

set(CMAKE_C_FLAGS "${CFLAGS}" CACHE INTERNAL "c compiler flags")
set(CMAKE_CXX_FLAGS "${CXXFLAGS}" CACHE INTERNAL "cxx compiler flags")
set(CMAKE_ASM_FLAGS "${ASFLAGS} -D__ASSEMBLER__ -D__riscv_float_abi_single" CACHE INTERNAL "asm compiler flags")
set(CMAKE_EXE_LINKER_FLAGS "${LDFLAGS}" CACHE INTERNAL "exe link flags")

SET(CMAKE_C_FLAGS_DEBUG "-Og -g -ggdb3" CACHE INTERNAL "c debug compiler flags")
SET(CMAKE_CXX_FLAGS_DEBUG "-Og -g -ggdb3" CACHE INTERNAL "cxx debug compiler flags")
SET(CMAKE_ASM_FLAGS_DEBUG "-g -ggdb3" CACHE INTERNAL "asm debug compiler flags")

SET(CMAKE_C_FLAGS_RELEASE "-O3" CACHE INTERNAL "c release compiler flags")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE INTERNAL "cxx release compiler flags")
SET(CMAKE_ASM_FLAGS_RELEASE "" CACHE INTERNAL "asm release compiler flags")
18 changes: 18 additions & 0 deletions cmake/riscv32_clang.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Name of the target
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR risc-v32)

IF(DEFINED $ENV{GCC_INSTALL_PREFIX})
SET(GCC_INSTALL_PREFIX "$ENV{GCC_INSTALL_PREFIX}" CACHE INTERNAL "" FORCE)
ELSE()
SET(GCC_INSTALL_PREFIX "/opt/riscv_rv32ima" CACHE INTERNAL "" FORCE)
ENDIF()

set(THREADX_ARCH "risc-v32")
set(THREADX_TOOLCHAIN "clang")
set(ARCH_FLAGS "--sysroot=${GCC_INSTALL_PREFIX}/riscv32-unknown-elf --target=riscv32 -g -march=rv32ima_zicsr -mabi=ilp32")
set(CFLAGS "${ARCH_FLAGS}")
set(ASFLAGS "${ARCH_FLAGS}")
set(LDFLAGS "--no-dynamic-linker -m elf32lriscv -static -nostdlib")

include(${CMAKE_CURRENT_LIST_DIR}/riscv32-clang-unknown-elf.cmake)
12 changes: 12 additions & 0 deletions cmake/riscv32_gnu.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Name of the target
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR risc-v32)

set(THREADX_ARCH "risc-v32")
set(THREADX_TOOLCHAIN "gnu")
set(ARCH_FLAGS "-g -march=rv32gc -mabi=ilp32d -mcmodel=medany")
set(CFLAGS "${ARCH_FLAGS}")
set(ASFLAGS "${ARCH_FLAGS}")
set(LDFLAGS "${ARCH_FLAGS}")

include(${CMAKE_CURRENT_LIST_DIR}/riscv32-unknown-elf.cmake)
4 changes: 2 additions & 2 deletions common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,9 @@ target_sources(${PROJECT_NAME}
)

# Add the Common/inc directory to the project include list
target_include_directories(${PROJECT_NAME}
target_include_directories(${PROJECT_NAME}
SYSTEM
PUBLIC
PUBLIC
${CMAKE_CURRENT_LIST_DIR}/inc
)

Loading
Loading