11 ms·
I mainly work in web-dev, but working in embedded systems is kind of my hobby. It's kind of refreshing working on bare-metal, optimizing up-to single bytes of d
by XzAeRosho 7y ago
I mainly work in web-dev, but working in embedded systems is kind of my hobby. It's kind of refreshing working on bare-metal, optimizing up-to single bytes of data, when I'm usually working on layers and layers of abstraction everyday.
- winrid 7y agoI just finished Michael Abrash's Black Book. Lots of assembly. You may like it. Like 30 hours of reading.
- wcarss 7y agohttp://www.jagregory.com/abrash-black-book/ http://www.jagregory.com/abrash-black-book/ is an excellent online version of that amazing book that I believe is hosted with Michael Abrash's permission.
- nickreese 7y agoWhere does a web-dev turn to to get started in this as a hobby?
- vfronly 7y agoBuy an Arduino and don't use the provided std lib functions
- penagwin 7y agoI highly recommend the ESP8266 and ESP32 once you're a little more familiar with the arduinos. They have Wifi, and the ESP32 is actually very powerful and has two cores. They make for great DIY home automation/IOT devices and are pretty easy to work with.
- IceWreck 7y ago> ESP8266 Second this. The ESP8266 (a nodeMCU) is about as powerful as an Arduino Uno, is about half the size of a credit card, is very thin and costs around $3. The wifi part is the biggest advantage. You can send sensor data directly to your server via simple http requests.
- makapuf 7y agoEsp8266 is way more powerful than an arduino Uno. It's got a 32bit 96MHz proc with 96k of ram and Wifi, often coupled with 4MB flash. Uno has 32k of flash 2k ram and (from memory) 20MHz 8bit cpu.
- Tempest1981 7y agoThe Wemos ESP8266 was a fun start. The only thing I found a bit tricky, iirc, is the limited number of pins, and figuring our the mapping from D0..8 to ESP8266 number. This answer helped: https://community.blynk.cc/t/solved-wemos-d1-not-working-with-basic-example/15844/24 https://community.blynk.cc/t/solved-wemos-d1-not-working-wit...
- antoinevg 7y agoBuy one of these: https://www.digikey.com/product-detail/en/stmicroelectronics/STM32F3DISCOVERY/497-13192-ND/3522185 https://www.digikey.com/product-detail/en/stmicroelectronics... …and read this: https://docs.rust-embedded.org/book/ https://docs.rust-embedded.org/book/ Highly recommended!
- linuxlizard 7y agoStart with an Arduino and the Adafruit tutorials. Very gentle learning curve. https://learn.adafruit.com/category/learn-arduino https://learn.adafruit.com/category/learn-arduino From there, can decide where your interests might be. To continue with Arduino hardware but without the IDE, I'd recommend _AVR Programming_ https://www.oreilly.com/library/view/make-avr-programming/9781449356484/ https://www.oreilly.com/library/view/make-avr-programming/97... For other low level programming, Atmel's AVR Studio and their dev boards are incredibley newcomer friendly. Their source level debugger (with the debug coprocessor) is a miracle. If you'd like to get into "big iron", Embedded Linux is amazing. Raspberry Pi is a great start (lots of GPIOS programmable from userspace). To get into embedded linux kernel programming, start with a loadable module on the Ras-Pi. Also, build/load your own Ras-Pi kernel. Other folks suggested the ESP8266 which is also great fun to use. Edit: Learn C. Lots and lots of C. Embedded dev is almost all C. A teeny bit of ASM, sometimes C++. But almost all of it will be in C.
- daxaxelrod 7y agoVery helpful, thank you!
- andoma 7y agoCan recommend https://buildroot.org/ https://buildroot.org/ for building complete Linux system images. Been using it on multiple embedded projects, both personal and professional. Somewhat related, I've also used buildroot in both AWS and GCP to run workloads from read-only system images. Quite liberating in my opinion. No ssh, no ansible, etc. Build the image, launch it and off it goes. GCE even allows you to use the same boot disk, if mounted read-only, for multiple instances, perfect for these type of images.
- PascLeRasc 7y agoI can second this as well, Arduinos have a bad rep for being too beginner-focused but AVR is a super solid platform and you can do a ton with them. I'd pick Arduino over RasPi for a starter project anytime.
- jgrantme 7y agoI’d highly recommend Espruino — a microcontroller that runs JavaScript http://www.espruino.com/ http://www.espruino.com/
- CharlesW 7y agoFor anyone interested in embedded JavaScript but wants broader hardware support and/or modern JavaScript support[1], the XS JavaScript engine is microcontroller-independent[2], and Moddable provides supported ports for ESP8266, ESP32 (the successor to ESP8266), and the Gecko series of processors. (They also sell some hardware kits for folks who want that: https://www.moddable.com/product.php https://www.moddable.com/product.php) [1] Espruino supports ES5, XS supports ECMAScript 2018 [2] https://www.moddable.com/faq.php#microcontrollers https://www.moddable.com/faq.php#microcontrollers
- tomcam 7y agoThank you! Moddable looks like a dream come true for my embedded systems needs. Did not know they existed.
- rrauenza 7y agoCheck out nand2tetris !
- Accacin 7y agoI'm a React Developer in my day job, but I'm disillusioned with the web as a whole and I've always had an interest in low-level stuff. At the moment, I'm doing a structured C book course (C: A Modern Approach), and I've also signed up for the edX course "Embedded Systems - Shape The World: Microcontroller Input/Output" It uses the TM4C123 board, which from a look around seemed to be a decent enough board for a beginner. I'd seen complaints of Arduino, but I'm not experienced enough to know the validity of their claims. Either way, I'm having fun. Not sure if I'd switch career as Web Dev is full of decent paying jobs but it's nice to have a hobby that's different from the day job.
- monocasa 7y agoFWIW, those TI boards have tons of hardware bugs. Way more than you'd even typically expect from embedded hardware. And if you don't use the arduino ecosystem, but use an RTOS on an Arduino, it's a perfectly valid dev board for learning real embedded systems development.
- Accacin 7y agoI've heard about the hw bugs a little but couldn't find much information about them. I'm mostly just using it for the course which was highly recommended in multiple places, so I hope I won't encounter many of these bugs. To be honest, the whole picking a board thing was quite overwhelming, with many recommendations, boards, variations, etc. Hopefully once I've finished the course I'll have some more knowledge to help me pick the next board.
- PascLeRasc 7y agoI think Micropython is fantastic and you can get an ESP8266 + FTDI cable for around $25. You can make this a web server and do fun hardware integrations with it like flashing LEDs for successful CI builds. Here's a good tutorial: https://docs.micropython.org/en/latest/esp8266/tutorial/index.html https://docs.micropython.org/en/latest/esp8266/tutorial/inde... ESP8266's can also run NodeMCU, which is Lua but node.js stuff translates super easily: https://nodemcu.readthedocs.io/en/master/ https://nodemcu.readthedocs.io/en/master/
- seabird 7y agoNo matter what you do, you NEED tools. I cannot stress this enough. If you can spend $250-$500 on a nice desktop scope, awesome. If you only have $80, you can get a serviceable Hantek USB scope that will at least give you an idea of what you're doing. If you can only spare $20, you can at least get an el cheapo JYETech scope. In addition, you'll want to pick up a multimeter and probably a logic analyzer. Again, no need to go all out; a cheap $20 meter and a $15 Saleae knockoff will get the job done when you're just starting out. DO NOT SKIP OUT ON THESE. Embedded development without being able to see and know what you're doing is miserable, so unless you're doing this because you want to be frustrated, just buy the tools you need upfront. As for what microcontroller to actually learn on, I would say the MSP430 is a very good starting point. It's a fairly mundane 16-bit RISC microcontroller series with very forgiving electrical design requirements, very good documentation, and very good community support. They make a devboard (TI calls them Launchpads) for the MSP430G2553 that's more than enough to get a beginner started. When you need a little more power, you can either opt to invest in learning the ARM ecosystem, or go for something a little more exotic. Just about every manufacturer makes an ARM microcontroller of some sort, so if that's what you're interested in, take your pick and go with it. If you're looking for something else, the Renesas RL78 and RX series provide a lot of functionality if you're willing to deal with how stodgy Renesas can be. Some important notes: 1.) Don't bother with Arduino. They were a much more compelling product 15 years ago when you had to pay thousands in tools and compiler/environment licensing to get in on in embedded development. Today, what Arduino nets you is a painfully barren environment that abstracts away a lot of what you're trying to learn when you're starting out. Losing out on the debugging, profiling, tracing, disassembly, memory usage statistics, etc. that modern development environments give you will do nothing but stunt your growth, especially if you're used to having all these tools while writing desktop software 2.) Be careful with (or preferably just avoid) starting with embedded Linux; it's pushing the limits of "embedded". You're going to miss out on a lot of important knowledge and insight jumping straight into using an operating system (and a very heavy one at that), and for many applications, it is MASSIVE overkill. When you start, you're not going to need an RTOS. When you need an RTOS, you're going to reach for something more reasonable, like FreeRTOS. If FreeRTOS doesn't cut it, then you can start looking at Linux. 3.) Don't get tangled up with Raspberry Pis; the microprocessor on these is complex and the documentation is severely lacking/nonexistent. RPis are much closer to a desktop computer than they are an embedded system. If you really want to get it, I would say one of the most useful exercises is implementing your own microcontroller/processor. You can pick up an FPGA devboard for fairly cheap, and there are plenty of textbooks (Harris & Harris' Digital Design and Computer Architecture comes to mind) that will get you through most of the key concepts. Once you've done this, a lot of the gaps in understanding when dealing with a microcontroller will be filled in. This exercise isn't strictly necessary, but I don't know anybody who has done it that wasn't better off for it. My final note is to buy or "acquire" Horowitz and Hill's The Art of Electronics. Embedded development is inseparable from electrical engineering, so even if you don't read it front to back, there are some sections that you will definitely be visiting if your background isn't in electronics.
- Rebelgecko 7y agoI'd recommend an ESP32 (or it's slightly less capable little brother the ESP-8266) using the Arduino environment to get started. If you prefer Javascript, you can program it that way using something like NodeMCU or MongooseOS. Once you get comfortable with that, if you want to get a little lower level you can use PlatformIO with the vendor's SDK directly. I like the ESP boards from Wemos. The US made ones from Sparkfun and Adafruit are also really good. The advantage of the Wemos ones (and the many counterfeits you'll see on sites like Aliexpress) is that they're so cheap you don't even have to feel bad if you fry one.