Reddit Reddit reviews Making Embedded Systems: Design Patterns For Great Software

We found 13 Reddit comments about Making Embedded Systems: Design Patterns For Great Software. Here are the top ones, ranked by their Reddit score.

Computers & Technology
Books
Microprocessor & System Design
Computer Hardware Embedded Systems
Computer Hardware & DIY
Making Embedded Systems: Design Patterns For Great Software
O Reilly Media
Check price on Amazon

13 Reddit comments about Making Embedded Systems: Design Patterns For Great Software:

u/If_you_just_lookatit · 7 pointsr/embedded

I started early on with Arduino and moved into lower level embedded with the stm32 discovery line of development boards. Attached link of a good starting board that has tons of example code from ST.

https://www.mouser.com/ProductDetail/STMicroelectronics/STM32F407G-DISC1?qs=mKNKSX85ZJejxc9JOGT45A%3D%3D

If you want a decent intro book into embedded topics, this book does a decent job of introducing the different parts of working on an embedded project:

https://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149

​

Between the Arduino and Pi, the Arduino is more representative of an embedded device. It introduces you to resource constrained system that can be a good starting point for working with digital and analog io's and can let you hook up to communication bus enabled peripherals that use UART, I2C, and SPI. The biggest problem is that it will not introduce you immediately to debugging and standard compilation tools. However, arduino has been a starting point for many developers. Good luck!

u/svec · 5 pointsr/embedded

Here's a few books I highly recommend:

Making Embedded Systems by Elecia White

An Embedded Software Primer by David Simon

Programming Embedded Systems in C and C++ by Michael Barr - out of print, but still a decent book.

Also, embedded guru Jack Ganssle has a long list of embedded books he's reviewed here: http://www.ganssle.com/bkreviews.htm - lots of good stuff on there

u/RadioactiveAardvark · 2 pointsr/embedded

There aren't any that I'd recommend, unfortunately.

This book is not specifically about embedded C, but about embedded in general:

https://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149

Anything by Jack Ganssle is good as well.

u/Iwishiknewwhatiknew · 2 pointsr/embedded


Making Embedded Systems: Design Patterns for Great Software https://www.amazon.com/dp/1449302149/ref=cm_sw_r_cp_apa_i_BbryCbHZDAV0T

u/Yelneerg · 2 pointsr/embedded

Check out the embedded podcast and blog, and the book "Making Embedded Systems"
https://www.embedded.fm/

https://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149

u/returnofthecityboy · 2 pointsr/programming

May I ask you the reverse question? I'd be interested what it takes to move from embedded to backend.

Embedded is a wide field. It kind of depends on whether you're developing firmware or the application layer for an embedded target. Principally it's not much different than programming normal C, but for a lot of targets there's no malloc (because it can have disastrous timing behavior) and you'll need to learn about hard real-time scheduling and working with peripherals.

If you work closely with the hardware guys it might be useful to know the basics of handling an oscilloscope.

