diff --git a/.github/workflows/real-time-cpp-benchmarks.yml b/.github/workflows/real-time-cpp-benchmarks.yml
index 49dd20809..065f2b29f 100644
--- a/.github/workflows/real-time-cpp-benchmarks.yml
+++ b/.github/workflows/real-time-cpp-benchmarks.yml
@@ -198,45 +198,8 @@ jobs:
           ls -la ./bin/app_benchmark_cnl_scaled_integer.exe
           ./bin/app_benchmark_cnl_scaled_integer.exe
         working-directory: ./ref_app/
-  benchmark_single-stm32f429-qemu-cnl:
-    runs-on: ubuntu-22.04
-    defaults:
-      run:
-        shell: bash
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: '0'
-      - name: update-tools
-        run: |
-          sudo apt install libncurses5 libpython2.7
-          mkdir -p emu_env && cd emu_env
-          wget --no-check-certificate 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 -xf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
-          wget --no-check-certificate https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v7.1.0-1/xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz
-          tar -xzf xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz
-        working-directory: ./ref_app/
-      - name: benchmark_single-stm32f429-qemu-cnl
-        run: |
-          git clone -b main --depth 1 https://github.com/johnmcfarlane/cnl.git ../cnl-root
-          mkdir -p bin
-          ./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-g++ -std=c++20 -Wall -Wextra -pedantic -O2 -g -gdwarf-2 -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=128 -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -mfloat-abi=soft -mno-unaligned-access -mno-long-calls -I./src/mcal/stm32f429 -I./src -I../cnl-root/include -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CNL_SCALED_INTEGER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp ./target/micros/stm32f429/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_cnl_scaled_integer.map -T ./target/micros/stm32f429/make/stm32f429.ld -o ./bin/app_benchmark_cnl_scaled_integer.elf
-          ./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-objcopy ./bin/app_benchmark_cnl_scaled_integer.elf -O ihex ./bin/app_benchmark_cnl_scaled_integer.hex
-          ls -la ./bin/app_benchmark_cnl_scaled_integer.elf ./bin/app_benchmark_cnl_scaled_integer.hex ./bin/app_benchmark_cnl_scaled_integer.map
-        working-directory: ./ref_app/
-      - name: emulate-target stm32f429
-        run: |
-          ./emu_env/xpack-qemu-arm-7.1.0-1/bin/qemu-system-gnuarmeclipse --verbose --mcu STM32F429ZI --nographic --gdb tcp::9999 -d unimp,guest_errors &
-        working-directory: ./ref_app/
-      - name: run-test-on-target
-        run: |
-          ./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb-py ./bin/app_benchmark_cnl_scaled_integer.elf -x ./target/build/test_app_benchmarks_emulator.py
-          qemu_result=$?
-          echo "qemu_result" "$qemu_result"
-          echo "qemu_result" "$qemu_result" | grep 'qemu_result 0'
-        working-directory: ./ref_app/
   benchmark_single-stm32f429-qemu:
-    runs-on: ubuntu-22.04
+    runs-on: ubuntu-latest
     defaults:
       run:
         shell: bash
@@ -246,28 +209,40 @@ jobs:
           fetch-depth: '0'
       - name: update-tools
         run: |
-          sudo apt install libncurses5 libpython2.7
+          sudo apt install libncursesw5
           mkdir -p emu_env && cd emu_env
-          wget --no-check-certificate 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 -xf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
-          wget --no-check-certificate https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v7.1.0-1/xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz
-          tar -xzf xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz
+          wget --no-check-certificate https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
+          tar -xf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
+          wget --no-check-certificate https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v8.2.6-1/xpack-qemu-arm-8.2.6-1-linux-x64.tar.gz
+          tar -xzf xpack-qemu-arm-8.2.6-1-linux-x64.tar.gz
         working-directory: ./ref_app/
       - name: build benchmark_single-stm32f429
         run: |
+          PATH="${{ runner.workspace }}/qemu_arm_sample/ref_app/emu_env/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/bin:$PATH"
+          echo 'Query arm-none-eabi-g++ version'
+          echo
+          arm-none-eabi-g++ -v
+          echo
           mkdir -p bin
-          emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-g++ -std=c++20 -Wall -Wextra -pedantic -O0 -g -gdwarf-2 -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -mfloat-abi=soft -mno-unaligned-access -mno-long-calls -I./src/mcal/stm32f429 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./target/micros/stm32f429/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/stm32f429/make/stm32f429.ld --specs=nano.specs --specs=nosys.specs -o ./bin/app_benchmark_crc.elf
-          emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-objcopy ./bin/app_benchmark_crc.elf -O ihex ./bin/app_benchmark_crc.hex
+          arm-none-eabi-g++ -std=c++20 -Werror -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -O2 -g -gdwarf-2 -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -mfloat-abi=soft -mno-unaligned-access -mno-long-calls -I./src/mcal/stm32f429 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./target/micros/stm32f429/make/single/crt.cpp -nostartfiles -nostdlib -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/stm32f429/make/stm32f429.ld --specs=nano.specs --specs=nosys.specs -o ./bin/app_benchmark_crc.elf
+          arm-none-eabi-objcopy ./bin/app_benchmark_crc.elf -O ihex ./bin/app_benchmark_crc.hex
           ls -la ./bin/app_benchmark_crc.elf ./bin/app_benchmark_crc.hex ./bin/app_benchmark_crc.map
         working-directory: ./ref_app/
       - name: emulate-target stm32f429
         run: |
-          ./emu_env/xpack-qemu-arm-7.1.0-1/bin/qemu-system-gnuarmeclipse --verbose --mcu STM32F429ZI --nographic --gdb tcp::9999 -d unimp,guest_errors &
+          PATH="${{ runner.workspace }}/qemu_arm_sample/ref_app/emu_env/xpack-qemu-arm-8.2.6-1/bin:$PATH"
+          qemu-system-gnuarmeclipse --verbose --mcu STM32F429ZI --nographic --gdb tcp::9999 -d unimp,guest_errors &
+          sleep 2
         working-directory: ./ref_app/
       - name: run-test-on-target
         run: |
-          ./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb-py ./bin/app_benchmark_crc.elf -x ./target/build/test_app_benchmarks_emulator.py
-          qemu_result=$?
-          echo "qemu_result" "$qemu_result"
-          echo "qemu_result" "$qemu_result" | grep 'qemu_result 0'
+          sleep 2
+          PATH="${{ runner.workspace }}/qemu_arm_sample/ref_app/emu_env/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/bin:$PATH"
+          echo 'Run test on target'
+          echo
+          arm-none-eabi-gdb ./bin/app_benchmark_crc.elf -x ./target/build/test_app_benchmarks_emulator.gdb > ./app_benchmark_crc.txt
+          cat ./app_benchmark_crc.txt
+          echo
+          echo 'We will now grep for the right answer...'
+          grep 'value 0xF00DCAFE' ./app_benchmark_crc.txt
         working-directory: ./ref_app/
diff --git a/ref_app/target.vcxproj b/ref_app/target.vcxproj
index 7ba2783f8..24695c649 100644
--- a/ref_app/target.vcxproj
+++ b/ref_app/target.vcxproj
@@ -866,7 +866,7 @@
     
     
     
-    
+    
     
     
     
diff --git a/ref_app/target.vcxproj.filters b/ref_app/target.vcxproj.filters
index 3392b22bb..a80e342fc 100644
--- a/ref_app/target.vcxproj.filters
+++ b/ref_app/target.vcxproj.filters
@@ -516,9 +516,6 @@
     
       micros\v850es_fx2\startup
     
-    
-      build
-    
     
       micros\stm32h7a3\make
     
@@ -612,6 +609,9 @@
     
       micros\rpi_pico2_rp2350\startup
     
+    
+      build
+    
   
   
     
