Navigate to a parent directory of your choice and run the following command
$ git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules --depth 1
The previous command should create a directory named FreeRTOS
The Windows Subsystem for Linux allows you to run native Linux applications from a shell on your windows machine.
To set up your Windows 10 machine to run this QEMU based demo you can follow these steps
sudo apt-get update
sudo apt-get install -y make qemu qemu-system-arm
cd ~
# On x86 Architecture
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
tar -xjvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
# On ARM Architecture
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-aarch64-linux.tar.bz2
tar -xjvf gcc-arm-none-eabi-10.3-2021.10-aarch64-linux.tar.bz2
export PATH=”$PATH:$HOME/gcc-arm-none-eabi-10.3-2021.10/bin” export FREERTOS_DIR=/home/sang/Documents/Projects/self-learning/FreeRTOS/external/FreeRTOS/FreeRTOS
6. Clone FreeRTOS
git clone https://github.com/FreeRTOS/FreeRTOS.git –recurse-submodules
7. Compile the code
cd ./FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC make
8. Run the Blinky Demo
sudo qemu-system-arm -machine mps2-an385 -monitor null -semihosting –semihosting-config enable=on,target=native -kernel ./build/RTOSDemo.axf -serial stdio -nographic
sudo qemu-system-arm -machine mps2-an385 -monitor null -semihosting –semihosting-config enable=on,target=native -kernel ./build/FreeRTOS_Execution.axf -serial stdio -nographic
## Blinky Demo
### How to build blinky demo
Navigate with the command line to FreeRTOS/Demo/CORTEX\_M3\_MPS2\_QEMU\_GCC
For a release build run:
$ export PATH=/path/to/arm/toolchain:$PATH $ make
For a versions with debugging symbols and no optimizations **-O0**, run:
$ make DEBUG=1
### How to run the blinky demo
run:
$ sudo qemu-system-arm -machine mps2-an385 -monitor null -semihosting
–semihosting-config enable=on,target=native
-kernel ./build/RTOSDemo.axf
-serial stdio -nographic
### Blinky Demo Expectations
After running the blinky demo you shoud see on the screen the word blinking
printed continuously
## Full Demo
### How to build the Full Demo
Navigate with the command line to FreeRTOS/Demo/CORTEX\_M3\_MPS2\_QEMU\_GCC
For a release build run:
$ export PATH=/path/to/arm/toolchain:$PATH $ make FULL_DEMO=1
For a versions with debugging symbols and no optimizations **-O0**, run:
$ make FULL_DEMO=1 DEBUG=1
### How to run the Full Demo
run:
$ sudo qemu-system-arm -machine mps2-an385 -monitor null -semihosting
–semihosting-config enable=on,target=native
-kernel ./build/RTOSDemo.axf
-serial stdio -nographic
### Full Demo Expectations
The full demo includes a ‘check’ that executes every (simulated) ten seconds,
but has the highest priority to ensure it gets processing time. Its main
function is to check all the standard demo tasks are still operational. The
check task maintains a status string that is output to the console each time
it executes. If all the standard demo tasks are running without error, then
the string contains “OK” and the current tick count. If an error has been
detected, then the string contains a message that indicates which task
reported the error.
## How to start debugging
1. Build the debug version by using `DEBUG=1`:
$ make DEBUG=1
2. Run the binary with `-s` and `-S` flags:
$ sudo qemu-system-arm -machine mps2-an385 -monitor null -semihosting
–semihosting-config enable=on,target=native
-kernel ./build/RTOSDemo.axf
-serial stdio -nographic -s -S
The options: <br>
`-s` allows gdb to be attached to the process remotely at port 1234<br>
`-S` starts the program in the paused state.<br>
3. Open another terminal to run GDB and connect to the process:
$ arm-none-eabi-gdb -q ./build/RTOSDemo.axf (gdb) target remote :1234 (gdb) break main (gdb) c ```