Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 63 additions & 7 deletions .github/workflows/real-time-cpp-benchmarks.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##############################################################################
# Copyright Christopher Kormanyos 2021 - 2025.
# Copyright Christopher Kormanyos 2021 - 2026.
# 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)
Expand Down Expand Up @@ -243,7 +243,7 @@ jobs:
- name: benchmark_single-stm32f446
run: |
mkdir -p bin
arm-none-eabi-g++ -std=c++20 -Wall -Wextra -Wpedantic -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/stm32f446 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./target/micros/stm32f446/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/stm32f446/make/stm32f446.ld -o ./bin/app_benchmark_crc.elf
arm-none-eabi-g++ -std=c++20 -Wall -Wextra -Wpedantic -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/stm32f446 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp ./target/micros/stm32f446/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/stm32f446/make/stm32f446.ld -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/
Expand Down Expand Up @@ -286,20 +286,20 @@ jobs:
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncursesw5_6.3-2ubuntu0.1_amd64.deb
sudo apt install ./libncursesw5_6.3-2ubuntu0.1_amd64.deb
mkdir -p emu_env && cd emu_env
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://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi.tar.xz
tar -xf arm-gnu-toolchain-14.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 }}/real-time-cpp/ref_app/emu_env/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/bin:$PATH"
PATH="${{ runner.workspace }}/real-time-cpp/ref_app/emu_env/arm-gnu-toolchain-14.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
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-g++ -std=c++23 -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 ./src/mcal/mcal_gcc_cxx_completion.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/
Expand All @@ -312,7 +312,7 @@ jobs:
- name: run-test-on-target
run: |
sleep 2
PATH="${{ runner.workspace }}/real-time-cpp/ref_app/emu_env/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/bin:$PATH"
PATH="${{ runner.workspace }}/real-time-cpp/ref_app/emu_env/arm-gnu-toolchain-14.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
Expand All @@ -321,3 +321,59 @@ jobs:
echo 'We will now grep for the right answer...'
grep 'value 0xF00DCAFE' ./app_benchmark_crc.txt
working-directory: ./ref_app/
benchmark_single-stm32f429-qemu-std-big-int:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: update-tools
run: |
sudo apt update
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
sudo apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncursesw5_6.3-2ubuntu0.1_amd64.deb
sudo apt install ./libncursesw5_6.3-2ubuntu0.1_amd64.deb
mkdir -p emu_env && cd emu_env
wget --no-check-certificate https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi.tar.xz
tar -xf arm-gnu-toolchain-14.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: clone-eisenwave-std-big-int
run: |
git clone -b main --depth 1 https://github.com/eisenwave/std-big-int.git ../../std-big-int-root
working-directory: ./ref_app/
- name: build benchmark_single-stm32f429
run: |
PATH="${{ runner.workspace }}/real-time-cpp/ref_app/emu_env/arm-gnu-toolchain-14.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
arm-none-eabi-g++ -std=c++23 -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 -I../../std-big-int-root/include -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_STD_BIG_INT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_std_big_int.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp ../../std-big-int-root/src/karatsuba.cpp ../../std-big-int-root/src/toom_cook_3.cpp ../../std-big-int-root/src/toom_cook_4.cpp ../../std-big-int-root/src/toom_cook_6_5.cpp ./target/micros/stm32f429/make/single/crt.cpp -nostartfiles -nostdlib -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_std_big_int.map -T ./target/micros/stm32f429/make/stm32f429.ld --specs=nano.specs --specs=nosys.specs -o ./bin/app_benchmark_std_big_int.elf
arm-none-eabi-objcopy ./bin/app_benchmark_std_big_int.elf -O ihex ./bin/app_benchmark_std_big_int.hex
ls -la ./bin/app_benchmark_std_big_int.elf ./bin/app_benchmark_std_big_int.hex ./bin/app_benchmark_std_big_int.map
working-directory: ./ref_app/
- name: emulate-target stm32f429
run: |
PATH="${{ runner.workspace }}/real-time-cpp/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: |
sleep 2
PATH="${{ runner.workspace }}/real-time-cpp/ref_app/emu_env/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi/bin:$PATH"
echo 'Run test on target'
echo
arm-none-eabi-gdb ./bin/app_benchmark_std_big_int.elf -x ./target/build/test_app_benchmarks_emulator.gdb > ./app_benchmark_std_big_int.txt
cat ./app_benchmark_std_big_int.txt
echo
echo 'We will now grep for the right answer...'
grep 'value 0xF00DCAFE' ./app_benchmark_std_big_int.txt
working-directory: ./ref_app/
2 changes: 1 addition & 1 deletion .github/workflows/real-time-cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ jobs:
fetch-depth: '0'
- uses: ilammy/msvc-dev-cmd@v1
with:
toolset: 14.2
toolset: 14.4
- name: msvc-msbuild-${{ matrix.suite }}
run: |
MSBuild -m ref_app.sln -p:Configuration=${{ matrix.suite }} -p:Platform=x64 /t:Rebuild
Expand Down
11 changes: 6 additions & 5 deletions examples/chapter10_08/readme.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Example Chapter10_08 (advanced level)

