1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Embedded Linux Conference.

Slides:



Advertisements
Similar presentations
Windows solution for linux
Advertisements

IIIMF GUI Open Source Software Foundry
Media Player for the i.MX31 Advanced Embedded Systems Architecture Class Project May 14, 2011 Rafael Castro Ryan Ugland Carlos Cabral.
Android Platform Overview (1)
Google's android as an application environment for DTV decoder system Consumer Electronics (ISCE), 2010 IEEE 14th International Symposium on, 7-10 June.
Linux vs. Windows. Linux  Linux was originally built by Linus Torvalds at the University of Helsinki in  Linux is a Unix-like, Kernal-based, fully.
INTRODUCTION OS/2 was initially designed to extend the capabilities of DOS by IBM and Microsoft Corporations. To create a single industry-standard operating.
Linux GUI X-Windows System. X-Windows System A stable and extremely powerful GUI system that provides a complete Client/Server framework. The X-org foundation.
Chapter 2: Exploring the Desktop The Complete Guide to Linux System Administration.
Development of mobile applications using PhoneGap and HTML 5
ITK Lecture 12: Open Source & Cross Platform Software Development Methods in Image Analysis CMU Robotics Institute U. Pitt Bioengineering 2630 Spring.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
Xynth Presentation What is windowing system ? What is it for ? Why do we need it ? Known windowing systems Embedded world What is Xynth ? Who are the competitors.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Computer for Health Sciences
Introduction of Tizen : Tizen Overview Chan Seok Kang 2013/03/21.
XO Software Operating system Linux Kernel: Linux ; Fedora 7 base environment OLPC-specific bits available on OLPC-2.6 GIT tree at dev.laptop.org.
Introduction to Embedded Software Development School of software Engineering Introduction to Windows CE.
Overview Embedded Linux Graphics Typical desktop Linux graphics stack SystemRAMDisk X Window System5MB16MB GNOME14MB95MB KDE11MB96MB Mozilla12MB95MB.
ANDROID 응용 프로그래밍 과정 – 목차 - 안드로이드란 - 안드로이드가 만들어지게 된배경 - 안드로이드의 철학 - 안드로이드 환경설정 ( SDK download, eclipse plug-in 설정, 간단한 프로그램 실행 ) - 안드로이드 동작원리 - 안드로이드 핵심.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
An Introduction to Linux Name: Haixin Wang ID :
ROOT Team Meeting October 1 st 2010 GUI thinking and testing ideas OpenGL GUI Root Team meeting 01/10/2010.
X-WindowsP.K.K.Thambi The X Window System Module 5.
Overview GUI Programming with GTK+ and GLADE 장정철.
CMPF124 Basic Skills For Knowledge Workers Chapter 1 – Part 1 Introduction To Windows Operating Systems.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Silberschatz, Galvin and Gagne ©2011 Operating System Concepts Essentials – 8 th Edition Chapter 2: The Linux System Part 1.
GTK+
Input Zhaohui Ning Aaron Cardwell Boonthanome Nouanesengsy.
Ori Hanegby Pixtazy Blog:
Android. Android An Open Handset Alliance Project A software platform and operating system for mobile devices Based on the Linux kernel Developed by Google.
Tango - Icalepcs 2009 ESRF. E Taurel - Icalepcs TANGO kernel status and evolution Brief introduction What's new since Icalepcs 2007 New projects.
1 Embedded Linux System development © Copyright , Free Electrons Creative Commons Attribution-ShareAlike 2.5 license
Qt Development Frameworks Past, Present and Future by Knut Yrvin – Dec 2009.
1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Embedded Linux system development.
1 /13 SPICE* Roadmap Presentation for KVM Forum 2011 Alon Levy, Red Hat *or Spice or spice.
1 January 14, Evaluating Open Source Software William Cohen NCSU CSC 591W January 14, 2008 Based on David Wheeler, “How to Evaluate Open Source.
The Basics of Android App Development Sankarshan Mridha Satadal Sengupta.
INTRO. To I.T Razan N. AlShihabi
What is DirectX? DirectX is built by Microsoft as a collection of API’s (Application Programming Interfaces) for the purpose of multimedia processing.
Android Mobile Application Development
Bonobo and Free Software GNOME Components
Ottawa Linux Symposium 2007
Operating System & Application Software
Embedded Linux Conference Europe
Lecture 1-Part 2: Operating-System Structures
Current Generation Hypervisor Type 1 Type 2.
Architecture of Android
Cross Platform Development using Software Matrix
Java Look-and-Feel Design Guidelines
Event Driven Programming Dick Steflik
Software Design and Architecture
Why Nokia aquired Qt by Knut Yrvin at Community One, Apr 15 - Oslo
Embedded Linux Conference - April 2009
Physical Architecture Layer Design
Chapter 3: Windows7 Part 1.
An Introduction to Device Drivers
Chapter 2: System Structures
X Windows.
Chapter 2: The Linux System Part 1
GTK + Programming.
Windows Virtual PC / Hyper-V
MORE ON ARCHITECTURES The main reasons for using an architecture are maintainability and performance. We want to structure the software into reasonably.
Chapter 3 – Operating Systems
Chapter 1: Introduction
PyWBEM Python WBEM Client: Overview #2
Lecture 6 Introduction to Process Management
Sending data to EUROSTAT using STATEL and STADIUM web client
Module 02 Operating Systems
Presentation transcript:

