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.
O Reilly Media
We found 13 Reddit comments about Making Embedded Systems: Design Patterns For Great Software. Here are the top ones, ranked by their Reddit score.
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!
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
Great book:
https://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149/ref=sr_1_1?ie=UTF8&qid=1525458632&sr=8-1&keywords=embedded+systems+elecia+white
https://www.amazon.com/Making-Embedded-Systems-Patterns-Software-dp-1449302149/dp/1449302149/ref=mt_paperback?_encoding=UTF8&me=&qid=
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.
Making Embedded Systems: Design Patterns for Great Software https://www.amazon.com/dp/1449302149/ref=cm_sw_r_cp_apa_i_BbryCbHZDAV0T
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
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)
Okay, you're definitely at the beginning. I'll clarify a few things and then recommend some resources.
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.
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
O'Reilly Publishing is a reputable source for programming in general. Here is an embedded systems book.
Edit; stupid formatting
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.
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.