For the basics I can recommend [this book here].(https://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149)

u/MrAureliusR · 2 pointsr/ElectricalEngineering

Okay, you're definitely at the beginning. I'll clarify a few things and then recommend some resources.

  1. Places to buy components: Depending on where you live in the world, the large component suppliers are almost always the way to go, with smaller suppliers like Adafruit/Sparkfun if you need development boards or specialised things. I buy almost exclusively from Digikey -- they have $8 flat shipping to Canada, which typically arrives the next day, with no customs fees. They have some sort of agreement in place where they cover these costs. This *always* saves money over going to my local stores where the prices are inflated. It's crazy how cheap some things are. If I need a few 2.2K 1206 resistors for a project, I just buy a reel of 1000 because they are so cheap.
  2. "Steer a joystick with an app" Do you mean connect motors to it and have them move the joystick for you? You're going to want some sort of microcontroller platform, along with a motor controller and way to communicate with a smartphone app. You mention you know C++ so it will be easy to switch to C. This is both true and false. Programming for microcontrollers is not the same as programming for computers. You are much closer to the hardware, typically manipulating many registers directly instead of abstracting it away. Each microcontroller vendor has their own tools and compilers, although *some* do support GCC or alternatives. You mentioned PIC, which is a line of microcontrollers by a large company called Microchip. There are 8-bit, 16-bit, and 32-bit PICs, all at different price points and with hugely differing capabilities. Selecting the microcontroller for a project can be half the battle sometimes. Or, like me, you can just go with whatever you have on hand (which is usually MSP430s or PIC32MX's)
  3. A lot of people will recommend the book The Art of Electronics. It's decent, but it's not for everyone. Some really like the conversational style, others don't. Many people who want to get into microcontroller programming and embedded development want to skip over the fundamentals and just get something working. For those, I point them to Arduino and let them on their merry way. However, if you actually want to learn something, I highly recommend buying an actual microcontroller development board, learning the fundamentals about electrical circuits, and programming in actual C with actual IDEs.
  4. As far as resources go, again it depends on your actual goal. Whenever I want to learn a new tool (like a PCB layout software, or a new IDE) I always start with a simple project. Having an end point to reach will keep you motivated when things seem complicated. Your controlling a joystick with motors is a great starting point. I would buy a development board, Microchip PICs are popular, as are ST32s, and MSP430. It doesn't really matter that much in the long run. Just don't tie yourself too hard to one brand. Then pick up some stepper motors, and a stepper motor control board (grab one from Sparkfun/Adafruit, etc). Get yourself a breadboard, and some breadboard jumpers, a cheap power supply (there are tons available now for cheap that are pretty decent), and then jump in head first!
  5. I highly recommend the book Making Embedded Systems by Elecia White, once you've covered the basics. It's a great way to learn more about how professionals actually design things. For the basics, you can watch *EARLY* EEVBlog videos (anything past around video 600/650 he gets progressively more annoying and set in his ways, another topic entirely, but the early stuff is decent). I'd also recommend picking up your choice of books about the fundamentals -- Electronics for Dummies, the aforementioned Art of Electronics, Making Embedded Systems, The Art of Designing Embedded Systems, and even stuff like Design Patterns for Embedded Systems in C. Again, it all depends on what your goal is. If you want to do embedded design, then you'll need to focus on that. If you're more into analog circuits, then maybe check out The Art and Science of Analog Circuit Design. Either way, grounding yourself in the fundamentals will help a LOT later on. It will make reading schematics way easier.

    I feel like I've gone off on a few tangents, but just ask for clarification if you want. I'd be happy to point you towards other resources.
u/adi123456789 · 2 pointsr/cpp

I'm an embedded software developer who used to use C and now primarily works with C++.

Learning C is relatively easier when you start off and gives you a better appreciation of memory handling and it's complexities than C++ does in my opinion. The C knowledge will also transfer well to C++.

C++ is definitely a much more powerful language and you can get your tasks done quicker with it. There are a lot of things to learn in C++, but you can get them with time. A lot of embedded processors, particularly the ARM based ones, support C++ as well, so that is not a problem

Like someone else mentioned though, embedded development relies on a good knowledge of programming as well as a good understanding of computer architecture.

Here's a nice book I've read which is useful for new embedded developers - Making Embedded Systems: Design Patterns for Great Software https://www.amazon.com/dp/1449302149/ref=cm_sw_r_cp_apa_i_MuFhDb1WWXK3W

u/trump_pushes_mongo · 2 pointsr/neoliberal

O'Reilly Publishing is a reputable source for programming in general. Here is an embedded systems book.

Edit; stupid formatting

u/OSHWjunkie · 1 pointr/ECE

I would suggest also picking up this one
http://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149/ref=sr_1_1?ie=UTF8&qid=1417370827&sr=8-1&keywords=making+embedded+systems

As for AVR versus PIC, really doesn't matter. I like to use PICs just because I prefer the way their documentation is handled and they seem to have more specialized silicon for specific projects.

HOWEVER, I would play the devils advocate and say neither. Start looking at development boards made by TI or Renesas. They ship more units and if you can get an embedded job you'll more likely be working with those toolchains.

u/ss0317 · 1 pointr/ECE

I wouldn't exactly say the programming is easy... there's a lot of new ideas and vocabulary to become familiar with.

I am fairly new in microcontrollers and am still confused about a lot of things. Writing bootloaders/brickloaders, watchdog timers, configuring fuse bits, handling interrupts, prescalers, timers, adjusting pwm frequencies, i2c/spi/uart/1-wire/usb, ethernet, wifi... the list goes on...

Not to mention the techniques for optimization/memory handling/reduction of power consumption...

There's a lot of concepts related to hardware programming that you just won't encounter when say, writing console applications.

With that being said, I haven't found a complete tutorial series on youtube, but Human Hard Drive has a decent intro to AVR programming and I found this book to be a helpful introduction to the topic.