How to Get Started Learning Embedded Systems

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey everybody what's up its embedded systems time seriously folks a long time ago I made a video about embedded systems I told you all that it was great this is a topic that's near and dear to my heart it's something that I work on all the time and then I haven't really touched it since but all that needs to change because it's too great a topic and so starting today and in the coming months I'm going to try to squeeze some more embedded systems videos in with my other videos and for today's video I'm not gonna get into a lot of details but I want to talk about how you get started some of you have asked how do I get started in embedded systems today I want to give some advice because this space can be a little bit tricky some of you may be at a university that doesn't have an embedded systems class or maybe you're in high school and you definitely don't have an embedded systems class at your high school and you're just trying to figure out how to get your hands on this stuff because it's cool and you're trying to figure out what to ask mom and dad to buy you for Christmas or something like that so let's see if I can give you a little bit of help today first of all for those that have no idea what I'm talking about embedded systems are just systems computing systems that are embedded in things very loosely speaking when we talk about embedded systems we're talking about systems that are not laptops desktops phones or servers they could be dishwashers toys cars airplanes drones robots these are all different kinds of embedded systems so let's say you're really excited about embedded systems you want to try this out a little where do you get started my first piece of advice is to learn see I know big surprise coming from me coming from this channel I talk a lot about C but I'm serious most of the embedded systems work that I do is either in C or in C++ the reason for that is simple and that's that most of the microcontrollers I work on those are the processors in these little embedded systems have very little memory and you may not be able to run a java virtual machine or a Python interpreter or a Ruby interpreter you think you just take up too much memory no one's ported them over but you can pretty much find a C compiler for any processor that's ever been created so if you've never seen C is at the end of the world no but a little bit of C is going to help a lot with understand anything that I say about embedded systems and pretty much anything you see out on the internet talking about admitted systems but you can learn as you go I just think that learning C on a laptop or on a desktop is going to be a lot easier than learning on a microcontroller and so you might want to start by looking at some of my beginner videos and some of the other beginner videos that are out there on the internet basically tried to do a little bit of C programming before you dive into microcontrollers because it might keep your life a little more sane take this advice as from a friend who wants you to enjoy embedded systems learn at least some C first my number two piece of advice or number one if you choose to throw my first piece of advice out the window and decide not to learn C is to pick a platform this basically means pick the hardware that you want to learn on and this is a very personal choice it can depend a lot on what you want to do maybe you have a project in mind something that you would actually like to play with you've got a drone or a robot or a toy or something that you want to build maybe you have a kit in mind that you're going to buy that has a particular microcontroller but each hardware choice comes with different trade-offs and embedded systems work tends to be very specific to the hardware that you are working on and so you want to put a little thought into what hardware you are going to be working on maybe you're doing this for work maybe you're doing this for a class and the platform is already picked for you but for this video I'm assuming you have a choice and that choice comes with some consequences because each piece of hardware out there can do different things and can do different things well some platforms have more memory or the more powerful while others may conserve more energy maybe they don't use very much energy and so if you care about battery life and you're making a wearable or some kind of mobile device this matters to you and different hardware platforms come with different software options and different communities never underestimate the power of community if you are one of a hundred developers working on a particular platform you are probably going to get less help than if there are a million other developers all working on this platform so let's talk specifics I want to give you a couple of recommendations that might be helpful and to be clear no one is sponsoring this video no one is paying me to say any of this this is just the stuff that I use in my work the stuff that I've used in the classroom and stuff that I think will be useful for beginners and I'm going to talk about a range of options here and the right option for you is going to and a lot on your style and what you hope to get out of it so one question at this point to ask yourself is what am I looking for are you looking for a fairly easy platform to get something up and running really quickly or are you looking to really dive in and understand everything about a system you want to understand the nuts and bolts and if you're on the former side you're looking for an easy up and running let's let's get started quickly and get something put together really fast I recommend you start with Arduino or energiya which is just an Arduino clone they provide support for some of the Texas Instruments microcontrollers that aren't supported by Arduino Arduino has a lot of different software out there there are a ton of tutorials a ton of examples and a lot of different hardware options that are compatible with it I recommend that you find one that's commonly used like maybe this Arduino Uno right here so this guy is right here is an Arduino Uno it's probably the most commonly used Arduino on the market and that's why I recommend it it's great software support for it a lot of people use it you'll see it used in a ton of projects it's not the smallest it's not the lowest power thing out there but it has a great community and so it's a really good one to learn with so one of the many projects that I'm working on is I've been working with MS bard Ron's class at RC Edwards middle school back in South Carolina trying to help sixth seventh and eighth graders actually learn how to do some embedded systems coding well not just the coding but we also do some electronics work and we've been using these are we knows so I've seen a lot of successes at the middle school level using these devices and so that makes me think that they're pretty good for beginners I'll link to the Arduino home page in the description below there are a ton of examples both on that website and on other websites Arduino also comes with its own IDE otherwise known as integrated development environment and those of you that have watched a lot of my videos may know that I'm not a huge fan of ideas but for brand new beginners someone just getting started this is not a bad place to start just keep in mind that anything you do with that IDE can be done using a make file from the terminal once you really want to understand everything that's going on under the hood the programs that you write in Arduino are written in C well technically it's C++ but you don't really use many of the characteristic C++ constructs and so you may not realize it is C++ unless you creating your own reusable Arduino software modules which we'll get into later on in a future video but for now let's move on to option number two because Arduino does have some downsides some people consider it embedded systems light which i think is a little unfair because there's a lot of great stuff there's a lot of professional-grade stuff that has been done with Arduino I actually use Arduino in a lot of my work mostly for instrumenting experiments and it's probably done more than any other platform on the earth except maybe the Raspberry Pi to bring embedded systems to the masses but let's say instead that you want to become a low-level embedded systems expert you want to know everything you've got control issues and you really want to know everything that's going on on that processor and in that hardware all the time if that's you than Arduino might not be the best option because with Arduino there's a lot of software there's a lot of layers of software they're doing different things that might get in your way for example on my research prototypes I usually don't use Arduino because we're usually very very fixated on getting the power draw as low as we possibly can and a lot of the stuff that Arduino does for us for simplicity for convenience sometimes gets in the way of my ability to actually optimize my own software for my research prototypes I need more control if this is you you need to find the microcontroller you want to work with and start writing C code for it I tend to use Texas Instruments msp430 processors because they're crazy low power and they have F RAM which is really useful for a lot of the battery less work that I do if you don't want to use the Texas Instruments microcontrollers you can always use the add mega microcontrollers which are the ones on the Arduino that I just showed you and you could just ignore all that Arduino software and just or comb through the software and try to figure out what it's doing the point is is to find a microcontroller and start writing the code for it now it's important to keep in mind that this is learning the hard way you're gonna do a lot of interfacing with hardware you're going to be reading a lot of bits and bytes from hardware registers you're gonna be learning how to configure clocks and timers you're going to be how to handle interrupts lots of details lots of good juicy things to learn this is not for the faint-hearted but in the end you will probably understand what's going on on that microcontroller at a level that most Arduino users will never actually get to so there is a payoff if you decide to go this route you can usually find a version of GCC or clang that will support the microcontroller that you're working with as well as the binary tools make and gdb or l DB you're undoubtedly going to spend more time looking at the processors manual the user guide and looking through data sheets and you may find fewer example programs and poorer documentation consider yourself warned but it's pretty awesome when you get over the learning curve because you really understand how things work it allows you to do a lot of cool things and that brings me to my third platform recommendation which is the Raspberry Pi I don't have a Raspberry Pi here to show you but the Raspberry Pi is more powerful it has a beefier processor it has more memory and it runs Linux for heaven's sake so if you're looking for something that feels more like your laptop that feels more comfortable or maybe you've got a big piece of software that runs on a laptop runs runs on Linux and you need it to run on your embedded device and you don't want to spend a lot of time porting it then the Raspberry Pi might be the option for you the Raspberry Pi has a solid community there are lots of examples out there good support and in my experience it works really well the downsides are you've got a lot of software sitting between you the programmer and the hardware that it's running on I'm gonna hand this means that you can do things like run Python scripts and use your familiar Linux environment assuming that Linux is familiar to you on the other hand it means interacting with hardware maybe a little more complicated and I find those students using the Raspberry Pi don't understand what the hardware's doing or how your code is interacting with the hardware at the same level that you would with the other options and of course if you don't know Linux then that's not gonna be a help anyway in my research lab we'll use raspberry PI's we use all these options but we tend to use the Raspberry Pi for base stations for when we want to take some devices we've connected up and we want to help connect their data up to the Internet to a database somewhere maybe we want to run a database on our actual gateway or we have some piece of Linux software that we really don't want to pour it over then we might use a Raspberry Pi it's definitely a solid option that you should consider so those are my recommendations I put a bunch of links in the description a lot of helpful content and web pages and there are definitely other options there and I'm sure I've left out some of your favorites if I have please let me know in the comment section what you think I should have included and of course stay tuned in the coming months as I produce some more videos about embedded systems for all of you embedded systems enthusiasts or those of you that are just curious out there so I hope that helps you get started happy coding and I'm tell my next video I'll see you later [Music]
Info
Channel: Jacob Sorber
Views: 126,798
Rating: 4.9591193 out of 5
Keywords: get started embedded systems, embedded systems, embedded systems programming, what is embedded system, embedded system concepts, what are embedded systems, basics of embedded systems, learning embedded systems, embedded system, embedded programming, systems programming, arduino, raspberry pi, microcontroller, embedded system explained
Id: aC37UE7edP0
Channel Id: undefined
Length: 11min 8sec (668 seconds)
Published: Sat Nov 30 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.