## External SPI RAM and Computing 10,001 Digits of Pi

<p align="center">
<a href="https://godbolt.org/z/EMx88ocxn" alt="godbolt">
<img src="https://img.shields.io/badge/try%20it%20on-godbolt-green" /></a>
<a href="https://godbolt.org/z/EMx88ocxn">
<img src="https://img.shields.io/badge/try%20it%20on-godbolt-green" alt="godbolt" /></a>
</p>

This advanced example extends available RAM via SPI SRAM chips.
Expand Down Expand Up @@ -134,7 +135,7 @@ These 8-pin SRAM chips are straightforward to use.
They are controlled with easy-to-understand commands
that execute read/write operations in either single byte sequences
or small page bursts. A lightweight communication class
called `mcal::memroy::sram::memory_sram_microchip_23lc1024`
called `mcal::memory::sram::memory_sram_microchip_23lc1024`
that is used to control the SRAM chips can be found
in the file
[mcal_memory_sram_microchip_23lc1024.h](./src/mcal/avr/mcal_memory_sram_microchip_23lc1024.h)
Expand Down Expand Up @@ -165,9 +166,9 @@ Pinning in this example is summarized in the table below.
The hardware setup is pictured in the image below with an oscilloscope measurement
in action.

![](./images/board10_08.jpg)
![Hardware Setup](./images/board10_08.jpg)

The PWM signal representing calculation progress is shown below.
The PWM signal has a frequency of approximately $2~\text{kHz}$.

![](./images/scope10_08.jpg)
![View of PWM signal on oscilloscope](./images/scope10_08.jpg)
15 changes: 8 additions & 7 deletions examples/chapter10_08a/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Example Chapter10_08a (advanced level)

## Parallel SRAM and Computing 100,001 Digits of Pi

This advanced example picks up on the idea of the previous Example Chapter10_08
Expand Down Expand Up @@ -30,12 +31,12 @@ Care needs to be taken to wire the parallel SRAM brick properly
(as shown below). When the hardware setup is correct,
however, it is actually relatively straightforward
(although definitely requires careful attention to detail)
to write a prallel SRAM driver for the 8-bit MCU.
to write a parallel SRAM driver for the 8-bit MCU.
The results of these activities
are expressed in the template classes
`mcal::memroy::sram::memory_sram_parallel_cypress_cy62158e`
`mcal::memory::sram::memory_sram_parallel_cypress_cy62158e`
and
`mcal::memroy::sram::memory_sram_parallel_cypress_cy62167gn`
`mcal::memory::sram::memory_sram_parallel_cypress_cy62167gn`
found in the files
[mcal_memory_sram_parallel_cypress_cy62158e.h](./src/mcal/avr/mcal_memory_sram_parallel_cypress_cy62158e.h)
and
Expand Down Expand Up @@ -89,7 +90,7 @@ This increases quadratically with increasing number
of decimal digits targeted in a given calculation.

Although we're not intending to break any super-computing
performace or speed records with the 8-bit MCU hooked up
performance or speed records with the 8-bit MCU hooked up
to external parallel SRAM, the advantage of parallel port access
can be noticed.
Indeed, in this setup, the $1,001$
Expand Down Expand Up @@ -130,7 +131,7 @@ or the $2~\text{MByte}$ brick.

The pin connections of the $2~\text{MByte}$ memory brick
of type Cypress(R) MoBL(R) CY62167GN in 48-pin TSOP
are shown in the table below. The pinnning has
are shown in the table below. The pinning has
been selected with certain considerations in mind that
make the software driver for the memory brick
more straightforward and less complicated to write.
Expand Down Expand Up @@ -194,11 +195,11 @@ read/write operations on the driver level.
The hardware setup with the $2~\text{MByte}$ SRAM brick
is pictured in the image below.

![](./images/board10_08a_2MB.jpg)
![2MByte Hardware Setup](./images/board10_08a_2MB.jpg)

### 1MB Setup

The hardware setup with the $1~\text{MByte}$ SRAM brick
is pictured in the image below.

![](./images/board10_08a_1MB.jpg)
![1MByte Hardware Setup](./images/board10_08a_1MB.jpg)
10 changes: 5 additions & 5 deletions examples/chapter10_09/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Example Chapter10_09 (advanced level)

## 100,001 Digits of Pi on Raspberry Pi(R)

