嵌入式软件的话不一定需要学很多硬件知识的(有的话当然是×××)。会用一些工具,编译,调试工具(比如JTAG)就可以了,到时候要用了现学。开发工具也没什么固定的,一般也不一定要IDE,用文本编辑器就可以写代码(比如Vim,Emacs, nano, Sublime)了。

嵌入式开发教程,嵌入式培训,学习嵌入式

        编译一般用GCC的变种。嵌入式一般要学C语言(去看看我的C语言探索之旅, 以及C语言深度解剖,C程序设计语言这两本书。也可以继续深入看C语言专家编程等等)。

        C++不一定会用到, 但也可以学一下。Linux是要学习的。因为交叉编译经常要用到Linux系统,即使在Windows下也要用到Cygwin这类的。最好花点时间学一下汇编,对理解计算机的原理,特别是内存,指针,二进制,十六进制都有很好帮助,不需要学很深。
        嵌入式目前主流的处理器架构是ARM(以前是ARM7,ARM9,ARM11,现在都Cortex系列了)。手机,平板,大部分开发板都是ARM的天下。所以需要学一下ARM架构,有个了解。一开始对ARM不需要太深入,视以后情况而定。ARM的集成开发环境有ADS(ARM Developer Suite), 是ARM处理器下主要的开发工具。
        可以去买一块便宜的开发板来开始学习(我觉得自学嵌入式唯一比较花钱之处。也就几百元就很好了),现在什么树莓派有点贵,Arduino什么也可以。也可以买国内一些厂商自己的开发板,不要买太差的就行。如果你买了开发板的话,可以去开发板对应的论坛。
        把英语学好,对编程很有裨益。所以千万不要荒废英语。还有, 数学也需要还过得去吧, 毕竟底层有很多位移, 与或非运算, 十六进制, 二进制, 十进制转换, 等等。可以看的书很多,主要要选好书,看得有效率。
        最好买纸质版的, 当然我当年自学时, 因为是在法国, 买国内的书不方便, 因此都是看的PDF。
        深入理解计算机系统非常好,算是入门的。其他也有很多嵌入式书籍。慢慢来,先把基础打好了。嵌入式这个领域太广了,可以学的东西太多,现在技术又日新月异,把基础打好学什么新知识都快。
        假如你以后学更有难度的嵌入式实时(Real Time)系统(VxWorks,ecos,ucos,等等。驱动开发之类的,那就要C(和汇编)的功底比较强,要看更深入的书。不过暂时先入门嵌入式,这些更艰深的领域看兴趣,不学也可以。