Linux基础
1、《Linux与Unix Shell 编程指南》
注:Linux的基本应用,我想首先应该看你安装的Linux发行版的文档。比如我用 RedHat 9.0,虽然老了些,但是资料非常丰富,容易上手。Redhat Linux 9入门手册,配置手册从红联都可以下载
到。如果英文好,可以从官方网站下载。基本操作熟悉了,必须要下功夫学好shell。Linux下的所有配置都是通过shell脚本完成的,shell还可以帮助你提高工作效率,在嵌入式Linux中,shell的地位是不可忽视的。
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
注:1和2是标准C的经典教程,其中1是C99标准,描述比较细致,容易入门。2是C89标准
(包括K&R非正式标准),举例比较有深度。两本结合,C基础就差不多了。3是Linux
C的经典教程,主要介绍Linux下系统调用和相关应用。4是一门实用培训教程,华清远见出的,讲述嵌入式Linux C,介绍了基于S3C2410的嵌入式
系统应用程序开发的方方面面。如果不是学习嵌入式系统,那么4是不必要的。
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明著
注:这两本书应该是研究Linux内核的经典之作。不过研究Linux内核这个层次,根据自己的
学习情况和兴趣进行选择。如果了解了Linux内核的实现原理,对各个方面都具有不可估量的影响。但是现在Linux内核太庞大了,一个人的精力有限,很
难全部吃透。所以,一是可以看赵炯那本《Linux内核完全注释》,二是选择Linux内核的某个部分,不如网络子系统,进行深入研究。我想,这个层次应
该是比较高的。
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
注:这个需要根据自己的特点选择。不过在未能作出选择之前,可以看看这几本书,大体了解一下,这样既可以拓宽知识面,又可以作出明智的选择。但是,工作后很可能不会按照你的意愿进行。所以,利用可以自由支配的时间来完善自己应该是明智之举。
硬件基础
1、《ARM体系结构与编程》杜春雷著
2、S3C2410 Datasheet
注:嵌入式系统的两大核心就是MCU/SoC和EOS。对MCU,我选择ARM;你可以任意选择
一款基于ARM核的MCU,关键是要有块Demo板,玩熟!因为学习的硬件条件,比如画PCB板等等,大多是不具备的。所以就在Demo板上逐步深入研究
了,熟悉了一种MCU,其他的也比较容易上手。
英语基础
1、《计算机与通信专业英语》
注:英语的重要性不言而喻!
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
注:学习嵌入式系统,系统的概念比较重要。不能学习了很长时间,只是对某个部分很了解;应该首先建立系统的整体认识,然后按照功能块逐步的学习。这样时间长了,经验就丰富了,对系统的认识更加深入,这样才能提升自己的能力。一叶障目的人是无法做到优秀的。
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构•性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O'Hallaron著
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
注:理论是支架!嵌入式系统方向需要动手,动手,再动手。但是,知道如何动手,出错了如何解决,
这就看你基础理论的功力了。只是让别人告诉你如何去做,那么充其量是一个“民工”而已,无法把自己的工作当作一门艺术来经营。加强理论,多动手,多思考,
能称为高手只是时间的问题。