This advanced example ports the Pi Spigot
Expand All @@ -21,7 +22,7 @@ in this example. It can be found in identically the same form
as that which has been used in Examples Chapter10_08 and 10_08a.
The single-board computer is operated
OS-less in _bare-metal_ mode with no input or output device.
Real-time afficionados will relish the eloquent, efficient, terse,
Real-time aficionados will relish the eloquent, efficient, terse,
manually-written startup sequence and memory-access optimization code.
A skinny MCAL layer provides the needed peripheral abstractions
for timer, port I/O driver, etc.
Expand Down Expand Up @@ -220,7 +221,7 @@ are used to connect the single-board computer to power, ground
and the necessary logic peripherals. Power and ground lines have
double and quadruple strands of skinny wire
in order to reduce parasitic dissipation
in the currrent-carrying lines.
in the current-carrying lines.

The logic gate sharpens port output signal edges
and performs the conversion from $3.3~\text{V}$ CMOS to $5~\text{V}$ TTL.
Expand Down Expand Up @@ -256,8 +257,7 @@ Pinning in this example is summarized in the table below.
| 27 | GPA_6 | LCD R/W |
| 28 | GPA_7 | LCD E |


The hardware setup with the RpiZero in action calculating
$100,001$ decimal digits of $\pi$ is pictured in the image below.
$100,001$ decimal digits of $\pi$ is pictured in the image below.

![](./images/board10_09.jpg)
![Hardware Setup with RpiZero](./images/board10_09.jpg)
5 changes: 3 additions & 2 deletions ref_app/ref_app.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4351;4646;4996</DisableSpecificWarnings>
<LanguageStandard>stdcpplatest</LanguageStandard>
<LanguageStandard>stdcpp23</LanguageStandard>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>
Expand All @@ -104,7 +104,7 @@
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4351;4646;4996</DisableSpecificWarnings>
<LanguageStandard>stdcpplatest</LanguageStandard>
<LanguageStandard>stdcpp23</LanguageStandard>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>
Expand Down Expand Up @@ -208,6 +208,7 @@
<ClCompile Include="src\app\benchmark\app_benchmark_pi_agm.cpp" />
<ClCompile Include="src\app\benchmark\app_benchmark_pi_spigot.cpp" />
<ClCompile Include="src\app\benchmark\app_benchmark_pi_spigot_single.cpp" />
<ClCompile Include="src\app\benchmark\app_benchmark_std_big_int.cpp" />
<ClCompile Include="src\app\benchmark\app_benchmark_trapezoid_integral.cpp" />
<ClCompile Include="src\app\benchmark\app_benchmark_wide_decimal.cpp" />
<ClCompile Include="src\app\benchmark\app_benchmark_wide_integer.cpp" />
Expand Down
3 changes: 3 additions & 0 deletions ref_app/ref_app.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -1402,6 +1402,9 @@
<ClCompile Include="src\mcal\esp32p4_riscv_soc\mcal_gpt.cpp">
<Filter>src\mcal\esp32p4_riscv_soc</Filter>
</ClCompile>
<ClCompile Include="src\app\benchmark\app_benchmark_std_big_int.cpp">
<Filter>src\app\benchmark</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\math\calculus\derivative.h">
Expand Down
4 changes: 4 additions & 0 deletions ref_app/src/app/benchmark/app_benchmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,10 @@ auto app::benchmark::task_func() -> void

const bool result_is_ok = app::benchmark::run_boost_crypt_hasher();

#elif (defined(APP_BENCHMARK_TYPE) && (APP_BENCHMARK_TYPE == APP_BENCHMARK_TYPE_STD_BIG_INT))

const bool result_is_ok = app::benchmark::run_std_big_int();

#endif

// Set the benchmark port pin level to low.
Expand Down
4 changes: 4 additions & 0 deletions ref_app/src/app/benchmark/app_benchmark.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#define APP_BENCHMARK_TYPE_NON_STD_DECIMAL 21
#define APP_BENCHMARK_TYPE_PI_AGM_100 22
#define APP_BENCHMARK_TYPE_BOOST_CRYPT_HASHER 23
#define APP_BENCHMARK_TYPE_STD_BIG_INT 24

//#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_NONE
//#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_COMPLEX
Expand All @@ -59,6 +60,7 @@
//#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_NON_STD_DECIMAL
//#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_PI_AGM_100
//#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_BOOST_CRYPT_HASHER
//#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_STD_BIG_INT

#if !defined(APP_BENCHMARK_TYPE)
#define APP_BENCHMARK_TYPE APP_BENCHMARK_TYPE_NONE
Expand Down Expand Up @@ -112,6 +114,8 @@
auto run_non_std_decimal() -> bool;
#elif (APP_BENCHMARK_TYPE == APP_BENCHMARK_TYPE_BOOST_CRYPT_HASHER)
auto run_boost_crypt_hasher() -> bool;
#elif (APP_BENCHMARK_TYPE == APP_BENCHMARK_TYPE_STD_BIG_INT)
auto run_std_big_int() -> bool;
#else
#error APP_BENCHMARK_TYPE is undefined.
#endif
Expand Down
2 changes: 1 addition & 1 deletion ref_app/src/app/benchmark/app_benchmark_crc.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2007 - 2019.
// Copyright Christopher Kormanyos 2007 - 2026.
// 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)
Expand Down
Loading
Loading