1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Embedded Linux Conference Europe Choosing free software graphical libraries for embedded devices Thomas Petazzoni Free Electrons

2 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Introduction Graphical interfaces are a major component of many embedded systems As usual, the free software and open source world offers a lot of choices to implement graphical interfaces Such a diversity makes it difficult to find one's way through all the available solutions This talk in the result of an investigation of the most popular graphical libraries, and describe them in terms of functionality, size, popularity, and ability to combine with other components, etc. Some solutions or details might have been missed, don't hesitate to share your knowledge and experience during the talk

3 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Building and testing All of our tests have been made with Buildroot A filesystem builder for embedded systems Many fixes contributed to get all the graphical libraries to build properly Size of libraries and components given in the talk correspond to the ARM, stripped version Basic tests made in Qemu Not very « flashy » We will soon release target filesystems that'll allow anyone to quickly try and test the different solutions

4 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com « Low-level » solutions

5 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com DirectFB Low-level graphical library Lines, rectangles, triangles drawing and filling Blitting, flipping Text drawing Windows and transparency Image loading and video display But also handles input event handling: mouse, keyboard, joystick, touchscreen, etc. Provides accelerated graphic operations on various hardware, more can be added in an easy way Integrated windowing infrastructure

6 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com DirectFB (2) Single-application by default, but multiple applications can share the framebuffer thanks to « fusion » Development and community: very active See also Denis Oliver Kropp talk, « Open Integration Layer - DirectFB 2.0 », tomorrow at 15:25 Denis is the main developer of DirectFB License: LGPL 2.1

7 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com DirectFB : size and dependencies Utils zlib ~64k freetype ~380k libjpeg ~130k libpng ~130k libts ~6k Total: ~710k DirectFB library ~450k plugins ~200k Total: ~650k Some of these dependencies are optional. This is a typical setup. Total: ~1.4m

8 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com DirectFB : architecture Harware Kernel FB driver DirectFB Application fbdev devmem /dev/ mem

9 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com DirectFB : usage Multimedia applications For example the Disko framework, for set-top box related applications « Simple » graphical applications Industrial control Device control with limited number of widgets Visualization applications As a lower layer for higher-level graphical libraries

10 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com DirectFB : usage

11 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com SDL A library originally designed for game development In addition to graphic display, also provides input event management, sound, CD-ROM audio, threads, timers, etc. Can work on top of X11, the framebuffer or DirectFB And DirectFB can work on top of SDL as well :-) The API is roughly the same level as the one of DirectFB Developed in C, C API, many bindings available Actively maintained DirectFB is probably more common in embedded systems, while SDL is more common for small desktop games License: LGPL

12 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com X.org - KDrive Stand-alone simplified version of the X server, for embedded systems Formerly know as Tiny-X Kdrive is integrated in the official X.org server Works on top of the Linux frame buffer, thanks to the Xfbdev variant of the server Real X server Fully supports the X11 protocol : drawing, input event handling, etc. Allows to use any existing X11 application or library Actively developed and maintained X11 license

13 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Kdrive : size and dependencies Utils zlib ~64k fontconfig ~165k dbus lib: ~200k bin: ~350k freetype ~380k expat ~120k pixman ~130k libpng ~130k X server Xfbdev ~1.2m X libraries liblbxutil ~156k libsysfs ~27k libX11 ~920k X toolkit (optional) libXaw6,7,8 ~900k libXt ~330k libxcb ~300k libXfont ~380k Misc libs ~770k Total: 2.5m Total: 1.5m Total, without X toolkit: 5.4m Fonts from a few kb to several mb

14 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Kdrive : architecture Hardware Kernel FB driver X.org Kdrive server Application fbdev Toolkit Application

15 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Kdrive : usage Can be directly programmed using Xlib / XCB Low-level graphic library Probably doesn't make sense since DirectFB is a more lightweight solution for an API of roughly the same level (no widgets) Or, usually used with a toolkit on top of it Gtk Qt Fltk WxEmbedded

16 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Nano-X An alternative graphic system Various graphic back-ends, including Linux framebuffer Provides two programming APIs A Win32-like API A Xlib-like API, but not compatible with Xlib Requires specially designed widget toolkits Client/server model, with clients communicating with the server through an Unix socket. Optionally, a client can be directly linked with the server Lightweight