diff --git a/ref_app/target/build/test_app_benchmarks_emulator.gdb b/ref_app/target/build/test_app_benchmarks_emulator.gdb
new file mode 100644
index 000000000..c85858ba3
--- /dev/null
+++ b/ref_app/target/build/test_app_benchmarks_emulator.gdb
@@ -0,0 +1,28 @@
+# ///////////////////////////////////////////////////////////////////
+# //  Copyright Christopher Kormanyos 2020 - 2024.
+# //  Distributed under the Boost Software License,
+# //  Version 1.0. (See accompanying file LICENSE_1_0.txt
+# //  or copy at http://www.boost.org/LICENSE_1_0.txt)
+# //
+
+# Connect to the target (e.g., OpenOCD or another GDB server).
+target remote localhost:9999
+monitor halt
+
+# Ensure that the program is loaded.
+load
+
+# Set a breakpoint at the specified subroutine.
+break app_benchmark_get_standalone_result
+
+# Start or continue program execution.
+continue
+
+# Format and print the value of a variable.
+printf "value 0x%X\n\n", app_benchmark_standalone_result
+
+# Delete (all) breakpoint(s).
+delete
+
+# Perform a non-elegant quit of the GDB session.
+quit
diff --git a/ref_app/target/build/test_app_benchmarks_emulator.py b/ref_app/target/build/test_app_benchmarks_emulator.py
deleted file mode 100755
index e6f76c23b..000000000
--- a/ref_app/target/build/test_app_benchmarks_emulator.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#-------------------------------------------------------------------------------
-# Name:        test_app_benchmarks_emulator.py
-# Purpose:
-#
-# Author:      Christopher Kormanyos
-#
-# Created:     02/04/2021
-#
-# Copyright:   Copyright Christopher Kormanyos 2020 - 2024
-#
-# Licence:     Distributed under the Boost Software License,
-#              Version 1.0. (See accompanying file LICENSE_1_0.txt
-#              or copy at http://www.boost.org/LICENSE_1_0.txt)
-#-------------------------------------------------------------------------------
-
-#!/usr/bin/env python2
-
-# import python packages
-import gdb
-import time
-import logging
-import sys
-
-#-------------------------------------------------------------------------------
-# --- class: qemu_emulator
-#-------------------------------------------------------------------------------
-class qemu_emulator:
-    def __init__(self, tcp_port, iterations):
-        self.tcp_port   = tcp_port
-        self.iterations = iterations
-
-    # qemu initialization
-    def initialize(self):
-        self.connect_to_server(self.tcp_port)
-        self.create_log_file()
-        self.load_elf()
-
-    # Excute gdb commands
-    def execute(self, command, from_tty = False, to_string = False):
-        gdb.execute('{}'.format(command), from_tty, to_string)
-
-    # Create log file
-    def create_log_file(self):
-        logging.basicConfig(filename='emu-target.log',level=logging.DEBUG, filemode='w')
-        logging.info('------- Running GDB Test -----')
-
-    # Connect to server
-    def connect_to_server(self, tcp_port):
-        self.execute('target remote localhost:{}'.format(tcp_port))
-        self.execute('monitor reset')
-        self.execute('set confirm off')
-
-    # Load object data base
-    def load_elf(self):
-        self.execute('load')
-
-    # Run the benchmark
-    def run(self):
-        self.execute('continue')
-
-    def next(self):
-        self.execute('next')
-
-    # Set gdb Bp
-    def set_gdb_break_point(self):
-        my_bp = gdb.Breakpoint('app_benchmark_get_standalone_result')
-        return my_bp
-
-    # Delete gdb Bp
-    def delete_gdb_break_point(self, bp):
-        bp.delete()
-
-    # Get gdb result
-    def get_gdb_result(self):
-       my_result = gdb.parse_and_eval("app_benchmark_standalone_result")
-       return my_result
-
-    # Convert from gdb type to hex
-    def convert_to_hex(self, gdb_value):
-        val_as_str = str(gdb_value)
-        val_as_hex = hex(int(val_as_str))
-        return val_as_hex
-
-    # Check the gdb return value
-    def check_gdb_result(self, result_as_hex):
-       if result_as_hex == "0xf00dcafe":
-          return True
-       else:
-          return False
-
-#-------------------------------------------------------------------------------
-# --- GDB Script starts here
-# See also https://embeddedartistry.com/blog/2020/11/09/metal-gdb-controlling-gdb-through-python-scripts-with-the-gdb-python-api/
-#-------------------------------------------------------------------------------
-
-# Script Config
-tcp_port   = 9999
-iterations = 64
-
-# Create a qemu object
-obj = qemu_emulator(tcp_port, iterations)
-
-# Initialize
-obj.initialize()
-
-# Set break point
-bp1 = obj.set_gdb_break_point()
-
-# Run the benchmark
-obj.run()
-
-# Get gdb result
-my_value = obj.get_gdb_result()
-time.sleep(0.5)
-
-# Delete break point
-obj.delete_gdb_break_point(bp1)
-
-# Convert gdb result to hex
-value_as_hex = obj.convert_to_hex(my_value)
-
-# Print the return value
-print("Result value as hex: " + value_as_hex)
-
-# Check the gdb result and quit
-result_is_ok = obj.check_gdb_result(value_as_hex)
-
-if result_is_ok == True:
-    sys.exit(0)
-else:
-    sys.exit(-1)
diff --git a/ref_app/target/micros/stm32f429/make/single/crt.cpp b/ref_app/target/micros/stm32f429/make/single/crt.cpp
index 84a9cb684..86a9a78c6 100644
--- a/ref_app/target/micros/stm32f429/make/single/crt.cpp
+++ b/ref_app/target/micros/stm32f429/make/single/crt.cpp
@@ -1,10 +1,17 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Copyright Christopher Kormanyos 2018 - 2019.
+//  Copyright Christopher Kormanyos 2018 - 2024.
 //  Distributed under the Boost Software License,
 //  Version 1.0. (See accompanying file LICENSE_1_0.txt
 //  or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 
