- #1
wyattmarshall
- 1
- 3
Summary: Trying to self-teach Electrical Engineering, Embedded Linux and AVR/ARM to make a career change into embedded systems development and I need suggestions on the best way to do that. I have a plan but I honestly have no idea if its a good one.
I have been into computers my whole life (currently 26y/o) but never actually worked in any IT positions. Other than an AA degree in computer science in 2013, I have been a welder since I was 18, but I am looking to make a career change into embedded systems.
My main goal has always been to make hardware, gadgets and gizmos related to motorsports (cars, motorcycles, etc), so just knowing what kind of things I want the embedded system to do, I have determined a starting place is learning: AVR/ARM, Embedded Linux, and EE (currently learning math/trigonometry to get to EE).
My current reading list is:
"Plane Geometry" by Loney
"The Linux Command Line" by Schotts
"Programming in C" by Kochan (more a refresher, as I used to be halfway decent in C++. and PHP is similar)
"Fundamentals of Electric Circuits" by Alexander + Sadiku
"How Linux Works" by Ward
"The Linux Programming Interface" by Kerrisk
"the Definitive Guide to Cortex-m4/m3" by Yiu
"Linux From Scratch"
"Feynman Lectures" (The parts on electricity for this topic and the rest for other mechanical things I want to do).
AVR wise, I read "Make: Programming AVR", which I found barely useful and ended up just attempting to read the datasheet to figure it out. So far the AVR isn't too bad, I am fairly comfortable with some basic programs but I got stuck at PWM for a servo (mainly because I had no idea if it was working and needed to get an oscilloscope to figure that part out, I got one but haven't continued as I have been busy with math).
For ARM, I got the Microchip SAME54 dev board. I made it about 5 mins into Microtech's education video series on that board and thought I should perfect AVR first because it seems like without a good base understanding all the ARM syntax could be extremely confusing. So i put this on pause until I get a better handle on EE and AVR.
For Embedded Linux, a company I interviewed with used Buildroot, (which I haven't tinkered with at all). I decided to try Linux From Scratch hoping that would help to build a solid foundation before jumping to a tool like Buildroot or Yocto. And getting stuck very quickly in LFS, that prompted this post.
For EE I am reading "Fundamentals of Electric Circuits" by Alexander + Sadiku. But within the first chapter I realized I need Calculus to even begin to understand so I already re-learned Algebra and am now reading "Plane Geometry" by Loney for Trigonometry before moving to calc.
Basically, at this point, I am finding that to learn what I want, I must first figure out all sort of prior information and I just need some guidance to know if I'm even headed in the right direction before reading another 500+ page book that may or may not even be relavent to what I am trying to accomplish. Obviously, there is no such thing as "learning too much" but I would like to balance learning and doing, to apply the skills and chip away at the larger goals at a decent pace and then come back and fill in more detail later. Basically solving problems with large strokes and then go back and rebuilding solutions with more detail and more refinement.
I have been into computers my whole life (currently 26y/o) but never actually worked in any IT positions. Other than an AA degree in computer science in 2013, I have been a welder since I was 18, but I am looking to make a career change into embedded systems.
My main goal has always been to make hardware, gadgets and gizmos related to motorsports (cars, motorcycles, etc), so just knowing what kind of things I want the embedded system to do, I have determined a starting place is learning: AVR/ARM, Embedded Linux, and EE (currently learning math/trigonometry to get to EE).
My current reading list is:
"Plane Geometry" by Loney
"The Linux Command Line" by Schotts
"Programming in C" by Kochan (more a refresher, as I used to be halfway decent in C++. and PHP is similar)
"Fundamentals of Electric Circuits" by Alexander + Sadiku
"How Linux Works" by Ward
"The Linux Programming Interface" by Kerrisk
"the Definitive Guide to Cortex-m4/m3" by Yiu
"Linux From Scratch"
"Feynman Lectures" (The parts on electricity for this topic and the rest for other mechanical things I want to do).
AVR wise, I read "Make: Programming AVR", which I found barely useful and ended up just attempting to read the datasheet to figure it out. So far the AVR isn't too bad, I am fairly comfortable with some basic programs but I got stuck at PWM for a servo (mainly because I had no idea if it was working and needed to get an oscilloscope to figure that part out, I got one but haven't continued as I have been busy with math).
For ARM, I got the Microchip SAME54 dev board. I made it about 5 mins into Microtech's education video series on that board and thought I should perfect AVR first because it seems like without a good base understanding all the ARM syntax could be extremely confusing. So i put this on pause until I get a better handle on EE and AVR.
For Embedded Linux, a company I interviewed with used Buildroot, (which I haven't tinkered with at all). I decided to try Linux From Scratch hoping that would help to build a solid foundation before jumping to a tool like Buildroot or Yocto. And getting stuck very quickly in LFS, that prompted this post.
For EE I am reading "Fundamentals of Electric Circuits" by Alexander + Sadiku. But within the first chapter I realized I need Calculus to even begin to understand so I already re-learned Algebra and am now reading "Plane Geometry" by Loney for Trigonometry before moving to calc.
Basically, at this point, I am finding that to learn what I want, I must first figure out all sort of prior information and I just need some guidance to know if I'm even headed in the right direction before reading another 500+ page book that may or may not even be relavent to what I am trying to accomplish. Obviously, there is no such thing as "learning too much" but I would like to balance learning and doing, to apply the skills and chip away at the larger goals at a decent pace and then come back and fill in more detail later. Basically solving problems with large strokes and then go back and rebuilding solutions with more detail and more refinement.