[置顶] 嵌入式开发学习路线——写给初入门的同仁

 

总的原则,不能贪多求快,贵在长期坚持。

 

好了,话归正转。下面给出相关的学习资料。资料出现的顺序,也就是我们学习的顺序。

 

1.  C程序设计语言

    C语言作者写的书,超级精简。因为精简,所以,这本书要很认真的读。不要求快,要细嚼慢咽,要多思考,要从头到尾(包括附录)的读。

  

2.  Unix环境高级编程 第2版

    知名的Unix编程书籍。学完这本书,对一般的Linux应用开发,基本上可以达到得心应手的地步。

 

3. Unix网络编程 第3版 第1卷

    知名的Unix编程书籍。学完这本书,对一般的Linux网络应用开发,基本上可以达到得心应手的地步。

    (说句题外话,如果自我要求不高的话,学完这3本书,出去混口饭吃已经不是大问题了。)

       (另外,如果想深入一点理解网络,TCP/IP详解 卷2  是一本非常好的书)

 

4.  深入理解计算机系统

    注意,到这里,要进入关键的一步了。这本书,共分为3部分,我们只要看前2部分即可。

    这本书,要相当认真的学习。不仅要看,要思考,还要做完所有的练习题(做题非常重要,一定要坚持先做,再看答案)。

    同时,书中的内容不可能解答你全部的编程疑问。因此,在学习过程中,对自己以前不理解的概念(如C语法的含义,C++多态究竟是如何实现的等问题),要多写小函数或者小代码片段,多分析他们对应的汇编代码(objdump这个最精确;当然,通过使用-S编译选项也行,它的可读性要好一点,但是可能会带有宏指令)。另外,我的经验是,写小函数时,参与运算的变量,最好将它定义为入参(编译器不敢优化)而不是局部变量或全局变量(容易被编译器优化,导致未能生成你要想看的机器码)。

        这本书学完,你将真正成为C语言(甚至C++)的专家。因为你将从机器码的层次,理解C(及C++)的语义究竟是怎么实现的。你还会理解,从C语言代码生成可执行程序的整个过程(预处理,编译,链接,静态库,动态库等)。你还将理解进程的概念,包括进程如何运行,进程如何与OS交互(中断、异常、系统调用)。

 

5.  Linux内核设计与实现

    到这里,算是开始踏入Linux内核的大门了。这本书,从比较高的层次介绍Linux内核。是非常好的内核入门书籍。

 

6.  Linux内核源代码情景分析

    华人写的书,超级通俗易懂。从帮助读者理解内核的角度来看,本书几乎可以算是最好的一本书了。

 

7. Linux设备驱动程序

    这本书非常注重实用。我们最终的开发,基本上,要么是开发驱动,要么是在内核中做些应用(并与用户态做一定交互)。而这本书恰恰教给我们最老练的开发方法。

 

8    u-boot学习

      这里推荐的不是书籍了,而是一篇网络资料。

       http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html

        上面这篇文章,是一篇非常不错的介绍u-boot工作机制的好文。

        另外,学习u-boot,最好还是买块开发板,以便于实验。

       开发板不用买高档的,买个基本的arm9的就行了。因为我们是学习嵌入式系统原理,有个基本的arm9 CPU就足够了。

       当然,如果是做产品,那还是需要根据产品本身的需求来做选型的。

        有了开发板,就可以修改、编译、烧写u-boot、内核、根文件系统了。

        有了开发板,就可以理解从CPU一通电开始,到Linux跑起来,到最后应用跑起来,在这整个过程中,机器里所发生的一切事情了。

 

好了,在下能介绍的内容就这么多了。后面搞什么,怎么搞,就看大家自己的啦。


最后,借此贴的人气,宣传一个最最重要的佛教视频。

http://www.fodizi.com/fofa/list/599.htm



 

你可能感兴趣的:(编程,linux,unix,嵌入式,linux内核)