 So as many of you know, I'm Render Man and I have a distinct pleasure of moderating this panel and introduction to microcontrollers. And I cannot believe that there are like every seat seems to be filled here. What's that? The pressure is on. I'm not wearing pants. And your crotch is right at the level of Joe's giant red fist. Excuse me a moment. It's going to be one of those kinds of panels, apparently. Yeah, you don't want to know what's going on behind this podium here. So on my left. Is that my left? Yes, that's my left. We have firmwares. We have lost, who everybody should know. And I have a personal grudge against for the number of years of torture from Mystery Challenge. Oh, yeah. All right. And Joe Grand, which... I'd like to correct that, Render. That's TV's Joe Grand. Oh, TV's Joe Grand. Yes, thank you. No applause, please. So we're basically here talking microcontrollers. I'm like elated because I get to pick these guys as brains for an hour here. That is something I would have like killed for at any other time. So basically, we're just going to go down and just sort of have everybody introduce how they got into micros and just sort of their history. And we'll go from there. So firmwares? Well, I started hacking code on an Altair 8800B. And like a lot of you guys, I loved writing software, but it's like I wanted to do hardware stuff. And so I ended up with back in the day of 8051 microcontrollers. And that was all for fun. Being an embedded systems engineer, making my way up to being a VP of engineering for a contract design house. So I love making hardware that does something. And some of it has blown stuff up. And some of it has helped people live. So it's probably a good balance. Kind of a 50-50 thing there. Kind of a net zero. Yeah. So my first foray into the world of microcontrollers was with the Motorola 68HC11. Anybody in the audience remember that chip? Yeah. We dated ourselves, right? Yeah, the 80s called. They went their street cred back. So I've just always been interested in how things work, not just electronics, but just things in general. As a kid, I was always taking stuff apart and occasionally able to put it back together. Usually things are hacked to have different functionality. I've had numerous jobs over the years. I've worked for Parallax. I've worked as a design consultant for companies doing embedded systems. And specifically embedded system security because that's kind of where my interests fly. And you have some experience with some badge design. A little. Not as much as Joe. Not yet. Working on that. Yeah, so I'm Joe Grand. TV's Joe Grand. TV's Joe Grand. Please, no applause, please. Yeah, so I got started with computers and electronics really early in 1982, was in Atari 400. And my brother was luckily interested in this type of stuff. So he started through all these tools at me and electronics and didn't literally hit me. But I kind of was exposed to a lot of electronics at an early age, which was cool. So I first started getting involved in kind of non-microcontroller development. So making boards for, you know, red boxes and blue boxes and various phone freaking stuff. I think the statute of limitations is up. It's probably up, yeah. But I got involved in embedded development kind of in my teenage years and in college. So I was sort of a Motorola HCO5, HCO8 guy for a while. And then got involved with microchip picks and sort of stayed with those. Motorola spun off into free scale. So I went over and started using free scale stuff. But if you guys noticed the for DEF CON 14 badge was a microchip pick and then 15 through 18 was all free scale. And that was mostly because they would just take me out to dinner more than microchip did. So yeah. The fastest way to Joe Grant's heart is through his free food pretty much guys. Remember that. So I sort of specialized in embedded system development of kind of low end consumer and household devices. I do hardware security. I break stuff once in a while too. So interesting side note, Joe. Do you realize that some of the products that you would submit to Parallax for sale that I was the one that was actually looking at them with John Bearman? I know, yeah. That's how kind of Joe and I met. And so before we met through DEF CON I was looking at these products and I think it was the GPS module. Before GPS was easy to deal with. Yeah, and we were standing outside and I think it was a John Williams that was busing your balls about something. I just remember a funny interaction that we had and you were going to. I think Ryan was at DEF CON and I was at DEF CON but I don't know if we knew each other. And it was like, you work at Parallax? Weird. But yeah, it's a small, sort of like the embedded world is kind of a small community I think. And for the record I do not work for Parallax anymore. No, Joe. So I think the first question for everyone, what? And this guy over here. Let me give you some water. And the funny thing is, Smitty is the one who put this whole thing together. This whole panel was my idea. I'm not sure how I got convinced these heavies to do this panel with me. My name is Mark Smith or Smitty. I'm the only one up here who does not do microcontrollers professionally. And so I am a hobbyist with my microcontrollers. I spend most of my time on atmels these days. Thank you for seeing atmels and not saying the other A word. I'm sure it will come up. I'm waiting for that. Oh, the Arduino word. That will come up. Oh, good lord. We got a bad reception on that one. But I got my starting computers when I was at a very young age. My older sister got a TRS80, Model 1. Can any of you beat that? Actually no, I think the 8800 beats that. Yeah. So I started on that just doing basic I didn't get into assembly until college in the early 90s. My first microcontroller work was on an 8051 but I didn't spend a lot of time in Intel because Intel assembly sucks. Then, yeah. And I'm a hobbyist. I am a network engineer and system administrator by trade and I just do this on the weekends for fun because I like making stuff and I like making things that work and I've been into electronics for a long time and then once microcontrollers started getting really cheap in the 90s that's when I got into adding program ability to my projects. So, okay. So, and thanks for putting this panel together by the way. Yeah. Yes. What was that? Oh, shit, you're welcome. So everyone who's not played with microcontrollers or is just starting like I am, initially it's the question of where do you start because it is such a huge field and so many platforms, so many development tools out there how the hell are you supposed to know where to begin? And I know some of you guys actually teach classes on this. Where is a good place to kind of start and learn this? Should we just go down the line? Okay. I think that's definitely like people come up to me and ask the same thing. The other thing about nowadays is that there are so many choices, right? Like back in the day if you wanted to get into microcontroller development you had to get the individual microcontroller, deal with the development environment, add a bunch of external stuff just to get the part up. The programmers, the platform, the memory, everything else. And then you were writing like assembly hoping that it was going to work. So now it's like you have, you know, Arduino platforms, you have what you want to do with that device, right? Because there's so many different flavors and so many different levels. If you're doing something basic maybe use a basic stamp. Or if you're doing something complicated maybe do Raspberry Pi, which is Linux based and now you can write all sorts of Linux stuff so you don't even have to be a hardware guy you can just write code and have stuff work on the hardware. So yeah, it totally depends on what you're doing. I agree, it depends on what you're doing with the tool chain for me. Because I can't take a new and drop them into certain tool chains that are like slamming your nuts in a door. Certain FPGA development software packages for lack of a better word are not exactly user friendly. Well I think a lot of engineering tools suck anyway, right? So you just have to find the one that sucks the least. Yeah, you mentioned the A word but the one thing that I think Arduino has above many of the other platforms is that it is meant for artists not for engineers. And so the thing that Arduino did that made it so popular is that they made everything so incredibly simple and trivial to use. You don't have to buy a programmer. The programmer's on the board itself. So the only problem I had with the Arduino and the Arduino zealots I don't have any problem with AVR. To be clear I'm not a zealot. No, no, no. They talk as though it's the first time it's been done because there was a lot of money O'Reilly and the maker crowd started backing it and you've got processing and you've got the environment but they're not doing anything that like the basic stamp didn't do. Yeah, so I mean I think really as far as going that route the stamp was really the first chip to do that. Yeah, that's true. The problem that the stamp has had and I'm sorry, probably likes people to be out there is they haven't grown the way that the user space has grown and they're still charging 50 bucks for a basic stamp too. You can't compete at that price point and I actually have talked to Ken Gracie apparently. I love the basic stamp I still do and a number of occasions I've even heard Joe say when I'm prototyping I still grab for a basic stamp to do proof of concept stuff that's really simple things for off the shelf but it's ridiculous to charge 50 bucks for that chip these days. And I said if you're going to stay competitive at least as far as the stamp is concerned you're going to need to lower the price on it. Anyway, I don't mean to be airing dirty laundry but I think that's the kind of stuff you guys want to hear, right? But I think the Arduino, people always bash on it if there's like an Arduino hack on Hackaday everyone's like oh Arduino lame and it's sort of like there's definitely this religious war Arduino versus other stuff just like there was with open source whatever and Linux versus whatever for what it is it's good. If you want to get something done there's lots of example code out there there's lots of support from the community versus something like the basic stamp you have some community support but you have support directly from Parallax and the engineers and stuff but the community support tends to be okay my only problem with Arduino though is that a lot of the open source stuff that's out there the modules that people write nobody's validating that stuff you don't know if it's good but once you're done it's sort of like if it's a one off project that's fine if you want to move it forward that's when you have to really start going through and making sure that it's actually good. On the subject of how do you get started though you know I would rather have somebody who is new to the hobby get an Arduino for 30 bucks plug it in with the USB cables load up the blink code get it functioning and go that's fucking awesome okay but look at the blink code for an Arduino and look at the blink code for BS2 I can put my mom in front of the code for a basic stamp too and she can understand it my mom does not do computers or the problem we like propeller board of education stuff like I said I'm not a zealot I'm not trying to put the Arduino instead of the basic stamp stuff I'm definitely not doing that but I want so I guess we need to make two categories of the simpler consumer targeted microcontrollers versus the industrial the shit all day I have the programmers and the you know I can write the um and smitty just as a matter of confession I'm actually sold Arduino's at DEF CON before we sold the teensy one year so I'm not like anti Arduino and I'm anti is the attitude of this is the holy grail that has come down from on high to save me from my microcontroller ignorance that's what I do or the idea that anything else is way too difficult I don't know how many guys I've said oh the Arduino's great because well I don't need an in circuit programmer well until the boot loader blows up and what's an in circuit programmer well it's just another piece of hardware you plug it in you say program it's not that hard for someone who's used to pushing packets around a network to learn how to use that dude I mean even TI's MSP430 toolchain is getting pretty good in terms of what do you guys think about that yeah but you can't have a beginner like Arduino is a good platform for that one of these days we'll let render ask another question yeah I just wanted to say I don't want this to be like me pleading questions that there's a microphone here we want to hear from you guys too so if you've got us to shut up ask us more questions otherwise we'll just be bitching all day so one question I do want to get to walk up to the microphone it's gonna be hard you have to stage dive over to the microphone one question I wanted to say was one of the biggest difficulties I've had in to it is that you get the idea and you want to go and build it but oh crap now I've got to do digi-key order a spark fun order something like that and you gotta wait weeks because I'm up in Canada well that's your problem no I'm just cheap I don't want to pay FedEx so one of the things I used to tell my students for getting started for saving money is you can usually get engineering samples from microchip a lot easier than just about anywhere and so yeah and that's the question is you know inevitably you end up with all these parts bins and everything like that but the problem is you know syncing a huge amount of money into that is there like shortcuts or ways like engineering samples to get that base stuff constantly harvest like a pretend you're a squirrel and just start gathering stuff and yeah I mean vendors will basically if they think they're gonna make money they'll give you free stuff but if they think you're doing something cool they'll also give you free stuff because then it gives them something like Twitter or whatever and to give a few samples out to a hobbyist isn't gonna kill them it's only gonna help so for the most part you can get free stuff but always scavenge like I'm always I live in San Francisco and there's kind of this weird kind of cycle of people put stuff on the street and then you can take stuff from the street and like put other stuff on the street it's weird sometimes it makes neighborhoods like really shitty but but other times it's awesome like if you can get there before the city comes to pick everything up so I will always walk around and be like oh a printer I'm gonna scavenge and harvest and of course go into like your local surplus stores and electronics markets like you don't have to pay full price for things but even if you do most of the time full price is like pennies or a few dollars for stuff unless you live in Canada and make friends with engineers because all of my engineers had desks that were filled with samples that were never gonna use all this part is so cool and I can call up the distributor and get it but scavenging parts I mean hell that's how I learned how to solder I didn't have any money that's how I got parts and in the worst case Radio Shack I know they had serious they got a really bad reputation over the last five or ten years when they got rid of a lot of their electronic stuff but they always kept that one little section where you could get resistors and capacitors and stuff you know it's now it's like nine-tenths of the store is selling cell phones but they still have that one drawer of components like the last resort it's the last resort so 8 30 at night my DSL modem just died and I have an exploded capacitor inside my DSL modems power supply I can still go down to Radio Shack and buy that 35 volts 660 microfarad capacitor to get my internet back online so my wife can watch Game of Thrones alright so Radio Shack and they're also getting into selling things thank you sir I got a fan out here very good they're also getting into selling microcontrollers like the A word and basic stamp and a lot of modules I totally didn't mean for you to start seeing the A word and cinema but they're not the cheapest around but when you need it right bloody now they're there so I wanted to throw that out the fact that they have the modules now I mean that's what hardware that's recent and I love it hardware has come a full circle as a hobby back when I got into it we built kits and all that and it died out when computers got big as a hobby because well why do I want to do all this hard stuff and get ferret chloride all over my hands and edge boards when I can write code and I can write code and compile and compile and it didn't cost you anything and it's actually moving more towards that with the advent of FPGAs coming down in price because now I can just recompile the hardware and now electronics as a hobby it's more of a systems level hobby where some of us still build our own boards and so forth but there's so many modules and now you really don't have to do that that's true it's like Legos but anyway we have a question what do you do whenever you're up against a particularly crappy tool chain what's your method of attack to get past that cry a lot of mountain do I shoot things I think I think at the pad like I've had really crappy tool chains and I mean sometimes you're stuck right if that's all that the vendor offers you if I have a contact to the vendor I talk to them and say your tool chain sucks you got to try to do something with it but most of the time I'm spent dealing with the crappy tool chain and you know saving often and exiting and loading and usually when I talk about crappy tool tool chain what I've sort of encountered is the tool will crash or it will disconnect from the debugger or something just annoying that you have to just restart and that's I think the nature of engineering tools because they're designed for they're designed for engineers and they're not designed for the mass public so they don't have anything as like a normal piece of software would and yeah I mean they're just annoying and sometimes crappy but as long as they end up compiling properly and working properly sometimes sort of like that's what you get on the hardware side of that I don't use Kaikad anymore because they piss me off from crashing and losing my code too many times my board designs I got another single clap I got to buy you a beer afterwards he claps at everything you say apparently I got a fan too Joe did you hear that when I was doing the stuff for the badges this year I actually used the free version of Eagle because I wanted everyone that was here to be able to recreate the badges with free software off the shelf and I found an error in Eagle that says too many pixels in the Y direction and it says it in German on the bottom as well and so I took the work and I rotated it to try and see if I could recreate the error in the other direction and it doesn't exist in the other direction but they don't have their own black badges but they don't have the clock if they can do the mechanical watch and they deserve a black badge next question alright so I wanted to ask you guys what do you think the best chip is for like DSP kind of like audio religious war DSP audio maybe the best one to start with DSP and audio stuff live audio processing the one you already have code for from a professional's viewpoint this one's cheaper, this one's faster but how does that equate to a few hundred hours of engineering time and if you've got code you can find code that does what you want to do as a project that whole question where do I start find a project similar to where you want to go or find a vendor that has a big node for where you want to go make really good friends with the FAA's yeah the only experience I have with DSP stuff is the Defcon 17 badge we had a digital signal controller so it was sort of a microcontroller that had internal peripherals but it also had DSP functionality that's the only one I know of and there was like actually the tool was sort of cool the tool said it's not open source or anything but it's free and you can which is to me fine there was one thing called the processor expert and you can actually select modules and say I want to implement an FFT and you double click and there's a GUI and you can set it all up and that will configure all the DSP side of things and you can do like a modem like some old school 1200 baud BPSK or whatever it was modem so that's a good place to start but yeah I'm sure there's a reference design somewhere or a project that does something similar to what you want to do actually I do a lot of audio work and that's generally where I'll start out I'll look at the different chips and look for they'll have like the application note in there of this is a typical application for this chip and I'll try and find one that matches closely what I'm trying to do and that's generally how do you have to do that while standing right behind me that just looks awful all of a sudden render feels like it sounds like render's peeing so follow up is there like a resource that I can go to to kind of like browse through all these chip examples and Google Each of the different vendors are going to have their own site and they're going to have their own list of things and they're going to talk about why their chip is awesome they don't necessarily say better than the competitor because they don't want to acknowledge that the competitor exists but they'll say we're awesome because we have all of these things and you go to their competitor and they say we're awesome because we have all of these same things and you look at the list and they're like that one takes you out to dinner more. Free food, always a plus. As far as searching for parts though do you guys use Octopart a lot? Have you used Octopart? Octopart's cool but you have to sort of that doesn't give you really lots of data sheets but it's not as easy as like a parametric search on a vendor site Octopart basically will tell you which distributors have stock of the current part you're searching for and then give you data sheets but if you search for DSP you might see stuff but you can also just go to digikey and then organize by price or by some feature and see which ones come up. Mouser's search engine works much better than Digikey's in my opinion. Other than the big dogs Digikey, Mouser, Jamco and places like electronics gold mine and stuff like that. Are there any other major houses you guys order from? Jamco. I use Digikey primarily. Digikey they just started doing first class shipping too. So you can pay like two bucks and depending on where you live get it within a day or two which is awesome. The fun thing about Digikey is you guys don't count. The fun thing about Digikey for the longest time for those of you who aren't how many of you guys are from Digikey right? How many of you used to get their catalog sent to you and it's like that phone book? And they used to come with stickers so that you could tag the pages and send a message to them and say they should keep making them. I guess I'm against the trees or something but I like having something that I can like flip through and actually look. I really use that catalog. It's the only way to find connectors. I mean chips or chips. Trying to find a connector on a damn parametric search. Alright. Next question. I love my Arduino. I'm sure most of the people here are here because Arduino show of hands? Yeah. How many people were first to use the Arduino word? I will. Not that many. How many people here that first experience was like a basic stamp? How many was like pick? Cool. Wow. Really quickly I want to interject this before you ask your question. My first experience with a pick was hacking your hex code badge. I was the only one who successfully reprogrammed that god damn badge and I did not win the badge hack. I have a phone to pick with you. I'll have to review the contest entries and give you an honorary badge. Some asshole would have like modified cigarette lighter behind it and made a flamethrower out of it one. Did he win? No he didn't win that one. That was the audio. I'll have to review the notes. Ambed and 32-bit beefy that thing is awesome. But going back to the Arduino and just kind of back to the hobbyist hardest thing Sparkfun, Adafruit, do you think? Yeah, definitely. Love Sparkfun. So the drop in hardware, the Lego kind of I can drop it and copy the code from Adafruit from Sparkfun, compile it, run it there. Do you think that's devaluing the industry at all? No. I'm sorry. I know the guys that's over at Sparkfun. I love their stuff. Adafruit shows up all the time. It's great. I think it's helping people that wouldn't be able to accomplish certain projects because it's making it Lego. Slap the pieces together, especially the lily pad with the folks that are doing the clothing, the hacks and stuff like that. I think it's opened up that world to people who otherwise couldn't get through and stamp both, made both the pick and the AVRs accessible to people that weren't otherwise. If I can just interject a question on that. One of the big things I've always found is some of the tinkering with stuff doing the goggles. You've built it with a basic stamp or whatever. It's taking you to that next step where, okay, I no longer need all the accessories. I just need the chip and everything like that. My problem has always been where the hell is that? Are you trying to make a product or are you trying to make stuff for you? Just one off stuff. Like a more refined thing. You don't want to have a stack of shields you just want to have a single board of stuff that you need. I want to answer that, but I want to say with respect to Aida Fruit and Sparkfun and all these places, it doesn't only help the people getting into it and it doesn't only help the hobbyists. It helps all of the professional engineers who don't want to go through the time of spinning a board to try a new part. They're making footprints and breakout boards and all these things. It saves a ton of time for everybody. It definitely doesn't hurt. It's great for prototyping as well. I want to have this particular chip with this controller and see if I can make this product work. I'm going to do it first with all these shields that are already built. Slap it all together, make it work and say, okay, I've proved the concept. It adds just these three components that I need instead of a stack of shields. This tall is now a board this big. And that's what you're asking, right? How do you distill it from all the crap down to only what you need? Hey, Render, you hire me. Okay. But if you don't want to pay money, at that point you need to look at the schematics of every individual module. You have to see which pieces you're actually using and then what I tend to do is I have a big prototype of all the crap that I identify which parts are useful. Create a smaller schematic and then just get a board layout package that you know, whatever you're familiar with or if you're not, try to, you could use Kycat or Diptrace or Eagle or whatever. I use Altium Designer, but that's more expensive. And there's a free version of that. There may be torrents of Altium. And then you can go spin your board, use oshpark.com to get your board's fab. It's like a dollar a square inch or something. And experiment it because it's so cheap that you just do it again and you wait a few more days to get another one back. Am I going to get kicked off the panel if I admit that I use Express PCB? No, not at all. I know a lot of people that for prototyping purposes, but there are some not released. So the way PCB Express and a lot of those guys work is they'll release their own proprietary design software but then they don't give you the actual Gerbers, they create Gerbers in-house and that's how they kind of lock you into using them as their service. We're writing stuff to take the stuff that their software produced and actually give you your real Gerbers. Nice. It's like a jailbreak in the design process. But Express PCB is a great service because they have their own software that is not nearly as complex as Eagle or KiCat or anything else. It is so incredibly dead simple to use to do circuit board layout. They can do two layer boards, four layer boards, they can do a silk screen on the top, not on the bottom unfortunately. But then once you have the design, if you can keep your board to two and a half inches by 3.8 inches then you click a button and give them, I think it's up to a little less than 60 bucks right now if you don't need a solder mask or I think 70 or 80 bucks if you want a solder mask and silk screen for three boards and they will get them to you in about a week. So it's an incredibly cheap way of prototyping. I mean two and a half by 3.8 is not a tiny board. It's huge but you can fit a lot on that amount of space and it's a great way of just getting in and like I'm going to draw traces from here and kind of connect these pins and you don't have to worry too much about making it nice and clean because you're not making a product. It's just a prototype and the service is great. I've never had a problem with them and it's really inexpensive. Osh Park is also a great way of doing it expensive but I think they have a much longer lead time at this point. I think he runs boards now like every other time. Osh Park is a completely different discussion but for the most part if you're doing a prototype and it's not something that has specific board layout requirements you can get away with a simple tool. I do want to mention two for you Canadians out there. There is AP Circuits. Right? AP Circuits, eh? Someone's like yeah so you can use AP Circuits, Alberta printed Circuits and it's a similar type of prototype quantity, simple board fab type of house. But they're Canadian. Yeah. They ship to the U.S. Apparently they ship to the U.S. too. I'm not afraid to ask dumb questions. We're not afraid to answer them. Excellent. I bought two boards literally like a week ago, little development boards. One was the Beaglebone and the other was I think I just went to YouTube and searched on embedded programming and found some guy statemachine.com I think who did that on using the TI Stellaris launch pad. Walking you through writing a C program to blink the LEDs and that sort of thing. I guess first question is are those microcontrollers or are those sort of bigger than? So the Beagleboard is a great board. I like the Beagleboard stuff. I don't know if you guys have any thoughts on those. I would consider those modules. There's microcontrollers on them. The distinction that I think he's microcontrollers are CPUs. So there's a very subtle distinction between a microcontroller where you are writing assembly or C or something that's running directly on the chip. Timer. What's that? Intel considered yes. There was an 80, 186. They considered it a microcontroller because it had timer on board. I always thought a microcontroller had onboard peripherals so memory and things like that on board you don't have exposed buses going outside stuff. But then a microprocessor was just the CPU where you needed to have everything external in your memory mapping and your address and data bus switching. That's how I always talk about it. But when you're talking about things like the Beaglebone and the Raspberry Pi the main difference there is that you are not necessarily writing code that has 100% control over the CPU. You are writing an application that runs inside an operating system. It's a different in development environment and I'm not trying to make a religious distinction here. They both have their place. If you're a software guy and you don't want to have to worry about how to write a bootloader and you just want to have something that does some stuff and you're comfortable with GCC and you write applications in Linux all day then put Linux on your chip or put Linux on your embedded environment and that's fine. It's gotten cheap enough that it's going to solve that problem for us. The reason we had microcontrollers is because they were smaller and simpler and cheaper when a full CPU was so much more expensive. That is no longer the case. We can now throw transistors at these things and the cost is no longer the problem. We can put an entire Linux operating system on this thing and it's still 35 bucks. An Arduino costs about 30 to 35 bucks depending on where you bury it. It is 35 bucks. What's the difference? The Raspberry Pi has a shit ton more resources but it also needs it because it's running a full operating system. It's no longer a matter of which one is better because they both have their place. It's really a matter of which one suits your application better. The answer to the question of which one is better depends on what you're trying to do. A lot of that comes down to high performance timing and things like that. I need to get down to the hardware level and that's when it becomes more important to be able to get down to that level and have a tighter control. Most of you guys don't say interrupt latency probably as much as we do. Would you rather write a custom application that runs natively on the hardware than as opposed to writing a device driver for Linux? It depends on what I'm doing. It depends on the application. It depends on what you're trying to do with it. Think about a robot. Do you really want an OS where you know exactly what you can do to take control of it? Oh, I'm not waiting on this to message that and for the OS to decide to come around and then turn the robot off before it drives off the cliff. If you have a good deterministic RTOS or something, that's fine for embedded. It's not like you could run Windows on an embedded device. I got friends at Willow Garage who would shoot you for that. Normally you just have a simple state machine depending on the product. It all depends on what you want. I'm surprised nobody brought VX before or now. So in the robot example, I would put the motor controls on a microcontroller, but then I would use something like a Raspberry Pi or a Beaglebone to maybe do the route processing and the high-level decision-making process and taking in of video stream data and doing an analysis of what's going on around me. But then have it send a signal to the microcontroller and say, turn my wheels on going this speed or this long and then have the microcontroller that has the very precise timing actually control the motors. So that's the kind of decision-making process that you have to make at design time of what is it that I'm trying to do and which of these platforms is better for that particular task. It was just briefly mentioned here the dreaded word that nobody likes to deal with is dealing with interrupts and interrupt timing. I think that's why we're now breaking into this point where we've got all a microcontroller with multiple cores and things like that, like the propeller is because of you don't have to deal with time slicing and interrupt problems and loop timing and things like that. And I think we're starting, and even further than that I think the real future for all of this is going to be what we see coming from the FPGA world. Thank you. Next up. Hi. I'm really happy to see all the microcontrollers here, experience, and I thank you for putting up this panel, really. My question to you is I'm an embedded system student and being this I want to be in this field professionally, like, you know, not a hobbyist but professionally. So earlier it was like if you're in microcontrollers, you should know sensor interface, you should know actuator interface and you should know basic control logic design. It was the basic thing in my stereotype in my mind, but now the time has changed a lot that the programming part, the control logic part has evolved and it's reached to such high level that you can do software systems, you can do database systems, you can do network systems, you can do controls, you know, like all the systems. So PCB designing and schematics and, you know, sensor is still there, actuator is still there. My question to you all is, like, as a as embedded systems engineer what are the basic things which at least I should know formally? I hope I'm clear. I guess you're just asking what is a basic skill set to enter into that world as a professional? Is that correct? Yeah, the basic skills, yeah. Later on I can decide on my own, like where I'm interested. Well, I'm not the professional. I'm never professional. Go ahead, yeah. Oh, wow. I almost feel like that's asking how do you become a hacker? I mean, to me it's just a natural progression of hobbyist, you know, building stuff, and then it's like, oh, wait, helping out of the company and then it's like, wait a second, now they want to hire me and it's like, they're paying me to just do this stuff? So I think a lot of it is once you get your foot in the door, you know, you already named off a lot of the things that are important, once you find a company or a project that you're doing it and you'll just kind of gain stuff and I don't really know, you know, what's the best thing to know, especially if you get into a company, the hands on, the real world experience that you get from working in like an actual company that works with embedded systems, whether it's a product development company or whether it's a specific product, you know, not consulting, whatever it is, that's where you get the best experience and so I think as long as you kind of, you know, love what you do and you learn more about all those little things, I don't know if there's any better way to explain it. I know I've been giving this answer a lot but I think it also depends on what the application is that you're trying to do. So what kinds of general skill sets, well obviously electronics, if you're going to be doing microcontrollers as well then some programming would probably be good, the lower level the better, understanding of how assembly works is going to be important. Here's the big difference, between embedded guys and, you know, software, speaking as a hiring manager and okay, here's a skill set that I would list if I was doing, you know, the official thing and then I'll tell you what the kinds of people are really higher, but, you know, big difference physics, because okay, you're going to be turning motors and interfacing with sensors and talking with people about, you know, oh, what would this frequency of whatever or this coming in and I need to turn it into, you know, this real world thing and I'm going to turn it into software somewhere. So understanding the physics behind that is far more important than, you know, again, pushing packets around. When it comes down to hiring people, you know, I had this one kid and we were interviewing him and went through and, you know, what did you do last summer? I rebuilt this Chevy 350 just to understand that you're hired, because I want somebody that does hands-on. In the embedded world, you've got to touch the hardware, you know. The one big question, have you ever done that? And again, it goes back to what I said earlier about doing hardware. Okay, if your code doesn't work, okay, you just recompile. You got a board. You spend all this money, you decide, okay, you're going to take the stand, you're going to put it in one board, you've laid the board down, you put all your parts on there, which is a fucked up mistake, but you've got this board and you turn it on and it doesn't work. Okay, now what? You know. And you've got to understand what's going on on that board and it could be the chip's not running, trace was left off. Hands-on. Yeah, being able to trouble shoot circuits is a huge skill that when I was teaching at the university, it used to frustrate me to know and I was brutally honest with some students that would be like, if they come to me and ask a question and I would always say, have you tried it? Have you gone out and tinker? And if they hadn't tried it, you don't have the mindset to be doing this type of work and to be blunt, you know, we need more tinkerers. And I know it's right now we call them makers, but we need more tinkerers. We need people that are putting their hands on stuff. I'm always championing in the embedded systems world. We teach kids from a young age that electronics are expensive, dangerous and breakable. It's not anymore. In our community, but for the longest time, I mean everybody, I mean that the participation in the bad stuff here at DEF CON, we have orders of magnitude more people involved in bad stuff if it's not electronic, because people are just have that intimidation factor that haven't made that first step. That's why we have the hardware hacking knowledge. That's why DEF CON kids is doing the electronic badges this year. And we need to continue to propagate and keep that momentum moving forward. Thank you. Just one thing, one more thing. For getting started for a beginner, we're discussing about Arduino or basic stem or the thing which I wanted to know is like when I use Arduino, I have used Arduino, I have got the things done, but by doing it, by using it more and more, getting deeper into it, will it give me the basic concept which makes me evolve as engineer that if I get any new microcontroller in future, I'll be able to hook up a programmer into it or something like that. I'm looking for something to get started in that way, which makes me able to later on work on any microcontroller and not just Arduino or... Pick one. They're all different in little ways and they're all the same in many ways. So just pick one and get started and then learn it and get comfortable and maybe you start with a propeller and learn spin. Spin's assembly is the most beautiful thing I've ever seen. I don't know if you were involved in spin at all. I'm sorry. Spin is the non... Spin is the high level. Propeller assembly is one of the most beautiful things I've ever seen. I don't know if you were involved in that at all lost, but it is a great assembly and then you take that and then you maybe pick up an Arduino and then you maybe pick up a programmer and just start working on that or maybe free scale or something like that, but just pick one and get started. I would be willing to bet that all of us up here have a closet full of dev kits and programmers for different environments. Do you agree? I have a barn full that sure. But I think one advantage of Arduino, I think the question was going from sort of like renders of going from one to the module down, you want to start working with more at a lower level. I think one of the reasons why I like Arduino a lot is because Arduino really is just the code that's running on the Atmelia VR. You can start with the Arduino platform board and then if you want to try to refine that or go level down then you can just take an Atmelia VR and load Arduino software on it and use that so it's slightly more refined and then eventually you're going to want to get to the point where you have a microcontroller or maybe you are with just the stuff you want and it's not a module but it's a refined product that's just stuff you want. You can actually go the other way. For those of you who are running the DarkNet game this year, the DarkNet Badges, the software was written in the Arduino IDE even though it is not an Arduino itself. The Arduino IDE is just a way, it's just a front for GCC, AVR GCC. So it takes C++ code and turns it into Atmel code. And if you give it the right hardware files, you can find them online for the ATTiny85 then you can use the Arduino IDE just because it is so incredibly simple and program non-Arduino devices. By the way, if you haven't talked to the DarkNet guys they did awesome work this year and it's an amazing contest. Thank you. Five minutes left and I want to bang through as many questions as we can here. Thank you. Come on up noise, speed round. So I started on the propeller and I'm still on the propeller because I'm pretty addicted. So I've built a whole bunch of stuff and they're all completely digital circuits. But I have a problem on one of my boards specifically where when I run it at 3.3 volts I get data corruption on my Uarts but when I drop it down to 2.8 everything works. So how would you go about starting to debug and you drop it, it works? Yeah, it's bizarre. I don't know, the first thing I would say is look at the signals on the scope and see if you're actually getting noise outside of the chip or if it's something that's being caused by overvoltage or something else inside the chip and then make sure it's noise versus parity issues. Maybe there's just some other weird configuration thing. It has an RF module on it so noise I guess is possible. Even something that's strange is battery. He goes back to exactly what he was saying, welcome to the world of hacking your circuit or troubleshooting. That's really one of the greatest skills that I think some people are listening to. If you start talking about RF that Ryan was mentioning earlier, one of the things you should learn is physics. I bet you you have a trace somewhere that is exactly the length of a quarter wavelength. That's just picking it up. You'll be able to visualize that on the scope and then you'll know where to start. Trying to troubleshoot a board without a scope is like trying to troubleshoot code without a debugger. It happens all the time. There are startups that I've seen in San Francisco that kids have dropped out of school and moved to California to start companies and they don't even have an oscilloscope to debug the most basic things and it's mind blowing. Yeah, I brought a logic analyzer with me but I didn't get to help, mayor. Thank you. That's old school. One question for one person up here. We'll just keep the discussion going and... Nice. What's with the porn music? Are we done? Are we done? Is that the get off stage music? Nice. Dance party, everybody. One person, one question. We have four more people. When you're making a decision designing, I would say, an RF signal processing board, which point are you drawing the line between saying I'm going to use a DSP or an FPGA for the solution? Not me. I would lean towards a DSP just because when I think of FPGAs I think of just the hardcore digital side of things and DSP might just give you more... I don't know, maybe easier to kind of manipulate. If that makes sense, you could always maybe port to FPGA but I would tend to go with a DSP first. Next question. What can I do to help my young children? I've got an 11-year-old boy who's coming of age. What can I do to introduce them to this world? I don't have a lot of experience. Go get the What's a Microcontroller kit. What? What he said. It comes with a huge book that was written to help move you forward and that's the difference between that product and any of the others is the supporting documentation is a no-kidding book. Can you give me a free sample? He doesn't work for Parallax anymore. I don't work for Parallax anymore but I still think it's a great way to introduce people to it. Okay, I've got a long list on my POMPO. Very quickly. I'm a systems engineer. I do mission critical embedded systems when I was 10 doing basic on G time-sharing system and then cut did 8080 in 76. So I'm an old fart. The two things I'd say is no. The tool chain, the Atmel and the Arduino gives you a solid, reliable tool chain. Stay away from the CCS compiler. It should be chucked into the heart of the sun. I lost 60 hours of my life on a professional project because of the friggin CCS compiler on a pick 24. The other thing I'd say, I haven't heard about it, learn C. Oh yeah. Keep your code simple. I would say learn C and then learn assembly and to be fair, the CCS compiler is good for certain things. I found bugs in that compiler too but then when you do, you get free subscription. The needers are getting restless here. I think they can start throwing spears at us so we gotta wrap it up. I want to make one comment to that. Do some embedded system stuff. It will change the way you program. You can figure out what the fuck the machine's doing. All right. Thank you very much. Thank you.