We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

A Brief Survey through Genode's ARMv8 Playground

00:00

Formal Metadata

Title
A Brief Survey through Genode's ARMv8 Playground
Title of Series
Number of Parts
490
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
The Genode project has evolved over the past decade into a versatile toolkit for general-purpose computing. Even though support for ARM embedded devices is an inherent part of it since the very beginning, the focus of the past years was more x86-Architecture centered. Sculpt, the desktop incarnation of Genode, being the prime example. Recently, Genode's ARMv8 port ignited extensive development efforts to support more sophisticated workloads on top of modern embedded and mobile devices. The talk provides an overview about the current ARMv8 Genode landscape, its ambitions and potential. It will live demonstrate recent achievements from device support up to hardware-assisted virtualization on top of the NXP i.MX8 SoC.
Archaeological field surveyArmPresentation of a groupComputer architectureComputer hardwareStack (abstract data type)Focus (optics)EstimatorPhysical systemComputer animationLecture/Conference
Computer fontArmSoftware developerComputer animationLecture/Conference
ArmHand fanInformation managementDevice driverDifferent (Kate Ryan album)Open sourceSemantics (computer science)ResultantRevision controlOperator (mathematics)BootingSystem on a chipPhysical systemComputing platformPlastikkarteSoftware developerObservational studyElectronic visual displayComputer architectureArmInstance (computer science)Kernel (computing)Series (mathematics)Computer hardwareWhiteboardTheoryCASE <Informatik>Physical lawPeripheralOperating systemPiMachine visionFlow separationProjective planeMultiplication signDrop (liquid)Computer animation
Computer hardwareOpen setOpen sourceSmartphoneKeyboard shortcutLaptopOpen setConnectivity (graph theory)Game controllerRun time (program lifecycle phase)Flow separation1 (number)Projective planeAndroid (robot)System on a chipPlastikkartePhysical systemLine (geometry)Revision controlWhiteboardSoftware frameworkComputer hardwareMixed realityIntegrated development environmentMechanism designBlock (periodic table)Computer animation
Performance appraisalPeripheralDecision tree learningLine (geometry)MereologyPhysical systemPresentation of a groupCASE <Informatik>Device driverTable (information)System on a chipElectronic mailing listPlastikkarteComputer animation
Computer fontDigital photographyElectronic visual displayDeutscher FilmpreisCASE <Informatik>Ultraviolet photoelectron spectroscopyWorkstation <Musikinstrument>TouchscreenPhysical systemWindowIntegrated development environmentInteractive kioskConnectivity (graph theory)Flow separationForm (programming)Order (biology)Right angleSystem administratorOperating systemVideo game consoleArmComputer animationLecture/Conference
BefehlsprozessorConnectivity (graph theory)Different (Kate Ryan album)Video game consolePhysical systemGUI widgetInteractive kioskRevision controlSoftwareText editorLastteilungPlastikkarteVirtual machineMultiplication signElectronic visual displayIntegrated development environmentComputer programmingProgrammer (hardware)Arithmetic meanFilm editingMereologyDecision tree learningComputer animation
Time domainElectronic mailing listExecution unitComputer fontSystem callStack (abstract data type)Device driverLibrary (computing)Computer animation
Transcript: English(auto-generated)
Hello and welcome to my talk. I'm Stefan Karkowski. I'm working at Genode Labs as a developer. It's more than 10 years now. And I was focusing on the ARM architecture mainly in the last years.
And within the last 10 months, we achieved quite a few steps to run Genode on ARMv8 machines, on certain ARMv8 hardware. And today I want to demonstrate this to you. So it's more technical demonstration with the focus on the demonstration, not so much on the technical details.
And as you have seen in the previous talk, we are used to run our presentations on our own software stack. So the same applies to this talk and like Norman already told you with regard to his setup, it's the same to me.
So it was done a day before I was starting to first and so cross fingers that everybody, everything will work. So before we come to the actual demonstration where I want to show three different aspects that might be interesting for embedded systems, which you could already use right now with Genode.
I want to give you a short introduction on Genode's history on ARM. And what were the findings of us that we made out of these experiences. Then I will showcase you certain aspects and then we come to a short roadmap for this year related to the ARM development.
So this picture shows a rough sketch of what kind of different ARM hardware was entering the Genode landscape. And what you can see, I don't want to go into much detail, but we had slight different architectures from version 4 until now version 8.
And we collected a lot of experiences also with different SoC vendors like Broadcom, the theories that were used in the Raspberry Pis,
the OMAP4 from Texas Instruments in the incarnation of the Panda board, and Exynos 5 from Samsung in the incarnation of the Andil board. And we did not just run a kernel on top of it with some timer driver and UART, but really tried hard to develop different device drivers for the peripherals for it.
And so we had SATA drivers or SD card or different display engine and so on.
And the experiences from this kind of development was that it's a pain. And that it's really painful if you are just a small operating system, open source operating system with no access to documentation at all. And so the best reference you might get is Linux kernel drivers written by the SoC vendors themselves.
So there's not so much semantics that you can read out of it. And in the worst case you've got even BLOB drivers which are just loaded by the Linux kernel drivers inside, so like HDMI BLOBs and whatever.
So the situation is not that good, but the best experiences we made so far were with NXP based, the iMix series and their system on chips.
So I would not say it's great and everything is fine with NXP and I don't want to make marketing now for them, but from our experiences it was best with regard to open documentation. And we used it for instance for our extensive studies with using trust soon, with doing
secure boot on this kind of platforms and also, yeah, we made some good experiences here. So this is what I wanted to give you as a result of this kind of history.
And we are not the only ones obviously that seem to recognize that NXP makes better documentation. So there are several open hardware projects right now that use this kind of systems on chip.
So here you see the USB armory which now has already a second version of it which was presented I think at CCC congress this year or last year. And it's a kind of a smart card system where you can store your
cryptographic material which you can use for signing stuff or just storing encrypted stuff. And it's running on an NXP iMX5 and it's completely open so you can download the layouts and you can assemble it yourself if you like. And we also had a genome port on the first version, so yeah, I'm looking forward for the second one.
And there is this MNT reform. It's a very cool self-made laptop project by MNT research and it's really somehow a one person project. I mean there are more than one person but from the technical side it's not more than one person.
And again you get all the material, you can just download it, you can build it yourself including a nice mechanical keyboard. And I'm really looking forward to bring the Scald OS which you just had a look at if you attended the previous talk to this kind of device.
And we have this Librem 5 smartphone which uses the same system on chip like the MNT reform. And this is the iMX8M. So it's an ARMv8 NXP system on chip.
And again what they try to achieve is giving back control to the user, getting a smartphone which is mostly block free as far as they can get with it. And yeah, I think we have this mindset in common with those kinds of projects and this is somewhere where we like to meet.
And we also like to take this Librem 5 to make Android-like environment, an Android runtime replacement so to say.
And those of you who attended the talk from Alexandre Zingier about their component framework know what I mean. Okay, so this board for those of you who are not sitting in the first line is
staying here in front of me on the table and I have the presentation now on this device. So it's the same system on chip like in the Librem 5 and in the MNT reform. And you see we have some ethernet connector, USB connector, HDMI connector and SD card.
And we have peripheral drivers running right now in the system that drive all those kind of devices. And yeah, but this is not everything. But to show you this and not just list items I like to come to the actual demonstration part.
So what are the use cases used in the embedded world? So just imagine you stand in front of the ticket machine and the ticket is showing you blue screen. Or you drive in public transport and it doesn't show up the next station but some weird other desktop or whatever.
And of course the ATM doesn't give you cash because it wants to do a Windows upgrade right now and doesn't work out until it gets this. So those are not some hypothetical examples but I think all of you somehow experienced already something like this.
And here you see the WannaCry attack at Deutsche Bahn where they were out of order for several hours or even days. I'm not sure anymore. So what you actually need is not a fully fledged desktop operating system like Microsoft for a kiosk system but you need a custom tailored solution.
And of course the costs for those who develop such systems are standing in the way if you have to do this all on your own. But those of you who attended the previous talk have seen how easily it is to integrate a custom tailored environment.
But of course you need some support in form of components for this. And what you see here right now is again this light central thing, this administration console.
And I want to show you now that in this system there are already on the small ARM machine which only uses the first CPU. Because I didn't wrote a load balancer which automatically drives the components on different CPUs and did not manually tweak it.
So everything is running on the first CPU and we have already 76 components running in this system. And as you can see everything is software rendered so it's really usable as a display panel or as a kiosk system.
Now we have a very easy widget set, a very simple one. And maybe your programmers are not coming to this kind of widget set or programming in a Genode environment. But of course we can also start something else. So let's start this Qt 5 text editor.
I mean of course this takes some time because everything is read from a non-optimized SD card. You can see all which is now doing is some IO and it's heavily copying over the bytes from the SD card.
But in the end, crossing fingers, we will see this text editor you already know from the scalp version on x86. So what I wanted to show you, we did not just port it some peripheral drivers but we really went through the whole software stack.
So we have different libraries like libpng and Qt 5 and TCP IP stack. Of course libc itself and the base library of Genode obviously.
And we went through the whole software stack to make this happen within the 10 months. So I'm quite convinced that we will also achieve more with regard to the hardware targets I already mentioned. Okay, but let's come back to the slides.
Another example. So today everybody talks about IoT and all those crappy devices that are out there. And probably the idea is to have some shield gateways as edge devices which are then better shield those kind of IoT devices.
And this is such a device. But of course you always have the problem of firmware upgrades in such environments.
And as you have seen, we have this depot packaging mechanism. And I can show you, ah, sorry, wrong key. I can show you, maybe you didn't notice, but I have a vulnerability in my backdrop application and somebody defaced my wallpaper.
So an upgrade routine that regularly gets information about new packages might get now the information about a fixed version. And now I will be the upgrade routine because it's not there yet.
But I just do it by hand. So first I take away this Qt 5, it's in the way. And I open up a new component. Ah, no.
Okay, now exactly this happened, what shouldn't happen. So I have to reboot. I think the scalp manager is not available yet. Yeah, sorry. But that can happen. Sorry?
Ah, there's some, there's some, I think the scalp manager, which is this graphical user interface for administration, missed some signal or got, maybe it had to do a resource request or whatever. I cannot show you now because I do not have some report, some log output here to look at it.
So yeah, as I mentioned, it's, it was already the day before, so. Okay, sorry for this, but we continue, just, just go ahead.
Okay, so I reuse the image from the SD card.
Okay, so here we are again. And to fix the broken backdrop package, I now first copy over this deploy configuration, which contains all the packages which are now running in this runtime. And I copy it over to a non-automatically managed space, so in the normal config.
Ah, no, I missed that, sorry. Okay, so now it's known that we want to hand something manually and don't want the system to manage it automatically anymore, so I go over.
And here you see this sticks blue backdrop, which is the package containing the box, so I just
know as the upgrade routine that there's a minus A version of it, and I just save the file. And what you see now is, yeah, it throws away the original version.
It's downloading the new version, verifies it, extracts it, and replaces the running stuff. And if you somehow, yeah, see that there are problems with it, maybe with a watchdog mechanism, the component is not coming up again. Yeah, we can just revert it, of course.
So, yeah, sorry, yeah, it was fixed. Sorry, sorry, yeah, of course. So, I show it again. Okay, now it does not have to download, of course.
So, it's fixed. Okay, so last example, I have to hurry up, because we are already running out of time. Okay, last example, ops. Legacy software in industrial context.
So, often you have some custom software which costs a lot of money, which a lot of manpower was used to do this, only for very few instances of this running software.
And they are also tied to a specific operating system version. So, they use specific drivers on their own, and you cannot just replace it with a newer version of Microsoft or whatever. So, here the problem is, they run out of support, maybe they are also edge devices, and you want to give some possibility to run this legacy OS.
So, what we did is, we have a virtual machine monitor for ARMv8.
So, I start a Linux VM, and this Linux, of course, Linux is big. So, it's a generic ARMv8 kernel of 18 megabyte or something, so it needs some time to be copied again from the SD card.
And this was a joint project, it was not, we did not finance it on our own, but it was a corporate work with Bedrock System, who also sit in this room. And I want to thank them at this place for supporting us in doing so, because they
do a much more ambitious project of building up a virtual machine monitor that gets formally approved. But at that point, they were not ready to develop it right now in their system, so we rapid prototyped, so to say, a G-node, and they could use it as a blueprint.
And, as far as I know, they are envisioned to open source their version 2, so we are very looking forward to use that 2. So, I just want to show you, this is not just some Linux working, but it also has network access via WordIO.
And, so I can start a movie, a network stream movie, hopefully, if the network is working, yeah, okay. So, the VMM contains a real complete CPU model, it has models for generic interrupt controller version 2
and 3 for the generic timer of ARM, and it has drivers for WordIO console and for WordIO network.
And, yeah, I think, do I have some minutes left? Okay, so this is Star Wars streamed over Telnet. Let's come to the roadmap again. So, those are my technical demonstrations, and my last slide is the roadmap for the upcoming year.
So, I definitely want to push this SCULT development on ARMv8 further, so SCULT on this MNT reform would be really cool.
But, for this to happen, we need some kind of platform driver, so now the drivers are running, but we do not have access to the PCI bus, for instance. We do not have access to the clocking and power management, and we need this kind of stuff in the incarnation of a platform driver.
We want to have more WordIO support so that we can use it interactively, of course, then we could really use a SCULT OS desktop like we know it from the x86 world. And, of course, it would be pretty cool to use hardware-accelerated graphics. So, those are the plans for this year, and now I'm open for questions.
Thank you for your attention. Ah, sorry, I forgot to mention, it's our own kernel, so
we did not use another one. Ah, sorry, I have to repeat the question, I forgot. So, the question was, what kernel did we use? So, in the initial development of ARMv8, in the very first release where we brought the first ARMv8 support in, we used Fiasco OC because it already has ARMv8 support.
But then, we implemented it in our own kernel, and also this whole virtualization support stuff is part of our own kernel. Other questions?
Close the session. Thank you.