somnium® drt benchmarks whitepaper · somnium® drt benchmarks whitepaper kinetis cortex m0+...

8
SOMNIUM® DRT Benchmarks Whitepaper DRT 4.0 release : March 2017 www.somniumtech.com SOMNIUM® DRT is a complete C/C++ embedded software development environment which supports ARM® Cortex® M devices from leading semiconductor vendors. Vendor Family Cortex Microchip SAM M0+, M3, M4 NXP Kinetis M0+, M4 LPC M0, M0+, M3, 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 toolchain 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 a reduced memory footprint: Over 100% smaller ROM usage than GNU Newlib. Smaller ROM usage than GNU Newlib Nano. Around 100% smaller statically allocated RAM overhead than GNU Newlib Nano and GNU Newlib. Unlike vanilla GNU Newlib Nano, memory is statically allocated (where possible) and so RAM usage is easily predicted by build time pass/fail. Vastly smaller ROM and RAM usage than NXP RedLib. Similar/smaller ROM usage to IAR. Full support for C++ exception handling within the small memory footprint library. 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. Microchip SAM examples Atmel START was used to create an "empty" C program including Atmel Software Framework (ASF) routines to configure the on-chip PLL to highest possible frequency on a SAMD21 device (32KByte ROM, 4KByte RAM). IAR Embedded Workbench uses less memory than vanilla GNU tools from Atmel Studio, DRT does even better and uses the smallest amount of ROM. NXP Kinetis examples We used NXP's Kinetis SDK v2 (now renamed as MCUXpresso SDK) tools to create an "empty" C program (including use of Kinetis SDK v2 routines to enable the on-chip PLL) for a KL25Z device. DRT saves a significant amount of ROM compared to both vanilla GNU tools and IAR tools. Kinetis Cortex M0+ KSDK v2 example (KL25Z) Before KSDK v2 (now renamed MCUXpresso SDK), NXP's software enablement strategy was focussed on using the CMSIS-Core standard to enable the on-chip PLL before calling main(). We used CMSIS-Core GNU sources for an "empty C" program to compare tools. Once again DRT uses the smallest amount of ROM and RAM. These savings are very significant on small memory devices such as the KL series (starting at 8K ROM, 1K RAM). Kinetis Cortex CMSIS-Core M4 example (K64F) SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies Limited All other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b ROM RAM KBytes KBytes DRT 1.5 n/a n/a 8.7 n/a n/a Atmel STUDIO 1.8 24.1% 360 8.7 0.0% 0 IAR 1.5 2.4% 36 8.6 -0.4% -32 DRT is smaller (% and bytes) DRT is smaller (% and bytes) ROM RAM KBytes KBytes DRT 3.7 n/a n/a 2.5 n/a n/a KDS 3 6.7 79.8% 3056 2.5 0.0% 0 IAR 5.5 48.4% 1852 2.1 -16.4% -420 DRT is smaller (% and bytes) DRT is smaller (% and bytes) ROM RAM KBytes KBytes DRT 0.7 n/a n/a 0.3 n/a n/a KDS 3 Nano 2.5 250% 1840 0.6 101% 292 KDS3 Newlib 4.0 454% 3340 1.5 439% 1264 CW10.6 Nano 2.6 264% 1940 0.6 103% 296 CW10.6 Newlib 4.6 545% 4008 1.5 439% 1264 CW10.6 EWL 4.9 583% 4292 4.1 1344% 3872 TrueSTUDIO 0.9 22% 160 1.0 268% 772 DRT is smaller (% and bytes) DRT is smaller (% and bytes)

Upload: others

Post on 02-Feb-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

  • SOMNIUM® DRT Benchmarks Whitepaper DRT 4.0 release : March 2017

    www.somniumtech.com

    SOMNIUM® DRT is a complete C/C++ embedded softwaredevelopment environment which supports ARM® Cortex® Mdevices from leading semiconductor vendors.

    Vendor Family Cortex

    Microchip SAM M0+, M3, M4

    NXPKinetis M0+, M4

    LPC M0, M0+, M3, M4

    STMicroelectronics STM32 M0, M0+, M3, M4

    Other software vendors use adjectives. SOMNIUM usefacts. This whitepaper compares benchmarking results forSOMNIUM DRT against other toolchain products todemonstrate that DRT builds the smallest, fastest mostenergy efficient code with no source code changes required.

    No defeat devices! Unlike many well known softwarevendors, SOMNIUM play fair and do not put “benchmarkspecial” features in our products to change their behavior inthe presence of known tests. We don't alter the benchmarksource code, and we always use the same tool options to getan honest and fair comparison.

    Small memory footprint for C executionDRT uses a highly tuned and specifically configured Cruntime library with a reduced memory footprint:

    Over 100% smaller ROM usage than GNU Newlib. Smaller ROM usage than GNU Newlib Nano. Around 100% smaller statically allocated RAM overheadthan GNU Newlib Nano and GNU Newlib. Unlike vanilla GNU Newlib Nano, memory is staticallyallocated (where possible) and so RAM usage is easilypredicted by build time pass/fail. Vastly smaller ROM and RAM usage than NXP RedLib. Similar/smaller ROM usage to IAR. Full support for C++ exception handling within the smallmemory footprint library.

    A simple “empty” C program was used to show the minimumROM/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 hugepractical impact on the usability of small memorydevices. DRT can save development time (by allowingsoftware development in C rather than ARM assemblylanguage), and increase the potential to use smallermemory (and lower cost, lower energy) devices.

    Microchip SAM examples Atmel START was used to createan "empty" C program including Atmel Software Framework(ASF) routines to configure the on-chip PLL to highestpossible frequency on a SAMD21 device (32KByte ROM,4KByte RAM). IAR Embedded Workbench uses lessmemory than vanilla GNU tools from Atmel Studio, DRTdoes even better and uses the smallest amount of ROM.

    NXP Kinetis examples We used NXP's Kinetis SDK v2 (nowrenamed as MCUXpresso SDK) tools to create an "empty" Cprogram (including use of Kinetis SDK v2 routines to enablethe on-chip PLL) for a KL25Z device. DRT saves a significantamount of ROM compared to both vanilla GNU tools andIAR tools.

    Kinetis Cortex M0+ KSDK v2 example (KL25Z)

    Before KSDK v2 (now renamed MCUXpresso SDK), NXP'ssoftware enablement strategy was focussed on using theCMSIS-Core standard to enable the on-chip PLL beforecalling main(). We used CMSIS-Core GNU sources for an"empty C" program to compare tools. Once again DRT usesthe smallest amount of ROM and RAM. These savings arevery significant on small memory devices such as the KLseries (starting at 8K ROM, 1K RAM).

    Kinetis Cortex CMSIS-Core M4 example (K64F)

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

    ROM RAM

    KBytes KBytes

    DRT 1.5 n/a n/a 8.7 n/a n/aAtmel STUDIO 1.8 24.1% 360 8.7 0.0% 0

    IAR 1.5 2.4% 36 8.6 -0.4% -32

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 3.7 n/a n/a 2.5 n/a n/aKDS 3 6.7 79.8% 3056 2.5 0.0% 0

    IAR 5.5 48.4% 1852 2.1 -16.4% -420

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 0.7 n/a n/a 0.3 n/a n/aKDS 3 Nano 2.5 250% 1840 0.6 101% 292

    KDS3 Newlib 4.0 454% 3340 1.5 439% 1264CW10.6 Nano 2.6 264% 1940 0.6 103% 296

    CW10.6 Newlib 4.6 545% 4008 1.5 439% 1264CW10.6 EWL 4.9 583% 4292 4.1 1344% 3872TrueSTUDIO 0.9 22% 160 1.0 268% 772

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

  • SOMNIUM® DRT Benchmarks Whitepaper

    Kinetis Cortex M0+ CMSIS-Core example (KL46Z)

    NXP LPC examples NXP's LPCXpresso did not provide astandalone tool to create LPC projects (like Kinetis Expert) sowe took a the LPCOpen "periph_blink" demo and removedthe body code from main().DRT leaves more space for your application by makingsignificant memory savings on small memory devicessuch as the LPC8xx series (starting at 4K ROM, 1K RAM).

    LPC Cortex M0+ example (LPC824)

    LPC Cortex M4 example (LPC54114)

    STMicroelectronics STM32 examples

    We used STM32CubeMX to create an "empty C" programusing the HAL to enable clocks and PLL, perform defaultinitialization of GPIO, etc. DRT's savings are significant onlow-memory devices such as the STM32L0 (8K ROM).

    STMicroelectronics Cortex M0+ example (STM32L011D3)

    STMicroelectronics Cortex M4 example (STM32F446RE)

    We also tried creating an empty project using each IDE'sNPW and compared results. DRT's memory savings have asignificant impact on the use of small memory STM32devices, especially compared to SW4STM32.

    STM32F0 : Cortex M0+

    STM32F4 : Cortex M4

    Industry standard benchmarksSOMNIUM are members of the EEMBC® AutomotiveSubcommittee and use their industry standard benchmarks.We believe that in order to be useful, benchmarks shouldshow 3 dimensions - not just performance, but memorysize and energy. It's easy to obtain higher performance by

    unrolling, inlining andspecializing functions to theextreme, but real worldsystems are memory limitedso this approach makes littlesense if you want to get anaccurate understanding of realworld behaviour. We alwaysmeasure both memory size,performance and wherepossible we measure energy,

    measured to the uJ using the high accuracy EEMBCEnergyMonitor™ (due to its 29mA current limitation wecouldn't use it to perform measurements on all devices).CoreMark™ is used to demonstrate the usable performanceof a processor system running typical algorithms includinglist processing (to stress test data accesses), matrixmanipulation (to stress test and mathematical operations,and state machines (to stress test complex control flows).

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

    ROM RAM

    KBytes KBytes

    DRT 2.9 n/a n/a 0.0 n/a n/aLPCX Nano 3.6 24% 720 0.1 1600% 128

    LPCX RedLib 4.8 64% 1924 0.5 5800% 464TrueSTUDIO 3.2 9% 284 0.0 0% 0

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 4.1 n/a n/a 0.0 n/a n/aLPCX Nano 4.5 9% 364 0.0 0% 0

    LPCX RedLib 5.8 40% 1712 0.3 2800% 336TrueSTUDIO LPC54114 not supported in TrueSTUDIO

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 2.7 n/a n/a 1.5 n/a n/aSW4STM32 3.0 13% 348 1.5 0% 4

    TrueSTUDIO 3.0 12% 316 1.5 0% 0IAR 2.7 1% 16 1.5 -2% -36

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 3.3 n/a n/a 1.5 n/a n/aSW4STM32 3.4 3% 104 1.5 0% 4

    TrueSTUDIO 3.4 2% 76 1.5 0% 0IAR 3.5 6% 204 1.5 -2% -36

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 0.5 n/a n/a 0.1 n/a n/aSW4STM32 0.7 42% 200 0.0 -71% -96

    TrueSTUDIO 0.5 17% 80 0.2 21% 28

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 0.7 n/a n/a 0.1 n/a n/aSW4STM32 0.7 0% 0 0.0 -71% -96

    TrueSTUDIO 0.9 36% 244 0.0 -74% -100

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 0.6 n/a n/a 0.3 n/a n/aKDS3 Nano 2.4 317% 1852 0.6 101% 292

    KDS3 Newlib 3.9 590% 3448 1.5 439% 1264CW10.6 Nano 2.5 334% 1948 0.6 103% 296

    CW10.6 Newlib 4.5 686% 4008 1.5 439% 1264CW10.6 EWL 5.0 784% 4576 4.1 1340% 3860TrueSTUDIO 0.6 -3% -20 0.3 1% 4

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

  • SOMNIUM® DRT Benchmarks Whitepaper

    Microchip SAM results

    We compare DRT to the vanilla GNU tools from Atmel Studioand Atollic TrueSTUDIO's recent vanilla GNU tools.

    DRT didn't affect RAM usage, but always generated thesmallest code and the fastest and lowest energy results.

    NXP Kinetis results

    We compared against the latest KDS3.2 tools (which use anolder version of the GNU ARM Launchpad tools to avoidsome code generation bugs present in newer versions of thevanilla GNU tools), and also compared against the latestvanilla GNU ARM Launchpad tools used in the MCUXpressoIDE.

    KL02 devices are quite constrained by their memory size andperformance. Even with low-end devices, DRT provideshuge performance increase of over 50% compared tovanilla GNU tools, with significant memory and energysavings.

    KV10 devices use an M0+ processor and have highperformance memory systems, with a 16-entry, 4-way setassociated flash cache. Even with this high performancehardware, DRT significantly improves KV10 performanceand energy whilst reducing codesize.

    K21 devices K21 use an M4 processor and has an extremeperformance memory system with a 128-bit speculationbuffer and a 16-entry, 4-way 128-bit line set associated flashcache. Even with the K21's sophisticated cache, DRTprovides significant energy savings, whilst also reducingcodesize and improving performance.

    NXP LPC results

    We compared DRT to the LPCXpresso/MCUXpresso toolswhich use vanilla GCC5x (similar to the GNU tools as used inAtollic TrueStudio) both of which contain code generationbugs (which are not present in DRT's validated tools).

    LPC8xx devices LPC824 is an entry level device with no flashcache. DRT improves performance and energy usagewhilst producing significant reductions in memory usage.

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

  • SOMNIUM® DRT Benchmarks Whitepaper

    STMicroelectronics STM32 results

    We compared DRT against the SW4STM32 tools andTrueSTUDIO (both of which use the same vanilla GNU GCC5x/6x tools as free of charge products and contain the samebugs which are fixed in DRT's validated tools).

    STM32F446 has 64-bit wide flash, with a very sophisticated1KByte flash cache comprising 32 * 32 byte lines and asimilar 256byte structure for data accesses to flash whichallow the Cortex M4 processor to run at full speed withoutbeing impacted by instruction fetch latency.

    DRT increased performance whilst also using smallerROM and RAM footprint. Sadly we couldn't measure theenergy benefits of DRT as EEMBC EnergyMonitor can't supplyenough current to power this MCU.

    STM32L053 is an ultra low power device with a very simpleflash buffer rather than a cache. DRT can significantlyimprove its performance and energy behaviour whilstusing less ROM and RAM.

    “Real world” demonstration systemsIts not just benchmarks! We examined applications whichuse “real world” middleware including FreeRTOS, MicriumuCOS, code generated using Atmel START and AtmelSoftware Framework, (Kinetis) Processor Expert, Kinetis SDKv2/MCUXpresso SDK, Sensor Fusion Library, LPCOpen andSTM32CubeMX.

    Microchip ASF examples

    SOMNIUM DRT Cortex-M IDE supports Microchip devices andis available on Windows, Linux and macOS. DRT is fully

    integrated with Atmel START for ASF project creation andprovides state of the art debug facilities. We also offerSOMNIUM DRT Atmel Studio Extension - a plugin for AtmelAtmel Studio 7 which is provided as a new toolchain “flavor”.Using DRT rather than the default GNU tools is a simple pressbutton activity requiring no source code changes or changeof environment.

    Across the 2,343 unique ASF examples built @ Os(optimize for size) on average DRT consumes 32% lessROM than the default Atmel Studio GNU tools.

    SAMD21freertos_oled1_tickless_xpro_example

    A basic FreeRTOS demo from Atmel START using SAMD21(Cortex M0+). The SAMD21 is not supported in TrueSTUDIOso we created a project for SAMD20 instead

    Micrium_uCOSII_Led_Blink_SAM4S_Xpro example

    A basic Micrium Demo from Atmel START shows theROM/RAM overhead on a SAM4S (Cortex M4):

    SAMB11 PXP demo uses a BLE software stack supplied as aprebuilt library, which DRT can't optimize. Despite thislibrary forming over 70% of the codesize of this demo, DRTstill provides moderate memory savings. This shows howDRT can leave more memory available for your application inresource constrained devices even when it is used with pre-built libraries which it can't optimize.

    SAMD21 USB CDC demo implements a USB CompositeDevice with Communication Device Class (CDC) and MassStorage interfaces on a SAMD21 device. The source wasdownloaded from Atmel START and is available for GNU and

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

    ROM RAM

    KBytes KBytes

    DRT 35.5 n/a n/a 7.7 n/a n/aAtmel STUDIO 38.2 7.5% 2716 7.8 0.2% 16

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    “out of the box” @ -O1 using NewlibDRT 11.9 n/a n/a 17.9 n/a n/a

    Atmel STUDIO 22.9 92.4% 11280 20.0 11.5% 2120“size optimized” @ -Os using Newlib Nano

    DRT 11.3 n/a n/a 17.9 n/a n/aAtmel STUDIO 12.6 11.5% 1332 18.0 0.1% 24

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 9.3 n/a n/a 11.5 n/a n/aAtmel STUDIO 10.5 13.3% 1260 11.5 -0.1% -12

    TrueSTUDIO 9.7 5.0% 472 11.5 0.0% 0

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

  • SOMNIUM® DRT Benchmarks Whitepaper

    IAR tools. Many parts of ASF use GNU-specific C extensionssuch as typeof which aren't supported by IAR's non GNU-compatible compiler, the CDC demo is a rare example whichcan be built using IAR without changes. DRT generates asmaller ROM image for the vanilla GNU and the IAR tools.

    SAMD21 BLE HR-Sensor demo contains a BLE stack providedas an IAR-prebuilt library which corresponds to around 50%of the total ROM usage. DRT can link against this library butcannot optimize it. Despite this, DRT generates a ROM sizecomparable to the IAR tools and significantly smallerthan vanilla GNU tools used in Atmel Studio and otherproducts such as Atollic TrueSTUDIO.

    NXP Kinetis examples

    We examined a number of examples of NXP's Kinetissoftware enablement which is supported for CodeWarriorand KDS (NXP don't provide a migration route to their newMCUXpresso IDE though SOMNIUM DRT can migrate existingprojects!). Some Kinetis components (such as CMSIS) arealso supported for IAR tools, but several key items ofsoftware enablement (including Sensor Fusion andIntelligent Sensor Framework) are only provided for GNUcompatible tools (CodeWarrior and KDS). As DRT is fullyGNU compatible it supports all NXP Kinetis softwareenablement without requiring any source code changes.

    “Attach” is a Freescale produced demonstration program,originally written using CodeWarrior 10.6, then ported byFreescale to KDS2.

    Attach V1: only fits when built with DRT

    No KDS configurations (KDS2, KDS3, Newlib or Newlib Nano)result in an executable which fits within the MKL26Z128device (ROM usage is too large, and RAM is almost full even

    before heap and stack are allocated!)

    Attach V2: reduced features to fit with KDS3

    Freescale made significant source modifications such thatwhen built with KDS3 Newlib Nano, Attach V2 “just” fits intothe available ROM and RAM. When built with DRT, bothAttach V1 and V2 fit into the available ROM and RAM. Nosource code changes were required, no features wereremoved, and DRT could import the project and realizethese savings automatically.

    NXP Sensor Fusion Library

    The Sensor Fusion Library and its example programs weresupplied as KDS3 source projects. We used DRT's automaticKDS project importer/convertor to avoid the need for anymanual steps (this isn't possible with Atollic's tools whichrequire manual conversion, and similarly it isn't possiblewith MCUXpresso IDE which can't import existing KDSprojects) but we manually ported this example toTrueSTUDIO to compare results.

    This demonstration shows that “off the shelf” Kinetissoftware enablement ports to DRT with no changesrequired and uses significantly less ROM built with DRT.When options are modified to optimize for size, DRT stillproduces the smallest executable.

    KSDK v2 adc_16_lower_power_async_dma

    A KSDK v2 example available for GNU and IAR tools whichuses ADC and DMA APIs widely used in real applications.Once again DRT requires less ROM than both IAR's toolsand vanilla GNU tools, and less RAM than vanilla GNUtools.

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

    ROM RAM

    KBytes KBytes

    DRT 8.4 n/a n/a 10.4 n/a n/aAtmel STUDIO 9.7 14.8% 1280 10.4 0.0% 0

    IAR 9.6 13.8% 1191 10.3 -0.3% -32

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    KL46Z Sensor Fusion

    ROM RAM

    KBytes KBytes

    “Out of box” @ O3DRT 40.2 n/a n/a 7.1 n/a n/a

    KDS3 Nano 47.9 19% 7936 7.1 0% 4CW10.6 Nano 43.2 8% 3105 6.9 -2% -158

    Optimized for size @ OsDRT 34.8 n/a n/a 7.1 n/a n/a

    KDS3 Nano 38.1 9% 3328 7.1 0% 4TrueSTUDIO 37.5 8% 2732 7.1 0% -4

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    Attach V2 Demo @ -Os : features cut so KDS3 Nano just fits

    ROM RAM

    KBytes KBytes

    DRT 121.6 n/a n/a 14.9 n/a n/aKDS3 Nano 127.0 4% 5544 14.9 0% -22

    KDS3 Newlib 144.8 19% 23771 25.0 68% 10320

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 48.9 n/a n/a 17.3 n/a n/aAtmel STUDIO 54.1 10.7% 5352 17.5 1.3% 224

    IAR 46.4 -5.2% -2608 17.4 0.3% 52

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    Attach V1 Demo @ Os : doesn't fit with KDS3 Newlib or Nano

    ROM RAM

    KBytes KBytes

    DRT 123.1 n/a n/a 13.5 n/a n/aKDS3 Nano 128.4 4% 5462 13.4 -1% -74

    KDS3 Newlib 137.3 12% 14575 15.4 14% 1974

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

  • SOMNIUM® DRT Benchmarks Whitepaper

    KSDK v2 KL25Z FreeRTOS framework

    We used KSDK v2 (now renamed MCUXpresso SDK) to createa FreeRTOS demo and exported it as IAR source and KDSsource. DRT always builds the smallest ROM imagecompared to IAR and vanilla GNU.

    NXP LPC examples

    We examined a number of NXP LPC software examples forLPCXpresso which make use of LPCOpen components.

    LPCOpen FreeRTOS blinky demo @ -Os

    A basic FreeRTOS demo from LPCOpen showing the basicoverhead required for LPCOpen & FreeRTOS. DRT's ROMsavings show how using DRT frees up valuable memory,leaving space for your application. For this demo IAR usesmarginally less ROM than DRT, but requires significantlymore RAM which is very limited on the target LPC824device (8KBytes ROM, 2KBytes RAM).

    LPC824 QuickJack demo

    "The flexible Smartphone Quick-Jack Solution adapts thestandard 3.5 mm stereo audio jack found on most iOS orAndroid smart devices into a self-powered data port andprovides a universal interface for external sensors, switchesand other external devices. It gives both consumer and

    industrial product designers a simple, plug-and-go way to getdata into an endless variety of control, monitoring, datacollection, maintenance, medical and even fun applications."

    Built with DRT the QuickJack demo is significantlysmaller than LPCXpresso using RedLib, and is alsosmaller than built with IAR.

    Gesture recognition demo

    The LPC824 Touch Library API is used to drive and scancapacitive sensors, processes their signal data, filters outnoise and provides touch data. The LPCOpen TouchLibrary is supplied pre-built and accounts for ~45% of thisdemo's ROM usage. As such it can't be optimized by DRTthough DRT still provides impressive memory savingscompared to both IAR and the vanilla GNU tools used inLPCXpresso/MCUXpresso and TrueSTUDIO.

    STMicroelectronics STM32 examples

    We tested DRT with the STM32CubeMX demo examplessupplied for GNU and IAR tools. These examples use realCubeMX middleware widely used in real applications.

    These examples show that DRT generates significantlysmaller code than IAR's proprietary non-industrystandard compiler and other vanilla GNU tools. It alsoshows that SW4STM32 has some severe codebloat forCortex M4 devices compared to other vanilla GNU tools.

    STM32F091RC_Nucleo “photoframe” demo

    STM32F4xx_Nucleo “photoframe” demo

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

    ROM RAM

    KBytes KBytes

    DRT 10.3 n/a n/a 3.4 n/a n/aLPCX Nano 11.0 6% 644 11.0 0% 4

    LPCX RedLib 12.2 18% 1860 12.2 10% 340TrueSTUDIO 11.0 6% 652 3.4 0% 4

    IAR 11.4 10% 1048 3.4 0% 4

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 10.3 n/a n/a 3.4 n/a n/aLPCX Nano 11.0 6% 644 11.0 0% 4

    LPCX RedLib 12.2 18% 1860 12.2 10% 340TrueSTUDIO 11.0 6% 652 3.4 0% 4

    IAR 11.4 10% 1048 3.4 0% 4

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 28.0 n/a n/a 7.6 n/a n/aSW4STM32 35.3 26.4% 7560 7.7 0.5% 36

    TrueSTUDIO 42.4 51.7% 14812 8.9 16.5% 1288IAR 32.6 16.6% 4767 8.0 4.6% 360

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 30.4 n/a n/a 18.7 n/a n/aSW4STM32 38.1 25.0% 7792 18.7 0.1% 20

    TrueSTUDIO 31.3 2.7% 848 18.7 0.0% 4IAR 36.4 19.5% 6085 19.1 2.4% 464

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 6.1 n/a n/a 0.4 n/a n/aLPCX Nano 7.0 14% 896 7.0 29% 128

    LPCX RedLib 7.5 23% 1420 7.5 78% 348IAR 5.5 -10% -595 1.8 325% 1442

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 9.3 n/a n/a 19.5 n/a n/aKDS 3 11.6 24.7% 2348 19.5 0.0% 0

    IAR 10.5 13.4% 1270 18.5 -5.2% -1040

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

    ROM RAM

    KBytes KBytes

    DRT 6.4 n/a n/a 2.5 n/a n/aKDS 3 9.7 52.0% 3384 3.0 19.9% 512

    IAR 8.1 27.3% 1774 2.2 -13.7% -352

    DRT is smaller(% and bytes)

    DRT is smaller(% and bytes)

  • SOMNIUM® DRT Benchmarks Whitepaper

    Not all tools are equal

    Other free of charge and commercial products freeload onthe vanilla GNU ARM Launchpad project and offer no benefitsover free products, generating code which is significantlyworse than IAR's proprietary compiler.

    DRT offers full GNU compatibility combined with ourpatented resequencing linker and libraries to optimize yourcode to save memory, energy and deliver higherperformance compared to vanilla GNU tools and otherproprietary compilers such as IAR EWARM.

    SOMNIUM are experts in GNU internals and maintain toolsfor leading semiconductor vendors. DRT uses SOMNIUM'scustom build of GNU tools, fully debugged, bugfixed andtested using commercial validation suites used for othercertified ISO26262 tools.

    Unlike other GNU compatible products we take quality seriously so you can be sure each release of DRT generates correct code with smaller, faster, more optimal results than the previous version.

    Interested in certified tools? Find out about DRT ISO26262 qualification kit by emailing [email protected]

    Technical support and updates

    DRT is provided with full documentation, include a gettingstart guide and full reference manual. Our Youtube channelcontains training and demonstration videos of DRT'sfeatures. The SOMNIUM portal provides access to ourknowledgebase, support portal and ticketing system.

    DRT licensees get complimentary access to the portal withproduct updates for 12 months, and you can renew this eachyear for 20% of purchase price. DRT is a mature product, butwe provide updates approxmiately every 3 months - withnew features, new optimizations and support for our siliconpartners' latest devices.

    Industry partners

    SOMNIUM are a Microchip Trusted Third Party Supplier.

    SOMNIUM are NXP Proven Partners and produced KinetisDesign Studio for Freescale.

    SOMNIUM displaced RedHat as the GNU services provider toTexas Instruments for the MSP430 GNU tools.

    SOMNIUM are founder members of the Embedded ToolsAlliance.

    www.somniumtech.com/eta

    Summary

    DRT is the ideal upgrade path from entry level tools, withunique features and validated tools to generate the bestcode quality and save development time and money.

    DRT's device-aware code generation builds the mostefficient program for your choice of Cortex-M device, with nosource code changes required.

    DRT IDEs also include state of the art debug and tracefeatures to improve productivity and help you reach marketfaster.

    DRT is available in three flavors.

    DRT MCU support IDE

    Atmel StudioExtension

    Microchip SAM Windows hosted Atmel Visual Studio

    Cortex-M IDE1 Microchip SAMNXP KinetisNXP LPC, STMicroelectronics STM32

    Windows, Linux and macOS hosted Eclipse IDE with state of the art debug and trace

    Trial and buyThe pricing of the DRT tools, combined with the flexiblelicensing terms, mean that DRT is a very competitive solutionfor professional software developers.

    Free trial licenses are available to enable you to test the DRTtools with your project. The SOMNIUM advanced projectimporter makes it easy to migrate your code to DRT forevaluation and future development work.

    DRT trial licenses are fully-functional but time limited. Thismeans you can test all the features of DRT on a full-sizeproject to ensure it meets your needs.

    Find out more and get a free of charge fully featured trial ofDRT from the SOMNIUM portal:

    www.somniumtech.com/product-selector

    Watch video tutorials and demonstrations at:

    www.youtube.com/c/somniumtech

    1 SOMNIUM NXP Edition IDE also available (only supporting NXP devices)

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b

    http://www.somniumtech.com/etahttp://www.youtube.com/c/somniumtechhttp://www.somniumtech.com/product-selectorhttp://www.somniumtech.com/product-selector

  • SOMNIUM® DRT Benchmarks Whitepaper

    SOMNIUM and the SOMNIUM logo are registered trademarks of SOMNIUM® Technologies Limited 2016 - 2017 SOMNIUM® Technologies LimitedAll other product or service names are the property of their respected owners. SOMNIUM-MS-0049 v5.0b