A Real-Time Capable, Open-Source-Based Platform for Off-The-Shelf Embedded Devices
Total Page:16
File Type:pdf, Size:1020Kb
A Real-time Capable, Open-Source-based Platform for Off-the-Shelf Embedded Devices Igor Kalkov Department of Computer Science Technical Report Aachener Informatik-Berichte (AIB) ISSN 0935-3232 AIB-2018-03 | | RWTH Aachen University Department of Computer Science March 2018 | | The publications of the Department of Computer Science of RWTH Aachen University are in general accessible through the World Wide Web. http://aib.informatik.rwth-aachen.de/ A Real-time Capable, Open-Source-based Platform for Off-the-Shelf Embedded Devices Von der Fakult¨at fur¨ Mathematik, Informatik und Naturwissenschaften der RWTH Aachen University zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften genehmigte Dissertation vorgelegt von Igor Kalkov, M.Sc. RWTH aus Bender, Republik Moldau Berichter: Universit¨atsprofessor Dr.-Ing. Stefan Kowalewski Universit¨atsprofessor Dr. Uwe Aßmann Tag der mundlichen¨ Prufung:¨ 10. August 2017 Diese Dissertation ist auf den Internetseiten der Universit¨atsbibliothek online verfugbar.¨ Igor Kalkov Lehrstuhl Informatik 11 [email protected] Aachener Informatik Bericht AIB-2018-03 Herausgeber: Fachgruppe Informatik RWTH Aachen University Ahornstr. 55 52074 Aachen GERMANY ISSN 0935-3232 Abstract Nowadays, software plays a crucial role in the development of embedded products. The product’s design and development process can be significantly simplified by relying on reusable software components and modern general-purpose hardware. However, such off-the-shelf components are typically not able to provide real-time support required in the industry. To address this limitation, different approaches were presented in the past to enable the use of high-level software while retaining precise timings during the inter- action with the physical environment. For example, real-time capable Linux running on general-purpose hardware is widely used in industrial automation today. Furthermore, Linux-based platforms like Android are continuously gaining popularity in all sectors of the market. Due to its intuitive user interface and a wide range of supported hardware, Android is already broadly deployed in different industrial use cases. However, Android devices used in embedded products are still restricted to serving the purpose of pure data visualization and handling of the user input. To extend Android’s field of appli- cation to time-critical domains, this work presents a holistic approach for combining the performance of modern general-purpose off-the-shelf hardware with predictability and determinism of a real-time capable operating system. Instead of adopting common methods for limiting the real-time support to the Linux kernel and native applications, it provides a global perspective on Android’s architecture including the Linux kernel, main high-level components and their interaction in time-critical scenarios. The first part of this dissertation covers enhancements for minimizing the process scheduling latency using the PREEMPT RT patch. Since Android is built upon Linux, in- troducing a fully preemptible kernel and a high-resolution timer enables a more precise process management. This approach allows Android to achieve bounded scheduling deviations in the same order of magnitude as industrial Linux-based systems. In the second part, it is shown that Android’s original memory management may cause unpre- dictable suspensions of running applications or even automatically terminate long-term background processes. To address this issue, the platform is extended with a real-time capable garbage collector based on reference counting. The new collector operates con- currently to real-time threads in a non-blocking incremental manner, avoiding undesired interferences. Furthermore, the proposed modifications provide additional protection for persistent background services. Finally, this thesis implements enhanced methods for data exchange between separate Android applications. Being seamlessly integrated into the platform, new mechanisms allow predictable communication and bounded delays for delivering arbitrary messages across process boundaries. A detailed evaluation of the introduced platform changes highlights the effectiveness and scalability of the presented approach. The resulting system performs better in terms of responsiveness and determinism, while staying fully compatible with standard An- droid components and third-party applications. By combining powerful general-purpose hardware and high-level programming paradigms, Android applications are now able to additionally fulfill strict timing requirements. This allows utilizing the advantages of Android in industrial use cases, which facilitates the development of easily extendable and less complex embedded products with intuitive user interfaces. v Zusammenfassung Heutzutage spielt Software in der Entwicklung eingebetteter Systeme eine besonders wichtige Rolle. Obwohl der Einsatz von Standardhardware und wiederverwendbaren Software-Komponenten die Produktentwicklung bedeutend beschleunigen kann, erfullen¨ diese in der Regel nicht die industriellen Anforderungen an Echtzeitf¨ahigkeit und Ro- bustheit. Aus diesem Grund wurden in der Vergangenheit mehrere Ans¨atze vorgestellt, um auch mit High-Level-Software pr¨azise Timings im Umgang mit der physischen Umge- bung zu erreichen. So sind echtzeitf¨ahige Linux-Systeme auf Basis von Standardhardware in der Industrie bereits weit verbreitet. Auch Linux-basierte Plattformen wie Android ge- winnen kontinuierlich an Popularit¨at in unterschiedlichsten Marktsegmenten. Dank der intuitiven Benutzeroberfl¨ache und der zahlreichen kompatiblen Hardware-Plattformen findet Android heute zunehmend Anwendung in der Industrie. Bisher beschr¨anken sich solche Anwendungen jedoch auf die reine Visualisierung von Programmdaten und Nut- zerinteraktion. Die vorliegende Dissertation pr¨asentiert einen ganzheitlichen Ansatz, um das Einsatzgebiet von Android auf zeitkritische Systeme zu erweitern, indem die Leistungsf¨ahigkeit moderner Standardhardware mit der Vorhersagbarkeit eines echt- zeitf¨ahigen Betriebssystems kombiniert wird. Anstatt die Echtzeitf¨ahigkeit wie ublich¨ auf Linux zu beschr¨anken, wird ein komponentenubergreifendes¨ L¨osungskonzept vorge- stellt. Dieses umfasst sowohl den Linux-Kern als auch die wichtigsten Komponenten von Android und deren Interaktion in zeitkritischen Szenarien. Im ersten Teil der Arbeit wird der PREEMPT RT Patch eingesetzt, um die durch den Prozess-Scheduler verursachte Latenzen zu minimieren. Verbesserte Unterbrechbarkeit des Linux-Kernels sowie ein hochaufl¨osender Timer erm¨oglichen auch unter Android ein pr¨aziseres Prozessmanagement. Damit k¨onnen die maximalen Scheduling-Abweichungen fur¨ Android-Apps auf die Gr¨oßenordnung von industriellen Linux-basierten Systemen beschr¨ankt werden. Im n¨achsten Schritt werden die unvorhersehbaren Unterbrechungen von laufenden Anwendungen durch die automatische Speicherverwaltung untersucht. Dieses Problem wird durch die Einfuhrung¨ eines echtzeitf¨ahigen Garbage Collectors ba- sierend auf Reference Counting gel¨ost. Dieser arbeitet parallel und nicht-blockierend, sodass die Ausfuhrung¨ von Anwendungen mit Echtzeitanforderungen nicht mehr beein- tr¨achtigt wird. Die eingefuhrten¨ Anderungen¨ bieten zus¨atzlichen Schutz fur¨ persistente Hintergrunddienste. Weiterhin pr¨asentiert diese Arbeit erweiterte Methoden fur¨ einen zuverl¨assigen Datenaustausch zwischen laufenden Anwendungen. Diese Erweiterungen werden nahtlos in die Plattform integriert und erm¨oglichen eine vorhersagbare Kommu- nikation zwischen separaten Android-Prozessen mit beschr¨ankten Verz¨ogerungen. Eine detaillierte Auswertung der vorgeschlagenen Modifikationen belegt die Effekti- vit¨at und Skalierbarkeit des gew¨ahlten Ansatzes. Das neue System zeigt eine bessere Re- aktionsf¨ahigkeit und bleibt vollst¨andig kompatibel mit Standard-Android-Komponenten und existierenden Anwendungen. Dadurch k¨onnen Android-Anwendungen strikte zeit- liche Anforderungen erfullen¨ und gleichzeitig von leistungsf¨ahiger Standardhardware und h¨oheren Programmiersprachen profitieren. Der Einsatz einer solchen echtzeitf¨ahigen Android-Plattform erm¨oglicht die Entwicklung von weniger komplexen eingebetteten Produkten in neuen industriellen Szenarien. vii Acknowledgments I hereby express my sincere appreciation to Prof. Dr.-Ing. Stefan Kowalewski for giving me the opportunity to join his group, for supervising my thesis and for providing me the needed freedom to pursue and implement my ideas in research. I also thank Prof. Dr. Uwe Aßmann for serving as the second supervisor and his valuable remarks and suggestions. Furthermore, my thanks go to Prof. Dr. Matthias Muller¨ and Prof. Dr. Jurgen¨ Giesl for taking their time and participating in my examination committee. I have also received help and support from many others during my time as a rese- arch assistant. First of all, I would like to thank my former colleagues at the Chair of Computer Science 11 – Embedded Software for creating a friendly environment and for inspiring discussions. In particular, I thank Thomas Gerlitz, David Th¨onnessen, Mathi- as Obster, Dominik Franke and John F. Schommer for their critical opinions and great collaboration during the development of new concepts in the RTAndroid project. This dissertation owes many of its results to my talented students. A particular men- tion deserve Stefan Schake, Alexandru Gurghian, Stefan Klug, Florian Sehl, Andreas Wustenberg,¨ Stefan Rakel and Johannes Lipp, who wrote excellent