 Right everyone. Good to see you here. The room is almost full, as always. We're gonna start to talk about Tizen RT, which is the the lightweight and the smaller brother of the full-blown Tizen for real embedded devices. So, this is talked by Philippe Coval. Thank you. Thanks. It's nice to be here again, all of us here. So, yes, I'm a software engineer. I'm working from Samsung. I belong to the European team. And if you have interest into all kind of use cases, demonstration, and if you want to set it up at home, feel free to ask me. I will try to help you to reproduce or improve what I'm shared. So, first, I will introduce you about Tizen and focus about software platform for embedded very constrained devices. And then I will share some tips to get started. So, let's go on. There is a lot of content on my slides, so I just charge for you to have a look out afterwards. You don't need to read everything. So, yes, Tizen is an operating system that is bundled into many, many, many products. So, it's a term of millions of products. We have TVs, we have smartwatches, a mobile phone, which is not as... It's just a fraction of the market of the mobile phone. It's not that important, but digital appliance. You have all kind of devices, vacuum cleaners. So, I will not make the list. We are not from... What I want to just focus on, if you look at the support of Tizen, I just listed a couple of devices. They are quite powerful devices. Even if they fit on the watch, it's quite similar to your computer you used a couple of years ago. So, there is a part where this operating system doesn't really match very constrained requirements. So, what about... So, it was bundled at the OS of everything, but this is what I've shown previously. It's a Linux system, and probably it will not address every use case. So, we have to find a solution to also address constrained device. So, there is a different class of constrained device, but if you look at the lowest one, it's really, really constrained. This is less than 10K of RAM, and you have only 100 of K for the ROM. So, probably very less powerful than your first computer when you were a kid. So, currently, Tizen RT is focusing on three types of configuration. Both are also three ones are using ARM CPU, and you have the smaller one to the higher one. Probably some things that will be difficult to bring the full Tizen stack on it. So, today I will speak about Cortex ARM R4, which is quite powerful, but not re-suitable for the right Tizen. So, Tizen is built on a Linux kernel, and the Linux kernel is flexible. It's available on every kind of devices. I know that people have managed to make it running on a light bulb. But it's not very efficient in terms of footprint or poor consumption. So, there are some efforts to reduce all the requirements, but we have a different approach. So, if you don't want to use the most flexible operating system, you have to develop by home or use an existing operating system. So, there are many different kind of products. I will just mention a few which are open source because this is what matters. And if you are considering to move your development to construct a device, I'd say something which is really relevant for yourself and for your team or your company or your business is a learning curve and the ability for software developers to get into the new operating system. Because usually people are comfortable with one technology. They try to fit with it, and they don't want to learn everything again and over again. Licensing can be also an important topic. So, let me explain about the origin of TizenRT. So, first, it was an internal project in Samsung about a different use case about collecting data from Samsung on constrained devices. IoTVT, which is software stack for seamless communication and seamless connectivity between devices was used. So, it was a project that was using IoTVT, constrained devices. And we needed an operating system, obviously, to run this. And the Nuttex kernel was used to build this project under the name Tiny Java. And then it developed over time and it was released to the public in 2016. And then it was rebranded into TizenRT afterwards. And that TizenRT is not only the base of the operating system, it's the world stack where we have a lot of features. So, let me just get back on Nuttex because it's an open source project. It's really inspired by Linux. If you're comfortable with any unique system, you will feel like home. You have a virtual file system. All your peripherals are accessible through a device. Like you can have a prock or slash dev, something that you are using if you're developing on Linux. You have a C and C library, POSIX API. You have C++ support. Also, everything is using the new tools. You are maybe comfortable with main files. For configuration, you're using K config. You know, when you're building your Linux kernel, you have all the settings you can select. This is the same logic. And in terms of features, there is some support for network and something really interesting is that you have a different process model because you're not loading the binary and running the executable. Everything is linked into the firmware. And it's quite configurable. And the requirement for an hello world before somebody asks can be very low. It's about 16K for just booting the system. And the support for hardware is quite good. So, let's have a look back at Python RT. So, this is a wall architecture. So, there is some components that have been mentioned in this discussion before, like this one from Benjamin. And I will just go into detail about some features. So, the first one I want to mention is that you can build applications on top of the system using JavaScript. So, that's quite challenging. And you can, if you're really interested, go to my colleague, she will talk after, not the next one, but the one after me. So, IoT.js is a runtime for JavaScript running on the JavaScript interpreter for constraint device. And this is running on Python RT. So, if you know about Node.js and V8, this is something very similar but very constraint. So, something quite challenging for Samsung is to make a system that will be reliable on IoT devices, that's supposed to last not forever, but a very long time. So, there are some efforts to try to change what have been done in Python and NetEx to have a feature focused on reliability. So, there is some rework or redesign of the architecture of the system. One major feature is to try to establish some protection units. This means that you want to separate the user and the kernel land and make sure that the user will not get raw access to the device or something like this, which can be very dangerous in terms of security. And as the next big challenge is to try to build a micro-kernel architecture. So, I'm not an expert of the domain, but to what I understood, the micro-kernel philosophy is to try to reduce the maximum of features that can be run in the kernel and then add services on top of, around it to provide all the, what you expect from an operating system. So, the only task that micro-kernel will address is addressing different tasks, giving access to memory and trying to synchronize all the tasks and so on. So, if you think about drivers or network stacks, they will not run in the kernel of their own ones. It will be done in a user land. So, I don't know if you look at this picture. So, in case if somebody goes down and all the network stack is going down, it's only a service which is defaulty. So, the system should be aware that something is bad over there and try to restart the service to make it available to others. So, there is a process of self-healing system. When you have some things which are unexpected, we try to recover slowly from this and not reset the system. So, if you were at the presentation of one of my colleagues yesterday in embedded room, he explained something very similar but for Linux system. So, you can have an idea about what is self-tolerance and the way to make sure the system will behave as expected. And if for some reason you're losing the control of the system and it's not easy to get fixed, you have the possibility to update it afterwards. So, here comes the next feature which is connectivity and device management and security. This is really your topic. So, there is a lot of features about connectivity. So, there is a lot of different protocols. The main contribution from Samsung on the NetEx is to add... If you compare to NetEx, we have IPv6 support. So, this is bringing on new opportunities in terms of device-to-device connectivity. So, your IoTVT framework has been ported to it also. And cloud feature and I will not go too back in detail. So, one of the mission is to provide the device management framework to tithonerties, update the device, monitor the device. So, this is not yet over but there are some efforts. Security, which is really not my domain. It's really something very specific. Mostly to what I understood is done the most at the hardware level. So, let me introduce one of the supported board via tithonerties. I am not so much but this one is the reference board. Actually, this is a family of boards. So, this one is the one I use for the demonstration I will show later. So, it's an arm for core and it is, let's say, optimized for real-time and reliability. And beside the main CPU, you have some units for security. So, there is some specific ship for providing security feature. So, there is some... If you compare to Raspberry Pi, that's not something very easy to compare but something really cool for DRY is you have a lot of input to play with. So, if you want to play with tithonerties, you have also QMU support which can be a good way to get it started. And, other way, you can try to port to your favorite board. So, let's go with... If you boot the system, it will look like this. So, you have a U-boot log on the left and then you have a shell when you can try to run different options. So, different commands. So, it's really inspired by another operating system you already know. So, if you now want to create your own application, there are possible systems. So, all the code is developed on GitHub so you can get it and eventually submit bugs and patches. And you install the toolshed and in a couple of commands, you configure the system and you were able to deploy it to your board. So, next, if you want to create your own first application, there is an Hello World app. You can use it as a template. So, there is no black magic. You will be able to use the regular C-include files and try to build your application. Not all the functions may be available. So, in case one is missing, you either try to find an alternative one or re-implement one or eventually port something existing. So, if you want to exercise, you can try to create a socket application. That's a really important existing Linux one. You'll see it's the same. So, if you want to create a JavaScript application, the first thing you need to do is to enable IoT.js in the configuration of the TizenRT and then you have IoT.js interpreter when you can load JavaScript and execute them. And if you want to make a standard application, you just need to create a task that will run on boot. This is what I would show just now. So, if that's the post you want to get into TizenRT, I wanted to use it and get fast results. So, I tried to make this little proof-of-concept demonstration. So, I was trying to... something which is trendy in the, let's say, IoT. So, to try to collect data from the environment and to access, if you can, build something useful out of it to have a positive feedback on it. So, the first thing we have to do is to get the... to know where we are and how can we proceed. So, I have working on a sensor just to try to measure the quality of the hair. And when I got this result, I can try to establish a scenario. So, to create the demonstration, I've been using an analog sensor. So, you have to be careful because two sensors are working in 5V. My board is working on 1.8V, so you have to make a level shifter and so on. And I created a JavaScript class that is just dealing with the sensor and just producing events to... reporting to the system. Next, I wanted to send another to... a radio, so I'm not using Internet on this. I'm using another network, which is a low-power... low-power radio. So, but the bandwidth is very limited, but for my case, it was okay. So, I use this lower microchip modem and with a couple of commands through the serial port, you can try to connect to a network and send some value to the network. So, then you can get it back on the Internet or web front-end. I think I can show... I can show... So, I recorded a video in case it was not working, but I will just... So, what I have here is the devices. So, the sensor is here. This is my home city, Ren, and I'm using this small antenna to the big one. And if I put some gas on the sensor, then there is a notification sound. You cannot hear it here. And then I'm receiving the data on this big infrastructure. So, I can show it again here. But I will show you a different view. So, make... Okay. So, let me just reset the device. So, U-boot is booting. I'm just putting some configuration. Now, oh, it's very small. So, yes. Can you see it? Yeah, maybe in the beginning. So, here is... I'm talking with my modem with TX and RX command. And once I'm joined the network, I'm supposed to be accepted. Yes, that's pretty cool. And just showing some information. We don't really care for now. And this air quality thread is updating the value of the sensor. So, I use this writer. And if it is getting above a threshold, I'm raising it out. And I've been sent the payload, which should be received on the other side, but maybe not in this room, because there is probably a high run. So, let me check. We never know. So, here I'm connected to the... something really new from people I just met yesterday. So, I'm not yet receiving it. But if you check at the time, this was just yesterday from my hotel room. So, I have the window open in my room, and it was a bit freezing, but... So, yeah. If you have some questions during the Q&A, you can ask for people from Brussels and Belgium. Those people are doing amazing things. So, let's go back to the presentation. Where is it? So, here is an overview about my system. Something I didn't show is, okay, are we able to send a notification to some antenna? But at the same time, something that could be really useful is to get the position of the device. So, especially if it's a mobile device, so I put my on a bike. This is not a finished product, as you see. And with the phone, you can get the position. You can get the position in a different way using the lower network. And I have a GPS on my phone, obviously. And I'm using this as a server, and I will share the position to the DIY box. And then I get something more interesting to send back to the network. So, here I'm running the IoTVT server, which is sharing the value of the position. And this side, I'm running a client. So, this is native code, no JavaScript. And it's discovering the resource on the network. And updated in real time. So, this is IoTVT. I didn't speak too much about it, but we will find some resources online. So, I think I'm over now. So, let's make a short summary. So, Tizen, the big Tizen you can see is based on Linux kernel. Tizen is something totally different. Some features of Tizen are ported to Tizen RT. It's open to developers. You can use it and create applications using native APIs or JavaScript or even to report some features into the platform. And there are a couple of tools and what I'm a common line user, so I didn't show them here. So, I think, yes, some references. All my demonstrations are in my private repository, but it's really in a work-in-progress mode, so I will try to clean it up for you in the future. And now, we have a couple of time for questions. Don't hesitate to ask. Yes, thank you. Yeah, what schedulers does your kernel support? So, if I go back to the question, it was about FIFO. FIFO is a scheduler of NuttX. This is something I don't know if we are aligned to this or if it's something to be changed because there is this new micro kernel architecture, so maybe some decision made by NuttX developer could change. I don't know exactly. I need to check for giving you... and it could change in the future. It's not something... I cannot really give you the answer you expect. Yeah, FIFO is a one-user on NuttX. I suppose it's the same currently. Just that schedule, you know, maybe the schedule is like other operating systems where you can run Robin on some priorities or have it go on. Priority is supported, yeah. So, what kind of future on-term scheduling do we have compared to other operating systems? I didn't really investigate that part, so it would be difficult to give you an accurate answer. But yes, there is a task and priority and preemption. That's probably the key feature. Nice talk. I'm just wondering what is the long-term strategy for backward compatibility with NuttX and how many patches have been backcoded for TizenRT and NuttX so far? From Tizen to NuttX. The question is a relationship between TizenRT and NuttX and in the long-term, TizenRT developer will invest, will forward their purchase to NuttX to what I've seen today because I cannot predict the future. There are only a few patches on NuttX. I suspect that it will be when the tiny-hour project will happen, but now technically speaking, it's a fork. So, in the future, probably, for instance, NuttX support can be something that will be really interesting to NuttX developers, so maybe some community will try to backbox it. I cannot speak for some, so I don't know exactly the strategy. But in my case, I've fixed some, there was a mistake in some application, and I send a patch to NuttX. Yes? Can you tell us a little bit more about what you've got in Saferbox or exactly what's in Saferbox about TizenRT? Yes. Oh, I can unpack it, but we don't have the time. So, yes, I have this mainboard. Yeah, what's inside the box? So, I have this mainboard, Artic055S. I have this, I can unpack it now. This is a module called Lorabi. It's made by a Dutch company, no, Netherlands. So, they are shipping this transceiver from my ship. So, with the antenna, it has an XB factor, but I'm not using the socket, so I made the Y by myself. I have this sensor. I'm also using a pretty cool device, which is a software oscilloscope. I'm using this because there is a 5V and 3V for the power output and for debugging it also. And I have this buzzer for the sound, an LED for the showing, and other stuff I didn't show today. But that's just a buzzer type. I would probably use this monitor later as soon as I'm back home. All right. Thank you very much.