Embedded software does not necessarily need to learn a lot of hardware knowledge (some words of course, the more the more). will use some burning writing tools, compiling, debugging tools (such as JTAG) on it, the time to use the current learning. Development tools are not fixed, and generally do not need the IDE, with a text editor can write code (such as Vim,emacs, Nano, Sublime).
Compile general use of GCC variants. Embedded generally want to learn C language (go to see my C language Exploration tour, as well as the C language deep anatomy, C programming language these two books. You can also continue to look at the C language expert programming, etc.).
C + + is not necessarily used, but you can learn it. Linux is to learn. Because cross-compiling often uses a Linux system, Cygwin is used even under Windows. It's better to take some time to learn the assembly, the principle of understanding the computer, especially memory, pointers, binary, Hex has a good help, do not need to learn very deep.
Embedded in the current mainstream processor architecture is arm (formerly ARM7,ARM9,ARM11, is now Cortex series). Mobile phones, tablets, most of the development boards are arm's world. So we need to learn about the ARM architecture and have an understanding. ARM does not need to be too deep at first, depending on the circumstances. ARM's integrated development environment has ads (arm Developer Suite) and is the main development tool under ARM processors.
You can buy a cheap development Board to start learning (I think self-taught embedded is the only place to compare money. Also hundreds of yuan is very good), now what Raspberry Pi is a bit expensive, Arduino can do anything. can also buy some domestic manufacturers of their own development boards, do not buy too bad on the line. If you buy a development board, you can go to the Development Board corresponding to the forum.
It is good for programming to learn English well. So don't waste your English. Also, math needs to be passable, after all, the underlying has a lot of displacements, with or without arithmetic, hex, binary, decimal conversion, and so on. Can read a lot of books, mainly to choose a good book, see efficiency. The Best Buy paper version, of course, when I was self-taught, because it is in France, buy domestic books inconvenient, so are looking at the PDF.
In-depth understanding of the computer system is very good, is a primer. Others also have many embedded books. Take your time and start playing the basics. Embedded in this field is too wide, can learn something too much, now technology is changing rapidly, the basis of learning what new knowledge is fast.
If you later learn more difficult embedded real time systems (VXWORKS,ECOS,UCOS, etc.). Drive development and the like, that will be C (and assembly) of the strong foundation, to see more in-depth book. But for the time being embedded, these more difficult areas to see interest, not learning can also.
Learn embedded how to get started and improve? Embedded Development Tutorials PDF