[MUSIC] Hello and welcome to the first lecture of the course. This course if called embedded hardware and operating systems. This course is a practice oriented guide on how to build an embedded system. Nowadays, computers are literally everywhere. They run engines, they encode voice, and construct radio signals to use them for mobile communication. They even control your microwave. This non-visible computers that make it all possible are called embedded systems. Although embedded system have received much attention from researcher in the past, the community has just recently recognized that new approaches are needed to develop and analyze them. Mainly because they are one of the most rapidly growing fields in the computer industry. Considering the transient technology, we can say that such kind of systems will soon be integrated into more things. Computer will be everywhere information will be available anytime, any where. As an example of embedded systems, we can think of airplanes. An airplane is full of embedded computers in it. Seats have entertainment systems with video, audio and gaming capabilities. There is an air conditioning system adjusting the temperature and pressure of the cabin. On the other hand, the flight management system is heavily equipped with embedded systems. There are plenty of different sensors reporting the situation to the pilot. Location, weather, altitude, speed, orientation, all these values are constantly monitored. The autopilot system significantly reduces the pilot workload. Wings, jet engines, landing gear, brakes, and so on are controlled electronically from the cockpit. So as we see, an airplane is full of computers embedded in different locations with different functionalities and purposes and with different requirements too. What are the main characteristics and constraints of an embedded system used in airplanes? Well first and the most important one, they have to be reliable. Sensors should report correct values all the time. The control system should not make any mistake under any circumstances and must react according to deadlines. Wings, brakes, landing gear, and so on should follow exactly what the pilot demands. If any of these reliability requirements are not fulfilled, then a catastrophe can easily happen. What do we mean by reliability, and how to measure it? Anyway, we will discuss it in future lessons. On the other hand, embedded systems should be secure. No one must be able to break in to the control system or the airplane and override the sensors and command data. What else can we think of? Well another important concern is the real time behavior of the airplane's systems both in the passenger cabins and in the cockpit. Passenger expects to watch smooth movies with no interruption or jitter. The pilots commands should take effect at the right time, and the autopilot system must not make late decisions. Another good example that reflects the idea that computing will be everywhere is the Internet of Things. Indeed, the aim is to spread nodes around the world. A node, it's the small embedded system connected to sensors and activators. Nodes will collect data of any kind. It may be temperature measurements or acceleration. The data then will be pre-processed in the fog layer an sent to the Cloud. There are many problems to tackle in this field. Nodes may be located in remote areas, and it is desirable to make the nodes work for longer. So energy efficiency is one of the issues that the Internet of Things pulls out. Another issue is making the gathered data meaningful. In other words, it is about getting information out from the messy data. Here machine learning is coming into the picture. So Internet of Things will provide people with a lot of data, which can be used, for example, to optimize processes. There are many other examples of embedded systems that are applied in different fields of industry, from home appliances to aerospace. Now that you probably have a basic idea of what an embedded system is, let's talk about how we can describe such system. Well an embedded system is typically reactive. This means that such system is constantly interacting with its environment and executes with that environment say so. Reactive systems being in some state is waiting for an input, performs computations, produces an output, and transits to a new state. Thus such systems can be modeled as Automata. In other words, it is a set of states, inputs, and outputs. So the abstract model of an embedded system consists of inputs, outputs, a unit to perform computations, and communication interfaces to exchange data with other embedded systems. Inputs provide the computation unit with data. Sensors can play the role of inputs. Sensors can convert physical quantities into numbers. Actuators for example, electrical moderators can be outputs. In between inputs and outputs there is a unit called processing element that makes computations on the input and produces output. A persisting element is the digital device. During the course, we will talk about two types of processing elements and better processors and FPGA's. In the course, we will talk about what a processing element is, and how to pick an appropriate one for certain applications. We will discuss how embedded processors and FPGA's are built, and how to deal with them. We also will cover most popular embedded platforms, this will be of great interest for those who want to get hands on experience on building an embedded system. We will also talk about sensors and actuators, and how to interface with them. Embedded hardware works guided by software. That's why embedded operating systems will also be covered in the course. Indeed, the right choice of embedded operating system may not only simplify the development, but also affect crucial parameters of the system, such as energy consumption, or computational performance. This course is intended for those who want to obtain knowledge on how to build an embedded system. This is, selecting the appropriate components, based on the requirements you have for your application. To ease the process of selection, it maybe important to know how those components work and what their main characteristics are. After selecting those components, they are assembled together, program may have needed and used. All these steps from selection to assembly are going to be covered during the course. So if you want to design your own embedded system, this course is a good starting point for that. [MUSIC]