1 name: FreeRTOS-Kernel Demos
2 on: [push, pull_request]
5 # The bash escape character is \033
6 bashPass: \033[32;1mPASSED -
7 bashInfo: \033[33;1mINFO -
8 bashFail: \033[31;1mFAILED -
14 runs-on: windows-latest
16 - name: Checkout the FreeRTOS/FreeRTOS Repository
17 uses: actions/checkout@v4.1.1
20 repository: FreeRTOS/FreeRTOS
21 submodules: 'recursive'
24 # Checkout user pull request changes
25 - name: Checkout Pull Request
26 uses: actions/checkout@v4.1.1
28 path: ./FreeRTOS/Source
30 - name: Add msbuild to PATH
31 uses: microsoft/setup-msbuild@v1.1
33 - name: Build WIN32-MSVC Demo
34 working-directory: FreeRTOS/Demo/WIN32-MSVC
35 run: msbuild WIN32.sln -t:rebuild
37 - name: Build WIN32-MSVC-Static-Allocation-Only Demo
38 working-directory: FreeRTOS/Demo/WIN32-MSVC-Static-Allocation-Only
39 run: msbuild WIN32.sln -t:rebuild
43 runs-on: windows-latest
45 - name: Checkout the FreeRTOS/FreeRTOS Repository
46 uses: actions/checkout@v4.1.1
49 repository: FreeRTOS/FreeRTOS
50 submodules: 'recursive'
53 # Checkout user pull request changes
54 - name: Checkout Pull Request
55 uses: actions/checkout@v4.1.1
57 path: ./FreeRTOS/Source
59 - name: Build WIN32-MingW Demo
60 working-directory: FreeRTOS/Demo/WIN32-MingW
74 runs-on: ${{ matrix.os }}
76 - name: Checkout the FreeRTOS/FreeRTOS Repository
77 uses: actions/checkout@v4.1.1
80 repository: FreeRTOS/FreeRTOS
81 submodules: 'recursive'
84 # Checkout user pull request changes
85 - name: Checkout Pull Request
86 uses: actions/checkout@v4.1.1
88 path: ./FreeRTOS/Source
92 if: matrix.os == 'ubuntu-latest'
94 sudo apt-get -y update
95 sudo apt-get -y install build-essential
97 - name: Build Posix_GCC Demo
99 working-directory: FreeRTOS/Demo/Posix_GCC
102 - name: Build Posix_GCC Demo for Coverage Test
104 working-directory: FreeRTOS/Demo/Posix_GCC
105 run: make -j COVERAGE_TEST=1
108 name: CMake Example with Native GCC
109 runs-on: ubuntu-latest
111 # Checkout user pull request changes
112 - name: Checkout Repository
113 uses: actions/checkout@v4.1.1
118 sudo apt-get -y update
119 sudo apt-get -y install build-essential
121 - name: Build CMake Example Demo
123 working-directory: examples/cmake_example
128 - name: Build CMake SMP Example Demo
130 working-directory: examples/cmake_example
132 cmake -S . -B build -DFREERTOS_SMP_EXAMPLE=1
136 name: GNU MSP430 Toolchain
137 runs-on: ubuntu-latest
139 - name: Checkout the FreeRTOS/FreeRTOS Repository
140 uses: actions/checkout@v4.1.1
143 repository: FreeRTOS/FreeRTOS
144 submodules: 'recursive'
147 # Checkout user pull request changes
148 - name: Checkout Pull Request
149 uses: actions/checkout@v4.1.1
151 path: ./FreeRTOS/Source
153 - name: Install MSP430 Toolchain
156 sudo apt-get -y update
157 sudo apt-get -y install gcc-msp430 build-essential
159 - name: Build msp430_GCC Demo
161 working-directory: FreeRTOS/Demo/msp430_GCC
165 name: GCC MicroBlaze Toolchain
166 runs-on: ubuntu-latest
168 - name: Checkout the FreeRTOS/FreeRTOS Repository
169 uses: actions/checkout@v4.1.1
172 repository: FreeRTOS/FreeRTOS
176 stepName: Fetch Community-Supported-Demos Submodule
179 # ${{ env.stepName }}
180 echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
181 git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos
182 # This repository contains the microblaze_instructions.h header file
183 git clone https://github.com/Xilinx/embeddedsw.git --branch xilinx_v2023.1
185 echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
187 # Checkout user pull request changes
188 - name: Checkout Pull Request
189 uses: actions/checkout@v4.1.1
191 path: ./FreeRTOS/Source
194 stepName: Install Dependancies
197 # ${{ env.stepName }}
198 echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
201 sudo apt install -y build-essential m4 debhelper bison texinfo dejagnu flex
202 sudo apt install -y autogen gawk libgmp-dev libmpc-dev libmpfr-dev
203 sudo apt install -y patchutils sharutils zlib1g-dev autoconf2.64
205 # Download the mb-gcc toolchain from github
206 curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/binutils-microblaze_2.35-2021-0623+1_amd64.deb;
207 curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/gcc-microblaze_10.2.0-2021-0623+2_amd64.deb;
208 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;
209 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;
210 curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze_3.3.0-2021-0623+3_all.deb;
211 curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/newlib-source_3.3.0-2021-0623+3_all.deb;
213 # Install the packages for the toolchain
214 sudo apt install -y ./binutils-microblaze*.deb;
215 sudo apt install -y ./gcc-microblaze*.deb;
216 sudo apt install -y ./libnewlib-microblaze-dev*.deb;
217 sudo apt install -y ./libnewlib-microblaze-doc*.deb;
218 sudo apt install -y ./libnewlib-microblaze*.deb;
219 sudo apt install -y ./newlib-source*.deb;
221 # Validate that the toolchain is in the path and can be called
225 echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
228 stepName: Compile Microblaze Port
231 # ${{ env.stepName }}
232 echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
233 # Compile MicroBlazeV9 Port files to validate they build
234 mb-gcc -mcpu=v9.5 -c \
235 FreeRTOS/Source/portable/GCC/MicroBlazeV9/port.c \
236 FreeRTOS/Source/portable/GCC/MicroBlazeV9/portasm.S \
237 FreeRTOS/Source/portable/GCC/MicroBlazeV9/port_exceptions.c \
238 FreeRTOS/Source/tasks.c \
239 FreeRTOS/Source/list.c \
240 -I embeddedsw/lib/bsp/standalone/src/microblaze \
241 -I FreeRTOS/Source/portable/GCC/MicroBlazeV9/ \
242 -I FreeRTOS/Source/include \
243 -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/RTOSDemo/src \
244 -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/standalone_v5_4/src \
245 -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/include \
246 -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/intc_v3_5/src
247 echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
251 name: GNU ARM Toolchain
252 runs-on: ubuntu-latest
254 - name: Checkout the FreeRTOS/FreeRTOS Repository
255 uses: actions/checkout@v4.1.1
258 repository: FreeRTOS/FreeRTOS
262 stepName: Fetch Community-Supported-Demos Submodule
265 # ${{ env.stepName }}
266 echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
267 git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos
268 echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
270 # Checkout user pull request changes
271 - name: Checkout Pull Request
272 uses: actions/checkout@v4.1.1
274 path: ./FreeRTOS/Source
276 - name: Install GNU ARM Toolchain
279 sudo apt-get -y update
280 sudo apt-get -y install gcc-arm-none-eabi build-essential cmake git ninja-build python3-minimal
282 - name: Build CORTEX_MPU_M3_MPS2_QEMU_GCC Demo
284 working-directory: FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC
287 - name: Build CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC Demo
289 working-directory: FreeRTOS/Demo/CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC
290 run: cmake -S . -B build && make -j -C build all
292 - name: Build CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC Demo
294 working-directory: FreeRTOS/Demo/CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC
295 run: cmake -S . -B build && make -j -C build all
297 - name: Build CORTEX_LM3S102_GCC Demo
299 working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC
302 - name: Build CORTEX_LM3S811_GCC Demo
304 working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC
307 - name: Build CORTEX_M0+_RP2040 Demos
309 working-directory: FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040
311 git clone https://github.com/raspberrypi/pico-sdk.git
312 cmake -B build -DPICO_SDK_PATH=pico-sdk -GNinja
313 ninja -C build --verbose
315 - name: Build CORTEX_MPS2_QEMU_IAR_GCC Demo
317 working-directory: FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC
318 run: make -C build/gcc -j