SOMNIUM® DRT Benchmarks Whitepaper
DRT v3.0 release : Feb 2016
www.somniumtech.com
SOMNIUM® DRT is a complete embedded software
development environment which supports ARM® Cortex® M
devices from major semiconductor vendors
Vendor
Family
Cortex
Atmel
SMART
M0+, M3, M4
NXP
Kinetis
M0+, M4
STMicroelectronics
STM32
M0, M0+, M3, M4
Other software vendors use adjectives. SOMNIUM use
facts. This whitepaper compares benchmarking results for
SOMNIUM DRT against other vendors' products to
demonstrate that DRT builds the smallest, fastest most
energy efficient code with no source code changes required.
No defeat devices! Unlike many well known software
vendors, SOMNIUM play fair and do not put “benchmark
special” features in our products to change their behavior in
the presence of known tests. We don't alter the benchmark
source code, and we always use the same tool options to get
an honest and fair comparison.
Small memory footprint for C execution
DRT uses a highly tuned and specifically configured C
runtime library with reduced memory footprint smaller than
Newlib. Its characteristics are:
Over 100% smaller ROM footprint than GNU Newlib
Slightly smaller ROM footprint than GNU Newlib Nano
Around 100% smaller statically allocated RAM overhead
than GNU Newlib Nano and GNU Newlib.
Unlike GNU Newlib Nano, memory is statically allocated
(where possible) and so RAM usage is easily predicated by
build time pass/fail.
A simple “empty” C program was used to show the minimum
ROM/RAM requirement to establish a C environment:
int main (int argc, char *argv[])
{
while (1) {}
return 0;
}
These memory savings made by DRT can have huge
practical impact on the usability of small memory
devices. DRT can save development time (by allowing
software development in C rather than ARM assembly
language), and increase the potential to use smaller
memory (and lower cost, lower energy) devices.
NXP Kinetis examples NXP provided CMSIS-Core routines
(from Kinetis Design Studio) are called before main() to
configure the on-chip PLL to highest possible frequency.
DRT's savings are significant on small memory devices
such as the KL series (starting at 8K ROM, 1K RAM).
Kinetis Cortex M0+ example (KL46Z)
ROM
DRT saving
KBytes (% and bytes)
DRT
n/a
n/a
1.8
KDS3 Nano
33%
608
2.4
KDS3 Newlib
121% 2204
3.9
CW10.6 Nano
39%
704
2.5
CW10.6 Newlib 4.5
151% 2764
CW10.6 EWL
182% 3332
5.0
KBytes
0.3
0.6
1.5
0.6
1.5
4.1
RAM
DRT saving
(% and bytes)
n/a
n/a
107%
300
454% 1272
109%
304
454% 1272
1381% 3868
Kinetis Cortex M4 example (K64F)
ROM
DRT saving
KBytes (% and bytes)
DRT 1.9
n/a
n/a
KDS 3 Nano 2.5
31%
616
KDS3 Newlib 4.0
108%
2116
CW10.6 Nano 2.6
37%
716
CW10.6 Newlib 4.6
142%
2784
CW10.6 EWL 4.9
157%
3068
RAM
DRT saving
KBytes (% and bytes)
n/a
n/a
0.3
107%
300
0.6
454% 1272
1.5
109%
304
0.6
454% 1272
1.5
1386% 3880
4.1
STMicroelectronics STM32 examples
We created an “Empty” C program natively in each IDE. DRT
saves a huge amount of ROM verus to SW4STM32, uses a
few bytes more ROM than Atollic, but much less RAM.
STM32F0 : Cortex M0+
KBytes
ROM
DRT saving
(% and bytes)
KBytes
RAM
DRT saving
(% and bytes)
DRT 3.0
0.6
n/a
n/a
0.1
n/a
n/a
SW4STM32
2.0
249%
1464
2.1
1423%
1992
Atollic
0.6
-1%
-4
0.3
111%
156
STM32F4 : Cortex M4
KBytes
ROM
DRT saving
(% and bytes)
KBytes
RAM
DRT saving
(% and bytes)
DRT 3.0
0.8
n/a
n/a
0.1
n/a
n/a
SW4STM32
1.9
144%
1176
2.1
1423%
1992
Atollic
0.8
-2%
-20
1.0
657%
920
Industry standard benchmarks
SOMNIUM are members of the EEMBC® Automotive
Subcommittee and use their industry standard benchmarks.
We believe that in order to be useful, benchmarks should
show 3 dimensions. Not just performance, but memory
size and energy.
SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited
All other product or service names are the property of their respected owners.
2016 SOMNIUM® Technologies Limited
SOMNIUM-MS-0049 v1.2
SOMNIUM® DRT Benchmarks Whitepaper
Its easy to obtain higher
performance by unrolling,
inlining and specializing
functions to the extreme,
but real world systems are
memory limited so this
approach makes little
sense if you want to get an
accurate understanding of
real world behaviour. We
always measure both
memory size, performance
and where possible we
measure energy, measured to the uJ using the high accuracy
EEMBC EnergyMonitor™ (due to its 29mA current limitation
we couldn't use it to perform measurements on all devices).
CoreMark is used to demonstrate the usable performance of
a processor system running typical algorithms including list
processing (to stress test data accesses), matrix manipulation
(to stress test and mathematical operations, and state
machines (to stress test complex control flows).
Atmel SMART results
semihosting mechanism to get results output without having
to change the benchmark's source code and built scripts
which we used unchanged with all the other tools we tested.
KL02 devices are quite constrained by their memory size and
performance. DRT doesn't significant increase KL02
CoreMark performance, but it does save significant
ROM/RAM and energy.
KV10 devices have high performance memory systems, with
a 16-entry, 4-way set associated flash cache. Even with this
high performance hardware, DRT still increases KV10
performance and saves energy whilst reducing codesize.
We compare against the vanilla GNU tools from Atmel Studio
6 and 7. DRT didn't affect RAM usage, but always
generated the smallest, fastest, lowest energy results.
K21 devices Similarly to the KV10, DRT saves memory size,
energy and increases performance.
NXP Kinetis results
STMicroelectronics STM32 results
We compared against the latest KDS3.1 tools (which use the
same GNU tools as KDS3.0) and the GNU ARM Launchpad 4.9
tools (extremely similar to the vanilla GNU 4.8.3 tools used in
Atollic TrueStudio but with support for the standard
We compared DRT against the SW4STM32 tools, but didn't
manage to compare against Atollic as TrueStudio doesn't
support the benchmark's use of the standard semihosting
mechanism (which we used with over 5 other different
SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited
All other product or service names are the property of their respected owners.
2016 SOMNIUM® Technologies Limited
SOMNIUM-MS-0049 v1.2
SOMNIUM® DRT Benchmarks Whitepaper
toolchains without having the change the source code or
build scripts). TrueStudio uses vanilla GCC so results would
be similar to the LaunchPad 4.9 results reported in the
Kinetis results above.
STM32L053 is an ultra low power device with a very simple
flash buffer rather than a cache. DRT can significantly
improve its performance and energy behaviour.
requiring no source code changes or change of
environment.
Micrium_uCOSII_Led_Blink_SAM4S_Xpro example
A basic Micrium Demo shows the ROM/RAM overhead on a
SAM4S (Cortex M4):
ROM
RAM
KBytes
DRT saving KBytes DRT saving
“out of box” @ -O1 using Newlib
DRT
n/a
n/a
11.9
17.9
Studio 6.2
92%
12%
22.8
20.0
“size optimized” @ -Os using Newlib Nano
DRT
n/a
n/a
11.4
17.9
Studio 6.2
12.3
8%
18.0
0.1%
SAMD21freertos_oled1_tickless_xpro_example
A basic FreeRTOS demo from ASF 3.24.21 using SAMD21
(Cortex M0+):
STM32F446 has 64-bit wide flash, with a very sophisticated
1KByte flash cache comprising 32 * 32 byte lines and a similar
256byte structure for data accesses to flash. Even with the
balanced processor and memory system, DRT can still
improve performance. Sadly we couldn't measure the
energy benefits of DRT as EEMBC EnergyMonitor can't supply
enough current to power this MCU.
ROM
RAM
KBytes
DRT saving KBytes DRT saving
“out of box” @ -O1 using Newlib Nano
17.9
24.4
DRT
n/a
n/a
19.7
24.4
Studio 6.2
10%
“size optimized” @ -Os using Newlib Nano
16.3
24.4
DRT
n/a
Studio 6.2
18.0
10%
24.4
0%
n/a
0.0%
NXP Kinetis examples
“Real world” demonstration systems
We examined a number of examples of NXP's Kinetis
software enablement which is supported for CodeWarrior
and KDS. Some Kinetis components (such as CMSIS) are
also supported for IAR tools, but several key items of
software enablement (including Sensor Fusion and
Intelligent Sensor Framework) are only provided for GNU
compatible tools (CodeWarrior and KDS). As DRT is fully
GNU compatible it supports all NXP Kinetis software
enablement without requiring any source code changes.
Its not just benchmarks! We examined “real world” software
(FreeRTOS, Micrium and real middleware such as code
generated by Atmel Software Framework, (Kinetis) Processor
Expert, Sensor Fusion Library, STM32 CubeMX, the eGUI
graphic library, Micrium and FreeRTOS.
“Attach” is a Freescale produced demonstration program,
originally written using CodeWarrior 10.6, then ported by
Freescale to KDS2.
Atmel ASF examples
No KDS configurations (KDS2, KDS3, Newlib or Newlib Nano)
result in an executable which fits within the MKL26Z128
device (ROM usage is too large, and RAM is almost full even
before heap and stack are allocated!)
Across the 2,427 unique ASF examples built @ Os (optimize
for size) on average DRT consumes 32% less ROM than code
generated with the default Atmel Studio GNU tools.
SOMNIUM DRT Atmel Studio Extension is provided as a
plug for Atmel Studio 6.2 and Atmel Studio 7. It
seamlessly integrates with Atmel's tools and is provided
as a new toolchain “flavor”. Using DRT rather than the
default GNU tools is a simple press button activity
Attach V1: only fits when built with DRT
ROM
RAM
KBytes DRT saving KBytes DRT saving
Attach V1 Demo @ Os : doesn't fit with KDS3 Nano
DRT 3.0
n/a
n/a
123.8
13.4
KDS3 Nano
3%
0%
128.4
13.4
KDS3 Newlib
11%
15%
137.3
15.4
SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited
All other product or service names are the property of their respected owners.
2016 SOMNIUM® Technologies Limited
SOMNIUM-MS-0049 v1.1
SOMNIUM® DRT Benchmarks Whitepaper
Attach V2: reduced features to fit with KDS3
Software manifest
Freescale made significant source modifications such that
when built with KDS3 Newlib Nano, Attach V2 “just” fits into
the available ROM and RAM.
Attach V2 Demo @ -Os : features cut so KDS3 Nano just fits
DRT 3.0
n/a
n/a
122.8
14.9
KDS3 Nano
3%
0%
127.0
14.9
KDS3 Newlib
18%
14%
144.8
17.0
Vendor
Product
Version
AC6 Tools
System Workbench for STM32
1.3.0
Studio
6.2 and 7.0
Software Framework
3.28.1
Atollic
TruesStudio for ARM
5.4.1
EEMBC
Energy Monitor
1.1.3
Codewarrior for MCUs
10.6
Kinetis Design Studio
3.1
DRT Cortex-M IDE
V3.0
DRT NXP Edition
V3.0
DRT Atmel Studio Extension
V3.0
Atmel
When built with DRT, both Attach V1 and V2 fit into the
available ROM and RAM. No source code changes were
required, no features were removed, and DRT made these
savings automatically.
NXP/Freescale
NXP Sensor Fusion Library
The Sensor Fusion Library and its example programs are
supplied as KDS3 source projects. We used DRT's automatic
KDS project importer/convertor to avoid the need for any
manual steps (this isn't possible with Atollic's tools which
require manual conversion so we don't quote Atollic results).
This demonstration shows that “off the shelf” Kinetis
software enablement ports to DRT with no changes
required and uses significantly less ROM built with DRT.
When options are modified to optimize for size, DRT still
products the smallest executable.
ROM
RAM
KBytes DRT saving KBytes DRT saving
FSF eCompass FRDM_KL46 @ -Os (optimize for size)
DRT 3.0
n/a
n/a
35.6
7.1
KDS3 Nano
7.3%
0.0%
38.2
7.1
FSF eCompass FRDM_KL46 @ -O3 (optimize for speed)
DRT 3.0
n/a
n/a
40.1
7.1
KDS3 Nano
20.0%
0.0%
48.1
7.1
STMicroelectronics STM32 examples
We used the “LCD photo frame” demo from STM32 CubeMX
using the examples provided for Atollic and SW4STM32 tools.
STM32F0 version DRT uses very slighly more ROM than
Atollic, but significantly less RAM.
KBytes
ROM
DRT saving
(% and bytes)
KBytes
30.2
n/a
n/a
4.5
n/a
n/a
Atollic
30.0
0%
-136
9.4
108%
4976
STM32F4 version DRT uses significantly less ROM and RAM
than SW4STM32.
KBytes
KBytes
Not all tools are equal
Free of charge tools are based on the industry standard GNU
and Eclipse tools. Many commercial products use the same
tools, or even older versions, giving you no benefits over free
products.
SOMNIUM are experts in GNU and Eclipse internals and
maintain GNU tools for major semiconductor vendors. We
are Freescale Proven Partners and produced Kinetis Design
Studio for Freescale.
Summary
DRT is the ideal upgrade path from entry level tools, with
unique features to generate the best code quality and save
development time and money. DRT's device-aware code
generation builds the most efficient program for your choice
of Cortex-M device, with no source code changes required.
DRT IDEs also include leading edge debug and trace features
to improve productivity and help you reach market faster.
DRT is available in three flavors
SOMNIUM DRT MCU support
RAM
DRT saving
(% and bytes)
DRT 3.0
30.3
n/a
n/a
4.5
n/a
n/a
SW4STM32
37.0
22%
6832
7.6
70%
3208
IDE
Atmel Studio Atmel SMART Windows hosted Atmel Visual
Extension
Studio
RAM
DRT saving
(% and bytes)
DRT 3.0
ROM
DRT saving
(% and bytes)
SOMNIUM
Cortex-M NXP Kinetis,
Edition1 STM32
2
Windows and Linux enhanced
Eclipse IDE with debug and trace
3
Trial and buy
Find out more and get a free of charge fully featured trial of
DRT from the SOMNIUM portal.
www.somniumtech.com/software-tools
1
2
3
NXP Edition IDE also available (as per Cortex-M Edition but only
supporting NXP devices)
Atmel SMART, NXP LPC support coming soon (more to follow)
MacOSX hosted coming soon
SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited
All other product or service names are the property of their respected owners.
2016 SOMNIUM® Technologies Limited
SOMNIUM-MS-0049 v1.2
© Copyright 2026 Paperzz