Thumbnail for All about Embedded Systems | Must master Skills | Different Roles | Salaries 💰 by Sanchit Kulkarni

All about Embedded Systems | Must master Skills | Different Roles | Salaries 💰

Sanchit Kulkarni

12m 32s2,345 words~12 min read
YouTube auto captions
Transcript source

YouTube auto captions

This transcript was extracted from YouTube's auto-generated caption track. The transcript below is server-rendered so it can be read, searched, cited, and shared without opening the original YouTube player.

Pull quotes
[0:08]In this video let's exactly see what an embedded engineer does and what average salary you can expect for each embedded role.
[0:08]But before we start make sure to like and share this video and also subscribe so that we can build a strong electronics community.
[0:08]washing machines, ACs, phones, laptops, smart watches to systems in cars, planes and spacecrafts are all embedded systems.
[0:08]If you're in the window seat while landing, you'll have observed that part of the wing goes down.
Use this transcript
Related transcript hubs

[0:00]What is an embedded system and what do embedded engineers exactly do? Do they write embedded software or work on making the hardware?

[0:08]Is there even something called Embedded C? Colleges and people online have made Embedded very confusing. There are lot of misconceptions and myths regarding Embedded. Let's clear all of the misconceptions related to this field. In this video let's exactly see what an embedded engineer does and what average salary you can expect for each embedded role. Let's make this video as practical as possible. But before we start make sure to like and share this video and also subscribe so that we can build a strong electronics community. Okay, first let's answer the basic question. What is an embedded system? Basically, you use a microprocessor and develop a system to do a specific task. Now, this can be an independent system or part of a larger system. From your TV remote or your AC remote. washing machines, ACs, phones, laptops, smart watches to systems in cars, planes and spacecrafts are all embedded systems. Basically any smart device you see around is an embedded system. But what do embedded engineers do? We'll understand this using a real life example. Okay, let's say we need to design flap for the wing of an aircraft. If you're in the window seat while landing, you'll have observed that part of the wing goes down. This is mainly done to reduce speed of an aircraft so that it can land using less runway. Like in hilly areas you usually have shorter runways. If you have not observed it till now, observe it the next time. This flap is moved using a motor and this flap can be set to 5, 10, 15 and 40 degrees. And this is called usually flap one, flap two, flap four landing. The objective for the embedded team will be to control the motor at any particular angle and keep it stable there. Also, there is something called as Q sensor which detects if both the flaps are at the same angle, otherwise there'll be an imbalance in the flight. Now the embedded team comes into action. First task will be to design the entire system, system design. This is usually done by a systems engineer. Here you have to choose whether to go with a microcontroller or a microprocessor. Which processor family to choose? 16 bit controller or a 32 bit controller or a 8 bit controller? What will be your memory, power requirements? To come up at the best possible decision for your processor, you will have to consider how much data needs to be processed and what budget do you have? Then you will have to see what all IO requirements are there. You will have to choose appropriate sensors, motors and additional memory if required. Mainly capacity and type of memory for the task will be the deciding factors. Also, whether the system will be battery operated or plugin power is available. For all of this you will have to keep going through different data sheets of all these components and come to a conclusion. Once this is done you'll have to make a block diagram, like the microcontroller interacting with the sensor and then the motor driver which will in turn connect with the motor. This will be an upper level representation. Then a bomb Bill of materials is prepared which will have all the components that will be used along with its quantities. Once your bomb and block diagram is ready, two processes start in parallel. First, designing the hardware and second programming the microcontroller. In hardware development, you first develop the detailed schematic using the block diagram with all the proper connections and then design the final PCB for it. This is done by embedded hardware engineer. And in software development, you code the microcontroller for the specific task. Like in our case, taking data from the sensor and controlling the motor. This is done by your embedded software engineer. But your obvious question will be, how does an embedded software person control the hardware by the microcontroller, if the development of hardware goes in parallel? They use development boards that are available and start off by programming the microcontroller. That's why an embedded software engineer also needs to have a knowledge about the hardware. Knowledge about hardware is what exactly differentiates an embedded software engineer from a general software engineer. Like in our case, you will be controlling the motor from the microprocessor. So you need to know everything about the microprocessor. You need to go through the data sheet of the processor properly, know about the GPIO pins, which of them are analog, digital pins. Then you have to know the memory constraint of the device and accordingly coded. But which language is used to code the microprocessor? Embedded C or just C? You'll have heard professors, people online saying that embedded engineers code in Embedded C, which is an extension of C programming and both of them are two different languages. Let me clear this very big myth. Embedded C and C are not two different languages, neither is Embedded C an extension of traditional C. Embedded C is same as C programming itself. The reason why people think Embedded C is a different language is because they see that they can access the registers and pins of the microcontrollers directly in the code. Like in 8051 you use TMOD, SCON, TI etc in the code, whereas in traditional C we don't use them. But these 8051 registers are declared and are mapped to the physical address location of 8051 in this header file reg51.h. This is just part of your linker script. It's not that these are some special variables. Whereas in a traditional C code, you declare and define the variables and then the compiler converts it into the object code and later the linker decides where it actually goes into the memory. Because in your traditional C code you are not bothered in which memory location the variable actually goes. But in Embedded you control the memory location through the code using the linker script given by the manufacturer. But this is just C itself. There is no special language called embedded C. From now on, if someone says embedded C, correct them and say C for embedded systems. This will avoid all the confusions and make it clear. So now that we know that as an embedded software engineer you should master C, let's go ahead. But before you code the microcontroller, you need some kind of software that loads or updates a code into the microcontroller. This is the job of your bootloader. Like when you start your computer, the first thing you see on the screen is BIOS, right? It basically checks if all the hardware is fine and then loads the bootloader, which in turn loads the OS kernel into the memory. In the same way, bootloader is the first piece of code that runs in your microcontroller or your microprocessor, which initializes the hardware and then loads the firmware into the memory.