17 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Nano-X Doesn't come with a widget library, but offers a window manager Relatively small user and developer base. No release since 2005, but some activity on the mailing-list, including the official maintainer. Probably not lively enough to provide a long-term maintenance guarantee Licensed under the Mozilla Public License Webpage:

18 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Nano-X

19 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Nano-X

20 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com « High-level » solutions

21 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Gtk The famous toolkit, providing widget-based high-level APIs to develop graphical applications Standard API in C, but bindings exist for various languages: C++, Python, etc. Two GDK back-ends The classical Xorg back-end The DirectFB back-end, which removes the need for an Xorg server No windowing system, a lightweight window manager needed to run several applications. Possible solution: Matchbox. License: LGPL Hardware Kernel DirectFB Gtk-DFB Hardware Kernel X.org Kdrive Gtk

22 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com UtilsGtk galaxy Gtk-DFB : dependencies and size libgtk2 ~3.2m Image libraries libpng ~130k jpeg ~130k tiff ~320k libglib2 ~1.4m atk ~100k pango ~400k cairo ~350k directfb ~750k zlib ~64k fontconfig ~165k gettext ~510k libintl ~30k freetype ~365k expat ~120k pixman ~130k Total: ~9 MB

23 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Qt The other famous toolkit, providing widget-based high-level APIs to develop graphical applications « Qt for Embedded Linux », formerly known as Qtopia Core, is the version of Qt that runs on top of a frame buffer, on embedded devices. It includes a windowing system « Qt Extended », formerly known as Qtopia, extends « Qt for Embedded Linux » with useful components on embedded devices : communication, contents, application-specific and user experience components. Implemented in C++ the C++ library is required on the target system standard API in C++, but bindings are also available for other languages

24 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Qt Works either on top of Framebuffer X11 DirectFB backend integrated in version 4.4, which allows to take advantage of the acceleration provided by DirectFB drivers Qt is more than just a graphical toolkit, it also offers a complete development framework: data structures, threads, network, databases, XML, etc. Very well documented GPL license, commercial licenses available for proprietary applications

25 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Qt : size and dependencies Qt galaxy QtCore ~2.6m QtTest ~64k QtGui ~8.6m QtNetwork ~740k QtScript ~1.1m Total: ~15.5 MB QtXml ~290k Img plugins ~750k Libraries zlib ~64k freetype ~365k jpeg ~130k libpng ~130k libstdc++ ~675k Fonts ~160k

26 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Qt

27 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com FLTK Another high-level toolkit, providing widget-level graphic programming, currently in version 2.x Written in C++, main programming API in C++ Designed with smallness in mind Designed to reduce size when statically linked, small memory consumption for each widget Core of the library, as included in an statically compiled hello world program: 82K. An example application which uses all widgets: 352K Works on top of Xlib Actively maintained, licensed under the LGPL A port of FLTK 1.x to DirectFB was made, available from DirectFB's git repository, but only maintained by a single person

28 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com WxEmbedded Originally, WxWidgets is a library abstracting existing toolkits (Win32 native toolkit, Gtk2, etc.), allowing the creation of portable applications Depends on an underlying toolkit An internal toolkit, WxUniversal has been implemented. It allows to write WxWidgets applications without the need for an underlying toolkit. Works on top of various graphic back-ends X11 DirectFB Nano-X Xlib-like and Win32-like APIs Written in C++, C++ API, C++ library required

29 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com WxEmbedded Size 2.5 Mb of shared library size 1 Mb for a simple statically-linked example, but the size doesn't increase much for more complicated examples While WxWidgets is active and well-maintained, the amount of attention given to WxUniversal and WxEmbedded is much smaller Some widgets are not implemented, some graphic backends don't receive a lot of attention Licensed under the LGPL, with an exception giving more freedom on distribution of derived works in binary form WxEmbedded: WxUniversal:

30 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com LiTE LiTE is a Toolbox Engine Designed exclusively for DirectFB Two layers Lite: low-level plumbing to ease the implementation of widgets Leck: implementation of the widgets Only very simple widgets available Limited user base Very small: only 43k + 36k in addition to a typical DirectFB installation. LGPL 2.1

31 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Other untested solutions MiniGUI Another toolkit, with several graphical backends including a frame buffer backend The GPL version is limited in functionalities, commercial versions available Enlightenment foundation libraries See Gustavo Sverzut Barbieri talk, « Rich GUI Without Pain » today at 14:45

32 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Conclusion Low-level components: DirectFB, X.org, Nano-X High-level components: Gtk, Qt, Fltk, WxEmbedded, EFL, miniGUI There is a large number of solutions to develop graphical interfaces with free software libraries However, the size of the user and developer community and its vitality is one of the most important criteria when choosing a solution For that reason, DirectFB, X.org, Gtk and Qt seem to be most interesting solutions today

33 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Questions ? What solutions are you using for your graphical interfaces ? What were your decision criteria ? Are you satisfied with the chosen solution ? The existing ones ? ?