LCU14-109: Embedded Systems: How Low Can You Go?
---------------------------------------------------
Speaker: Arnd Bergmann
Date: September 15, 2014
---------------------------------------------------
★ Session Summary ★
ARM Linux has traditionally been the the operating system of choice for the very low end of embedded systems, with very low power consumption and tight constraints on memory size and CPU speed. We still support machines based on ARM7TDMI and Cortex-M3 with as little as 2MB of RAM, but there is a disconnect between the stagnating upstream contributions for systems like this and growing interest for using Linux in ultra-low power and low-cost scenarios like wearable computing or the "Internet of Things". In my presentation, I will talk about some of the tricks that used to scale Linux to the absolute low-end, such as running without an MMU or executing the kernel from NOR flash, and areas that could use more work, such as upstream ports for Linaro member platforms (STM32, Kinetis, ...) and improving kernel support for low-memory scenarios. In the discussion, I want to find out where people in the audience think we should be heading in ARM Linux. Are we leaving the low-end market to MIPS, ARC, Blackfin and MSP430 by removing support for MMU-less systems and small-memory configurations, or should we invest more time in these systems?
---------------------------------------------------
★ Resources ★
Zerista: http://lcu14.zerista.com/event/member/137712
Google Event: https://plus.google.com/u/0/events/cftm2ub3omv707k2hr22ej2p3h8
Presentation: http://www.slideshare.net/linaroorg/lcu14-109-embedded-systems-how-low-can-you-go
Video: https://www.youtube.com/watch?v=TvM1wcJT0p0&list=UUIVqQKxCyQLJS6xvSmfndLA
Etherpad: http://pad.linaro.org/p/lcu14-109
---------------------------------------------------
★ Event Details ★
Linaro Connect USA - #LCU14
September 15-19th, 2014
Hyatt Regency San Francisco Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
2. Small ARM Systems past and present
Sony XPeria Z2:
3GB RAM, Krait
$33 Intex Cloud FX
128MB RAM, Cortex-A5
WiFI SDIO card
32MB RAM, ARM926
Psion Series 5,
8-16MB RAM, ARM710
Linksys NSLU2,
32MB RAM, XScale
Apple iPod, 32MB RAM,
ARM7TDMI (no MMU)
D-Link DIR-615
32 MB RAM, Feroceon
3. Scaling down to 32MB of RAM
Typical embedded system
• Classic use case for ARM (also MIPS, PowerPC, …)
• Driving factor: cost reduction
• Power consumption: 1W-10W
Typical Implementation:
• ARM926EJ or Cortex-A5 CPU
• Standard kernel, custom configuration
• Busybox, uhttpd, dropbear
• Distro: OpenEmbedded, OpenWRT, Buildroot, …
• libc: uClibc, musl, dietlibc, newlib, …
4. Scaling down to 2MB of RAM
Large microcontroller
• Upstream support for EFM32 and AT91x40
• Driving factor: Power usage
• Power consumption: 100mW-1W
Typical Implementation:
• ARM7TDMI or Cortex-M3 CPU, no MMU!
• (P)SRAM rather than DRAM
• Customized user space
• Execute-in-place kernel in NOR flash
5. Scaling down to 256KB of RAM
Single-chip microcontroller system
• Experiment done by Vitaly Wool
• Running on STM32F29 internal SRAM+NOR
• Power consumption: < 100mW
Implementation:
• Highly customized kernel
• XIP kernel and R/O file system
• RW data compressed to fit on flash
• Very little user space
6. Why Linux
Alternatives:
• Open source: FreeRTOS, eCos, RTEMS, Minix3, BSD…
• Proprietary RTOS
Linux advantages:
• Developer familiarity
• Driver support
• Network stack
Linux Disadvantages:
7. Why ARM
Alternatives:
• With MMU: MIPS, PowerPC, OpenRISC, x86, m68k, ...
• Without MMU: C6x, Blackfin, Xtensa, Microblaze, …
ARM Advantages:
• Widely available from many vendors
• Developer community
• Linaro
ARM Disadvantages:
8. State of NOMMU-Linux on ARM
ARMv4T/V5E:
• ARM7TDMI almost dead
• ARM9TDMI, ARM740T, ARM940T, ARM946E unused
• Out-of-tree users on 2.4.xx
ARMv7-R/M:
• EFM32 support recently added
• ARMv7-R patches existed but were never merged
• Out-of-tree users on 2.6.33
NOMMU mode for normal v5/v6/v7-A CPUs
10. Discussion
• What is the smallest ARM system that Linaro and/or the
upstream kernel community should care about?
• Should we work on actively making kernels smaller?
• Should we do more testing on MMU-less systems or
remove the ones we don’t use?
• Are there any Cortex-M platforms that need upstream
support?
11. Resources
Embedded Linux Wiki page on small systems: http:
//elinux.org/System_Size
Linux-2.6.33 on various Cortex-M3/M4: https://github.
com/EmcraftSystems/linux-emcraft
Historic uClinux-2.4 patches for ARM7TDMI: http://www.
uclinux.org/pub/uClinux/uClinux-2.4.x/
PTXDIST for linux-3.16 with EFM32/Cortex-M3: http://git-public.
pengutronix.de/?p=OSELAS.BSP-EnergyMicro-
Gecko.git
12. More about Linaro Connect: http://connect.linaro.org
More about Linaro: http://www.linaro.org/about/
More about Linaro engineering: http://www.linaro.org/engineering/
Linaro members: www.linaro.org/members