Optimize xTaskIncrementTick for configNUMBER_OF_CORES > 1 (#1118) #2535
This file contains 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
name: FreeRTOS-Kernel Demos | |
on: [push, pull_request] | |
env: | |
# The bash escape character is \033 | |
bashPass: \033[32;1mPASSED - | |
bashInfo: \033[33;1mINFO - | |
bashFail: \033[31;1mFAILED - | |
bashEnd: \033[0m | |
jobs: | |
WIN32-MSVC: | |
name: WIN32 MSVC | |
runs-on: windows-latest | |
steps: | |
- name: Checkout the FreeRTOS/FreeRTOS Repository | |
uses: actions/checkout@v4.1.1 | |
with: | |
ref: main | |
repository: FreeRTOS/FreeRTOS | |
submodules: 'recursive' | |
fetch-depth: 1 | |
# Checkout user pull request changes | |
- name: Checkout Pull Request | |
uses: actions/checkout@v4.1.1 | |
with: | |
path: ./FreeRTOS/Source | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v1.1 | |
- name: Build WIN32-MSVC Demo | |
working-directory: FreeRTOS/Demo/WIN32-MSVC | |
run: msbuild WIN32.sln -t:rebuild | |
- name: Build WIN32-MSVC-Static-Allocation-Only Demo | |
working-directory: FreeRTOS/Demo/WIN32-MSVC-Static-Allocation-Only | |
run: msbuild WIN32.sln -t:rebuild | |
WIN32-MingW: | |
name: WIN32 MingW | |
runs-on: windows-latest | |
steps: | |
- name: Checkout the FreeRTOS/FreeRTOS Repository | |
uses: actions/checkout@v4.1.1 | |
with: | |
ref: main | |
repository: FreeRTOS/FreeRTOS | |
submodules: 'recursive' | |
fetch-depth: 1 | |
# Checkout user pull request changes | |
- name: Checkout Pull Request | |
uses: actions/checkout@v4.1.1 | |
with: | |
path: ./FreeRTOS/Source | |
- name: Build WIN32-MingW Demo | |
working-directory: FreeRTOS/Demo/WIN32-MingW | |
run: | | |
gcc --version | |
make --version | |
make | |
POSIX-GCC: | |
name: Native GCC | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout the FreeRTOS/FreeRTOS Repository | |
uses: actions/checkout@v4.1.1 | |
with: | |
ref: main | |
repository: FreeRTOS/FreeRTOS | |
submodules: 'recursive' | |
fetch-depth: 1 | |
# Checkout user pull request changes | |
- name: Checkout Pull Request | |
uses: actions/checkout@v4.1.1 | |
with: | |
path: ./FreeRTOS/Source | |
- name: Install GCC | |
shell: bash | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install build-essential | |
- name: Build Posix_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/Posix_GCC | |
run: make -j | |
- name: Build Posix_GCC Demo for Coverage Test | |
shell: bash | |
working-directory: FreeRTOS/Demo/Posix_GCC | |
run: make -j COVERAGE_TEST=1 | |
CMake-Example: | |
name: CMake Example with Native GCC | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout user pull request changes | |
- name: Checkout Repository | |
uses: actions/checkout@v4.1.1 | |
- name: Install GCC | |
shell: bash | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install build-essential | |
- name: Build CMake Example Demo | |
shell: bash | |
working-directory: examples/cmake_example | |
run: | | |
cmake -S . -B build | |
cmake --build build | |
- name: Build CMake SMP Example Demo | |
shell: bash | |
working-directory: examples/cmake_example | |
run: | | |
cmake -S . -B build -DFREERTOS_SMP_EXAMPLE=1 | |
cmake --build build | |
MSP430-GCC: | |
name: GNU MSP430 Toolchain | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the FreeRTOS/FreeRTOS Repository | |
uses: actions/checkout@v4.1.1 | |
with: | |
ref: main | |
repository: FreeRTOS/FreeRTOS | |
submodules: 'recursive' | |
fetch-depth: 1 | |
# Checkout user pull request changes | |
- name: Checkout Pull Request | |
uses: actions/checkout@v4.1.1 | |
with: | |
path: ./FreeRTOS/Source | |
- name: Install MSP430 Toolchain | |
shell: bash | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install gcc-msp430 build-essential | |
- name: Build msp430_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/msp430_GCC | |
run: make -j | |
MicroBlaze-GCC: | |
name: GCC MicroBlaze Toolchain | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the FreeRTOS/FreeRTOS Repository | |
uses: actions/checkout@v4.1.1 | |
with: | |
ref: main | |
repository: FreeRTOS/FreeRTOS | |
fetch-depth: 1 | |
- env: | |
stepName: Fetch Community-Supported-Demos Submodule | |
shell: bash | |
run: | | |
# ${{ env.stepName }} | |
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos | |
# This repository contains the microblaze_instructions.h header file | |
git clone https://github.com/Xilinx/embeddedsw.git --branch xilinx_v2023.1 | |
echo "::endgroup::" | |
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
# Checkout user pull request changes | |
- name: Checkout Pull Request | |
uses: actions/checkout@v4.1.1 | |
with: | |
path: ./FreeRTOS/Source | |
- env: | |
stepName: Install Dependancies | |
shell: bash | |
run: | | |
# ${{ env.stepName }} | |
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
sudo apt update -y | |
sudo apt upgrade -y | |
sudo apt install -y build-essential m4 debhelper bison texinfo dejagnu flex | |
sudo apt install -y autogen gawk libgmp-dev libmpc-dev libmpfr-dev | |
sudo apt install -y patchutils sharutils zlib1g-dev autoconf2.64 | |
# Download the mb-gcc toolchain from github | |
curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/binutils-microblaze_2.35-2021-0623+1_amd64.deb; | |
curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/gcc-microblaze_10.2.0-2021-0623+2_amd64.deb; | |
curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze-dev_3.3.0-2021-0623+3_all.deb; | |
curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze-doc_3.3.0-2021-0623+3_all.deb; | |
curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze_3.3.0-2021-0623+3_all.deb; | |
curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/newlib-source_3.3.0-2021-0623+3_all.deb; | |
# Install the packages for the toolchain | |
sudo apt install -y ./binutils-microblaze*.deb; | |
sudo apt install -y ./gcc-microblaze*.deb; | |
sudo apt install -y ./libnewlib-microblaze-dev*.deb; | |
sudo apt install -y ./libnewlib-microblaze-doc*.deb; | |
sudo apt install -y ./libnewlib-microblaze*.deb; | |
sudo apt install -y ./newlib-source*.deb; | |
# Validate that the toolchain is in the path and can be called | |
which mb-gcc | |
mb-gcc --version | |
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
- env: | |
stepName: Compile Microblaze Port | |
shell: bash | |
run: | | |
# ${{ env.stepName }} | |
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
# Compile MicroBlazeV9 Port files to validate they build | |
mb-gcc -mcpu=v9.5 -c \ | |
FreeRTOS/Source/portable/GCC/MicroBlazeV9/port.c \ | |
FreeRTOS/Source/portable/GCC/MicroBlazeV9/portasm.S \ | |
FreeRTOS/Source/portable/GCC/MicroBlazeV9/port_exceptions.c \ | |
FreeRTOS/Source/tasks.c \ | |
FreeRTOS/Source/list.c \ | |
-I embeddedsw/lib/bsp/standalone/src/microblaze \ | |
-I FreeRTOS/Source/portable/GCC/MicroBlazeV9/ \ | |
-I FreeRTOS/Source/include \ | |
-I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/RTOSDemo/src \ | |
-I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/standalone_v5_4/src \ | |
-I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/include \ | |
-I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/intc_v3_5/src | |
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
ARM-GCC: | |
name: GNU ARM Toolchain | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the FreeRTOS/FreeRTOS Repository | |
uses: actions/checkout@v4.1.1 | |
with: | |
ref: main | |
repository: FreeRTOS/FreeRTOS | |
fetch-depth: 1 | |
- env: | |
stepName: Fetch Community-Supported-Demos Submodule | |
shell: bash | |
run: | | |
# ${{ env.stepName }} | |
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos | |
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
# Checkout user pull request changes | |
- name: Checkout Pull Request | |
uses: actions/checkout@v4.1.1 | |
with: | |
path: ./FreeRTOS/Source | |
- name: Install GNU ARM Toolchain | |
shell: bash | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install gcc-arm-none-eabi build-essential cmake git ninja-build python3-minimal | |
- name: Build CORTEX_MPU_M3_MPS2_QEMU_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC | |
run: make -j | |
- name: Build CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC | |
run: cmake -S . -B build && make -j -C build all | |
- name: Build CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC | |
run: cmake -S . -B build && make -j -C build all | |
- name: Build CORTEX_LM3S102_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC | |
run: make -j | |
- name: Build CORTEX_LM3S811_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC | |
run: make -j | |
- name: Build CORTEX_M0+_RP2040 Demos | |
shell: bash | |
working-directory: FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040 | |
run: | | |
git clone https://github.com/raspberrypi/pico-sdk.git | |
cmake -B build -DPICO_SDK_PATH=pico-sdk -GNinja | |
ninja -C build --verbose | |
- name: Build CORTEX_MPS2_QEMU_IAR_GCC Demo | |
shell: bash | |
working-directory: FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC | |
run: make -C build/gcc -j |