+#if defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstringop-overflow="
+#endif
+
 #include 
 #include 
 #include 
@@ -36,7 +43,8 @@ void __my_startup(void)
   // the base position of the interrupt vector table.
   // So we do nothing here.
 
-  // TBD: Chip init: Watchdog, port, and oscillator, if any needed.
+  // Note: Not needed:
+  // Chip init: Watchdog, port, and oscillator, if any needed.
 
   // Initialize statics from ROM to RAM.
   // Zero-clear default-initialized static RAM.
@@ -49,9 +57,7 @@ void __my_startup(void)
   asm volatile("ldr r3, =main");
   asm volatile("blx r3");
 
-  exit(EXIT_SUCCESS);
-
-  // TBD: Nothing on return from main.
+  // Do nothing on return from main.
 }
 
 extern "C" void _exit (int);
@@ -113,31 +119,31 @@ void crt::init_ctors()
 extern "C" void __initial_stack_pointer();
 
 extern "C" void __my_startup         () __attribute__((used, noinline));
-extern "C" void __vector_unused_irq  (void) __attribute__((used, noinline));
-extern "C" void __nmi_handler        (void) __attribute__((used, noinline));
-extern "C" void __hard_fault_handler (void) __attribute__((used, noinline));
-extern "C" void __mem_manage_handler (void) __attribute__((used, noinline));
-extern "C" void __bus_fault_handler  (void) __attribute__((used, noinline));
-extern "C" void __usage_fault_handler(void) __attribute__((used, noinline));
-extern "C" void __svc_handler        (void) __attribute__((used, noinline));
-extern "C" void __debug_mon_handler  (void) __attribute__((used, noinline));
-extern "C" void __pend_sv_handler    (void) __attribute__((used, noinline));
-extern "C" void __sys_tick_handler   (void) __attribute__((used, noinline));
+extern "C" void __vector_unused_irq  () __attribute__((used, noinline));
+extern "C" void __nmi_handler        () __attribute__((used, noinline));
+extern "C" void __hard_fault_handler () __attribute__((used, noinline));
+extern "C" void __mem_manage_handler () __attribute__((used, noinline));
+extern "C" void __bus_fault_handler  () __attribute__((used, noinline));
+extern "C" void __usage_fault_handler() __attribute__((used, noinline));
+extern "C" void __svc_handler        () __attribute__((used, noinline));
+extern "C" void __debug_mon_handler  () __attribute__((used, noinline));
+extern "C" void __pend_sv_handler    () __attribute__((used, noinline));
+extern "C" void __sys_tick_handler   () __attribute__((used, noinline));
 
-extern "C" void __vector_unused_irq  (void) { for(;;) { ; } }
-extern "C" void __nmi_handler        (void) { for(;;) { ; } }
-extern "C" void __hard_fault_handler (void) { for(;;) { ; } }
-extern "C" void __mem_manage_handler (void) { for(;;) { ; } }
-extern "C" void __bus_fault_handler  (void) { for(;;) { ; } }
-extern "C" void __usage_fault_handler(void) { for(;;) { ; } }
-extern "C" void __svc_handler        (void) { for(;;) { ; } }
-extern "C" void __debug_mon_handler  (void) { for(;;) { ; } }
-extern "C" void __pend_sv_handler    (void) { for(;;) { ; } }
-extern "C" void __sys_tick_handler   (void) { for(;;) { ; } }
+extern "C" void __vector_unused_irq  () { for(;;) { ; } }
+extern "C" void __nmi_handler        () { for(;;) { ; } }
+extern "C" void __hard_fault_handler () { for(;;) { ; } }
+extern "C" void __mem_manage_handler () { for(;;) { ; } }
+extern "C" void __bus_fault_handler  () { for(;;) { ; } }
+extern "C" void __usage_fault_handler() { for(;;) { ; } }
+extern "C" void __svc_handler        () { for(;;) { ; } }
+extern "C" void __debug_mon_handler  () { for(;;) { ; } }
+extern "C" void __pend_sv_handler    () { for(;;) { ; } }
+extern "C" void __sys_tick_handler   () { for(;;) { ; } }
 
 namespace
 {
-  typedef void(*isr_type)(void);
+  typedef void(*isr_type)();
 
   constexpr std::size_t number_of_interrupts = 128U;
 }
@@ -278,3 +284,7 @@ const volatile std::array __isr_vector =
   nullptr                    // 0x01FC, dummy
 }};
 
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#pragma GCC diagnostic pop
+#endif