You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
319 lines
11 KiB
YAML
319 lines
11 KiB
YAML
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
|