[6:29]Firmware is just the code that you write for the microcontroller. Also, bootloader helps you update your code. Like when you work on Arduino, you load the code via just the USB cable, right? Every time you change the code, you again load it using the USB cable. This is all because of bootloader making our lives simple. Bootloader basically uses UART protocol and writes the code into the flash. Flash is basically the non-volatile memory on your chip. So even if the power goes off, your code is still there. Now your obvious question will be, why should embedded software guy know about bootloaders? See, most of the time you get the bootloader with your device from the manufacturer. But as bootloader is the first piece of code that runs after power up or reset, you might use it to initialize your hardware the way you want it to be. Like in our case, initializing the motor to zero degrees always. So it always starts from zero degrees. And mind you, part of bootloaders even today are written in assembly code. Some people will tell you that assembly code is not required to learn anymore and all, right? But if you want to write bootloaders or even modify it, you need to know assembly code. The more closer you get to the hardware, the more you will require assembly code. Okay, after that you just write your firmware in C, which is basically the application code, which runs in your microprocessor and does your job. Like in our case controlling the motor to a specific angle. Also, reading the sensor and seeing if the motor of both the flaps are set to the same angle so that there is no imbalance in the flight. One very important thing is knowing the protocols. The bare minimum is UART. As we discussed earlier, the initial boot up will be done using UART. So anything goes wrong for any reason or for any debug in this phase, you will need to know UART. Coming to the hardware design, which is done by a hardware engineer or as some people also like to call it, Embedded Hardware Engineer. Many people think that hardware engineer makes everything on the hardware including the processor. Let me clarify this properly. See, VLSI engineers make the processor or the chip and then embedded engineers develop a system around the chip. Embedded software person codes the processor and embedded hardware person uses the processor and interfaces the circuit around it. As a hardware engineer, you will have to develop the complete schematic using the block diagram and design the hardware on the PCB. In just one PCB, you will have all the connections and the main microcontroller on it. You'll have to keep signal integrity, EMI, EMC in mind while designing the hardware. We don't use our gadgets in an isolated environment, right? Around us there'll be electromagnetic radiations. We need to be sure that those signals don't affect our system. Especially in this case, as we are designing the flap system for an aircraft, we need to take extra care. Also, we need to design the PCB according to the protocols we use, like I2C, SPI etc. Next, as you will be driving a powerful motor, which will require high current, you cannot drive it directly from the microcontroller, as you'll not get that much current from it, right? So for this, you will have to either design a driver that can amplify the input current and drive the motor or you can also use readily available drivers like L293D. Sometimes you'll also need to simulate the circuit on LTSpice to check for its behavior. Here in this example, you need to control the motor to a specific angle, which has to be controlled using a PID controller. This is a concept of control system. Basically, you need to design a stable close system that can stabilize the motor to a given angle. Like say the motor has to stay at 30 degrees. So you will have to control the motor in such a way that as soon as it reaches 30 degrees, it stops and stays there. Very interesting, right? So only if you have studied control system, you can develop the PID controller. Usually the embedded hardware engineer will have to give the configurations of P I and D values to the embedded software team. Hardware engineers usually use a simple development board like Arduino and control the motor because to arrive at PID values, you'll have to do some hit and trials and keep experimenting on what can be the best values to stabilize your system. That's why even if you are an embedded hardware engineer, you need to know how to code a microcontroller. Then you have test engineers who test the firmware on the hardware for every possible situation. In this case, as it will be a part of an aircraft, testing becomes very, very important. For every scenario, you need to test it and provide the feedback to the design team. Coming to the salaries for all these roles, see embedded engineer salary very much depends on the industry you are in. There are two major industries you can be in, that is into semiconductor industry or consumer electronics industry. Like take a TI microcontroller, the processor for this TI board is made by VLSI engineers. You can watch this video where I've explained how a hardware chip is exactly made. Then you need to develop the firmware for this processor like your bootloaders. This is done by your embedded software engineers. Then it is used by companies like Bosch, Panasonic or LG to make their consumer electronics like ACs, fridge, washing machines. In both these industries, you require embedded engineers. But the starting salaries are different. In semiconductor industries, starting salaries of embedded software engineers are on par with VLSI engineer salaries. So in these companies, you can expect a starting salary from 15 to 40 LPA CTC. But in consumer electronics industries, the starting salaries you can expect is from 7 to 15 LPA CTC. Okay, coming to the skills, as an embedded engineer, be it any role, the three skills you must have are mastering the C programming while keeping memory in mind. Second, knowing about the protocols, at least UART, SPI and I2C. Third, ability of going through the data sheets. If you have observed for every role above, I have mentioned going through data sheets. I'll make a dedicated roadmap video for embedded systems, so stay tuned. If you have come till here, you will have got a good idea about embedded systems. Mostly online people have misunderstood this field. Anyways, let me know in the comments below that if you have loved the practical example and the content I've shared. See you in the next video.

Need another transcript?

Paste any YouTube URL to get a clean transcript in seconds.

Get a Transcript