嵌入式linux驱动程序设计从入门到精通

一、为什么要学习嵌入式Linux?学习嵌入式Linux有三个原因:

兴趣:兴趣是学习东西最好的导师;职业发展:嵌入式Linux开发有好的公司和好的职业发展;高收入:嵌入式开发比平常的软件开发有更高的收入;二、学习对象,是否适合我?

不是每个人都适合学习嵌入式Linux。想学嵌入式Linux,必须是计算机相关的学生或研究生,或者是对计算机有浓厚兴趣,有计算机基础知识的同学。

目前大学毕业生应具备的技能有:微积分技能、沟通能力、创新能力、与人合作、信息处理、外语应用、自我提升、解决问题和核心技能。

三、如何学好嵌入式Linux?

选择了学习嵌入式Linux这条路之后,如何才能学好嵌入式Linux?了解以下两点:

学什么?如何学?四、学什么?

嵌入式Linux涉及的知识面很广,需要循序渐进的深入学习,不间断的努力才能有所成就。学习嵌入式Linux需要学习以下五大知识(按照学习步骤):

嵌入式处理器(ARM)与裸机程序开发;Linux系统管理;Linux应用程序开发;Linux驱动程序开发;Linux内核开发与系统移植。五、如何学?

5.1第一个知识结构——嵌入式微处理器与逻辑程序开发,需要学习以下几点。

ARM微处理器的两种工作模式(ARM模式和Thumb模式);ARM系统寄存器;ARM寻址方式;ARM汇编指令集;ARM环境C语言程序编程==ARM中断与异常==ADS(或其他)集成开发环境;==裸机程序开发(如串口、LCD、时钟、LED、按键、网卡驱动、音频驱动、flash驱动等)==

8点以上,6点和8点都很重要,而前5点是基础。现阶段推荐的书籍有:

语言编程类:==《C语言程序设计》==——谭浩强《C语言深度解剖》==《C陷阱与缺陷》====《C专家编程》====《C++ Primer puls》==第五版——Slephen Prala《高质量C编程指南》==《程序员面试宝典》==ARM微处理器类:==《ARM嵌入式系统开发——软件设计与优化》==——斯洛斯(Sloss,A.N.)

然后在写各种驱动的时候,查阅相关的芯片手册,比如网卡DM9000,音频UDA1341等等。

5.2第二大知识结构——Linux系统管理,需要学习几点。

Linux定制安装Linux命令详解(会熟练的运用)samba、nfs、tftp等服务器的配置与使用,以及Wireshark、Source Insight、Xshell、Ultraedit等软件的使用;Shell编程。

其中,第二点和第四点最为重要,它将是学习未来知识的最基本技能之一。要了解这些东西,可以看两本书:

《Linux标准学习教材》——IT同路人《Linux系统管理技术手册》——奈米斯,斯奈德,海因

5.3第三个知识结构——Linux应用开发,需要学习以下几点。

GCC、GDB、Makefile;文件、时间编程;多进程、多线程程序设计;进程间通讯;网络编程;==QT图形化应用程序开发==;== Android图形化应用程序开发==。

这个阶段的知识点尤为重要。个人认为,除了第一点,其他六点都需要好好学习,第七点和第八点是最后两点,也是现阶段最重要的,以后也可以直接应用到工程开发中。这个阶段可以学两本书:

《Linux程序设计》第四版——马修(Matthew,N.),斯通斯(Stones,R.)《UNIX环境高级编程》第二版——史蒂文斯,拉戈

5.4开发第四大知识结构——Linux内核时,需要学习几点。

Linux内核配置与裁剪;Linux内核模块开发;根文件系统的制作;==进程子系统==;==内存子系统==;==Proc和sys文件系统==;==系统调用==;==内核定时器==;==内核异常分析==;

这个阶段的知识很难,有时候看了四五遍也看不懂。建议你去各种论坛,学家的经验。本知识中的第4 ~ 9点是Linux内核子系统的知识。这个阶段可以看两本书:

《深入理解LINUX内核》第三版——博韦,西斯特《Linux内核源代码情景分析》

5.5第五个知识结构——Linux驱动开发,需要学习几点。

字符设备驱动程序;总线、设备、驱动模型;硬件访问技术;中断处理;Input设备驱动;Platform驱动程序;PCI、U驱动程序;网卡驱动程序;触摸屏驱动程序;串口驱动程序。

这个阶段学习的驱动与第一阶段学习的驱动有本质区别:第一阶段是学习裸机驱动,重点是了解硬件,而这个阶段是编写内核驱动模块,也是硬件驱动,存在于操作系统内核中,为应用程序编程提供统一的编程接口,基本脱离硬件的具体操作。

在这个阶段,你可以学习以下书籍:

《Linux驱动开发入门与实战》——郑强《LINUX设备驱动程序》——科波特《精通Linux设备驱动程序开发》——温卡特斯瓦兰

至此,嵌入式Linux的五大知识体系已经学习完毕。

六、学习顺序?

由于嵌入式Linux知识结构非常庞杂,难度很大,为了达到学习的真正效果,建议按照以下顺序学习:

嵌入式处理器与裸机程序开发;Linux系统管理;Linux应用程序开发;Linux内核开发基础;嵌入式Linux环境搭建;Linux驱动程序开发;深入学习Linux内核;

这里把学习过程分为三个重要阶段,大家可以根据自己的情况调整学习时间和进度。

嵌入式linux驱动程序设计从入门到精通

图像

图1嵌入式学习的第一阶段

图像

图2嵌入式学习的第二阶段

图像

图3嵌入式学习的第三阶段

当然,就目前的形式来看,一般的第三阶段学习已经转向了Ja编程语言的学习和Android系统的开发。这个发展是根据个人兴趣分享的,但是前两个阶段一定要熟练掌握。

七、注意

根据个人学习经验,以下几点需要注意:

这五大知识体系是相互穿插,相互依赖的。大家学习的时候一定要==按照先后顺序学习==,如果后面学习的东西有不懂或不能理解的,一定要回头查阅以前学过的知识,或者上相关论坛与大虾们探讨;在每个知识点中,我都罗列了至少两本书籍,但并不是每本书大家都必须去看,去研究,而是大家==选择其中一本进行深入研究即可==,知识我列出来的书相比较于其他书籍较好而已;另外每个部分的书籍是按照从易到难的顺序罗列的,大家可根据自己的具体情况进行学习;学习过程是艰苦的,大家如果确定要学习嵌入式Linux,就必须下狠心,多努力,不能“三天打渔两天晒网”,至少应该==保证一个阶段学完一个知识体系==;另外还要注重==多实践==。更多linux免费视频资料获取 后台私信【架构】

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论