linux on mcus
play

Linux on MCUs: from marginal to mainstream? Vitaly Wool Softprise - PowerPoint PPT Presentation

softprise CONSULTING O Linux on MCUs: from marginal to mainstream? Vitaly Wool Softprise Consulting O 2015 www.softprise.net softprise CONSULTING O Microcontrollers Key features Tight integration of components Low power


  1. softprise CONSULTING OÜ Linux on MCUs: from marginal to mainstream? Vitaly Wool Softprise Consulting OÜ 2015 www.softprise.net

  2. softprise CONSULTING OÜ Microcontrollers • Key features – Tight integration of components – Low power consumption – Low price – Very limited RAM and persistent storage • Appliances – Automation – Digital Signal Processing (DSP) – “Internet of things” – Automotive • www.softprise.net

  3. softprise CONSULTING OÜ Microcontrollers and Linux? PRO CONTRA Free software and tools Bigger footprint POSIX-compliant Longer boot-up times Portable and extensible Stronger requirements on hardware Many top-notch developers No/few commercial distributions The Linux community is skeptical Very strong community about MCUs www.softprise.net

  4. softprise CONSULTING OÜ Work accomplished • 2.6 based EmCraft distribution for MCUs – Works on many MCUs – Presumes external (D)RAM • Softprise tweaks to run on DRAM-less system – Kernel XIP – Userspace XIP – Compress data sections even in XIP kernel • Done separately, not as a part of the build • Only for STM32F27/STM32F29 www.softprise.net

  5. softprise CONSULTING OÜ Summary • Linux on an MCU is possible – But the MCU should be powerful enough • No mainline support • Some 2.6 based vendor kernels exist – e. g. from EmCraft • Relatively easy with external (D)RAM – EmCraft Linux distribution works out of the box • Possible without external (D)RAM – With large enough SRAM – And with large enough tweaking www.softprise.net

  6. softprise CONSULTING OÜ Moving forward • Community acceptance targeted – Forward port required • More configurability – Support for other microcontrollers – Compile out redundant/unnecessary parts • Optimize heaviest remaining things • Streamline XIP support – .data section compression as a part of xipImage build – Select best compression algorithm www.softprise.net

  7. softprise CONSULTING OÜ Community acceptance as a target PRO CONTRA Leveraging community support Possible know-how exposure Maintenance cost reduction Will have to play by the rules New features become available Possibly bigger footprint new/better compiler and tools Large one-time effort www.softprise.net

  8. softprise CONSULTING OÜ Catching up with the community • Objectives – linux-tiny git as a base for forward porting – Emcraft's implementation to port • Obstacles/additional effort – Use standard clock framework – Creating proper defconfig • Results – Forward port mostly complete – The code will be made available soon – 840k .text, 132k .rodata, 86k .data (BT, no TCP/IP) – Further optimization highly desirable www.softprise.net

  9. softprise CONSULTING OÜ Configurability and redundancies • printk() format strings take a lot of space – Implement dictionary? • Much of kernel lib/ code is not used • Better inline handling • ProcFS code is bloated – Add compile-time option to only select what's needed • Memory management asks to be simplified – Too complex page allocation for CONFIG_SLOB • Kernel IP stack is way too heavyweight – Too hard to optimize, try picoTCP instead www.softprise.net

  10. softprise CONSULTING OÜ Code bloat hunt • Try to optimize biggies first • Run simple scripts to figure out which ones are the largest – ( for f in `cat object-file-list`; do echo Analyzing $f; arm-none-eabi-objdump -h $f | grep “\b0 .text” ) • Analyze what can be done to go down in size – Configure/compile out completely – Partially compile out – Partially rewrite • e. g. get rid of heavy #define's and inlines • Decide on whether it's worthwhile and move on www.softprise.net

  11. softprise CONSULTING OÜ Printk string dictionary • Tempting target: 12000 • Ideas 10000 – Compile out printks below certain priority level 8000 – “dictionarize” format strings • Dictionary size: 3k 6000 rewrite compile-out E N • Still under way O 4000 D E B 2000 O T 0 Desired Actual www.softprise.net

  12. softprise CONSULTING OÜ Streamlining ProcFS • Tempting target: ProcFS is 12000 20k+ of binary code – Userspace depends a lot on 10000 ProcFS presence D E B 8000 E – Switching ProcFS off is not U O N an option T I 6000 rewrite T compile-out • Idea: new config option N O 4000 PROCFS_MINIMAL C – Expected savings up to 10k 2000 – Careful selection needed 0 • Still under way Desired Actual www.softprise.net

  13. softprise CONSULTING OÜ Analyzing and stripping libraries • Many libraries in lib/ 12000 – Most of them are hard to compile out 10000 • Compile out SWIOTLB 8000 – Make it depend on MMU – Saves 4k 6000 rewrite compile-out • Uninline static functions 4000 in CRC32 DONE 2000 – Saves <1k 0 Desired Actual www.softprise.net

  14. softprise CONSULTING OÜ Analyzing kernel system code • Tempting but complicated 12000 – kernel/exit.o: 4k .text D E B E – kernel/signal.o: 9k .text U 10000 O N T I – kernel/sys.o: 7k .text T 8000 N • Less savings but easier O C rewrite 6000 – kernel/irq/spurious.o: 1k compile-out • Compile out (-1k) 4000 – kernel/time/ntp.o: 2k • Compile out (-2k) 2000 – kernel/time/timekeeping.o: 8k 0 • Uninline (-1.5k) Desired Actual www.softprise.net

  15. softprise CONSULTING OÜ Streamlining networking code • Do not turn on 144000 CONFIG_INET 142000 – Use picoTCP instead • Deserves a separate 140000 slide 138000 • Compile out IPv6 stubs rewrite compile-out 136000 – 2k saved • Compile out sysfs stats 134000 – 3k saved 132000 – Impact to be estimated 130000 Desired Actual www.softprise.net

  16. softprise CONSULTING OÜ PicoTCP as a kernel module • PicoTCP was designed to run in userspace • Efforts were made to make it a kernel module – Maxime Vincent, Altran • We had to redo this – No Makefiles publicly available D E B E • Integrated into our version of linux-tiny U O N T I – Only IPv4 T N – ~40k binary code added O C • Some functionality still missing – e. g. no rtnetlink www.softprise.net

  17. softprise CONSULTING OÜ XIP kernel: now and then 1200000 1000000 800000 .data 600000 .rodata .text 400000 200000 0 2.6.35 based linux-tiny original linux-tiny optimized p.3 + picoTCP www.softprise.net

  18. softprise CONSULTING OÜ XIP now and then: .data deflated 1200000 1000000 800000 .data 600000 .rodata .text 400000 200000 0 2.6.35 based linux-tiny original linux-tiny optimized p.3 + picoTCP www.softprise.net

  19. softprise CONSULTING OÜ XIP kernel: toolchain matters! • Emcraft used arm- uclinuxeabi t/c 1200000 – From CodeSourcery 1000000 – 4.4.1 based 800000 • With linux-tiny, we switched to arm-none- .data 600000 .rodata eabi .text 400000 – 4.7.4 based • And saw the 200000 improvement 0 linux-tiny/arm-uclinux linux-tiny/arm-none-eabi www.softprise.net

  20. softprise CONSULTING OÜ Conclusions • It is possible to sync up with the mainline and keep the code size down – One of the biggest uplifting concerns is not valid – Even better results with the new toolchain • Some size optimizations targeting MCU can be reused by broader audience – XIP with compression • Some performance optimizations for MCU boot- up can be reused by mainstream as well – e. g. boot-up time improvements • There is still a lot to optimize! www.softprise.net

  21. softprise CONSULTING OÜ Thanks for your attention! Questions? mailto: vitaly.wool@softprise.net www.softprise.net

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend