如何学习嵌入式Linux驱动

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-08
arm嵌入式、linux驱动开发应该怎么学?

嵌入式零基础学习路线:
1)学习 Linux系统安装、常用命令、应用程序安装。
2) 学习 Linux 下的 C 编程、这本书必学《UNIX 环境高级编程》、《UNIX 网络编程》,Rechard Stevens 写的,C 高手大都学习过《C 和指针》、《C 缺陷与陷阱》、《高质量C/C++编程指南》、《C 专家编程》、《The C programming Language》
3)程序员大都要学:数据结构,嵌入式程序员数据结构必学!
4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学!
5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学,因为一开始就从 ARM 入手,不太现实!
6)ARM 体系结构,其中有汇编。
7)数字电路有必要学习,不然你在做底层开发时真的会不知道怎么看原理图,起码也得懂与或门吧。
8)ARM + Linux 应用程序开发。(前提是要有开发板)
到此,你勉强算是在嵌入式Linux 这个行业有了初步入门了吧, 但遗憾的是这还远远不够!
9)要做底层开发,就必须知道软硬件之间是如何衔接和配合工作的,那么电子技术应该要好好学习了,很多时候会用到模拟电路知识,这是区别好手与菜鸟的不同之处之一。
10)Linux 下的汇编要学,这样你才能真正了解你写的程序是如何在一个特定的硬件上跑的。这是区别好手与菜鸟的不同之处之二。
11)TCP/IP 协议栈要学,所有的嵌入式高手都得掌握的东西,这是区别好手与菜鸟的不同之处之三。
12)有了这些东西,拿下 Linux 驱动已经不再话下,需要你去学习 Linux 内核源代码和Linux驱动程序设计,这是一个技术升华。
13)音频、视频的解码译码技术你得学。
14)各种 IC ,各种 bootloader 你能够参与其开发设计。
15)自行设计开发新产品,新技术。

先学习linux

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”,而且这种缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到工作。据专家预测,嵌入式每年人才缺口在30万左右。

嵌入式开发学习具体步骤如下:
基础学习期 I:·Linux基础操作、基本服务配置及使用
·Shell编程
基础学习期II:·C语言
·数据结构、(选修)C++、QT
基础进阶:·Linux高级编程、Socket网络编程

·TCP/IP
嵌入式:·嵌入式汇编
·嵌入式体系结构
嵌入式晋级提升:·Linux内核
·Linux驱动开发
经典学习案例:
GPIO驱动
RTC时钟驱动
WatchDog驱动
Udev移植
触摸屏输入设备驱动
LCD显示设备驱动
DMA驱动
音频设备驱动
Nand Flasha块设备驱动
网络设备驱动
现在,国内似乎在进行一个全民学习嵌入式的运动,但据了解,很多人在整个学习的过程中,由于某些技术领域的空白或者是技术尚未成熟,再加上个人学习方法不正确,给个人的学习造成了极大的阻碍,遇到这种情况该如何解决?根据本人有限的学习经验,给学习嵌入式的以下建议。
给学习嵌入式者10点建议:
遇到问题,首先进入baidu.com、www.google.com(或是其他搜索引擎)搜索一下,任何一个嵌入式工程师都不敢否认,这是学习嵌入式最好的老师!
尽可能多的论坛,遇到问题,及时发贴,情况紧急的时候,可以在不同的论坛同时发贴,这样,并行处理你的问题也许会解决得更快些。
尽可能多的结交嵌入式高手,最好是在公司上班的嵌入式工程师,他们有一个优势:了解市场,了解业界的发展动态.和他们多混混,对尚未上班的学习者来说,是非常有必要的。
要经常进入一些好的嵌入式网站,尤其是一些国外的网站,去看看嵌入式的发展动态,并且,要把这些网站都收集起来。
如果可能,我建议大家在网上订一下电子刊物,这些电子刊物是按时发到你邮箱的,那些资讯都是最新的,可以说是很前卫的了.....如果资金允许,建议报名参加嵌入式培训班,在培训公司可以很快的入门提高,这样可以更好的提高学习效率。
相信自己的选择,相信自己行业的发展前景,要对自己的选择和自己的行业有浓厚的兴趣,这一点做不到,你就很难学到很高深的层次!
追求要执着!刚开始学习嵌入式系统,肯定会遇到很多问题,我当时也是这样,学了三个多月,好像一点进展都没有,我在怀疑:难道我不适合搞嵌入式?当时我也想过放弃,但心里太不甘心了,脚都踏出了一只,我不能就这样屈了!于是就硬上,不断的琢磨....(现在,终于知道什么是嵌入式linux了,哈哈....)
不要对自己要求过高,只要你比昨天进步了一点,你就离成功又近了一步!学习嵌入式也忌浮气燥(其实这一点,我最有感触!),也就是要踏实。
万丈高楼平地起,不要忽略了低层的东西,你越是学习到高层的技术,越是发觉低层的东西有用,这些大家以后会有所体会的!我大一学习51单片机的时候,感觉它没什么用处,大二学习ARM处理器,才知道,没有51的基础,可能还不知道要多花多少时间才能搞懂ARM的硬件。
系统的选型的问题.现在的开源操作系统已经很多了,并且也做得非常成熟,初学者也会为此而烦恼.目前较为流行的嵌入式操作系统有:linux,winCE,VxWork,uC/OS2等等....主要区别在于实时性的问题.如果你是搞自控(像我学习的专业,不过我不玩控制的....),学习实时性高一点的操作系统更有帮助,如VxWork.如果你想以后搞民用产品,如手机,机顶盒,终端设备之类的,学习linux,winCE这些方便于多任务运行的操作系统较好!建议你在学习之前先了解该系统的市场占有率,学东西得看看学完它之后到底有没有作为啊,否则,你就一辈子只有自己玩系统啰...

来源:http://jingyan.baidu.com/article/00a07f38abc95682d128dc58.html

学习嵌入式Linux驱动,首先我们需要的是去了解整个嵌入式开发的整个流程分为四个层次:底层硬件设计、嵌入式驱动开发、内核开发、应用层开发。其中底层硬件设计必须要有一定的硬件功底,我建议你若不是科班出身(数电、模电、高频学的比较好)的人不要去考虑。内核开发需要你有很好的软件功底(C语言、C++学的很好,有过一定的项目经验最好),这个事嵌入式驱动开发的人以后可以考虑发展的方向,不建议一开始就学。如果你是面临着急需找工作的人并且你有一定的商业头脑、创新思维,我认为学习应用层开发是最好不过的选择,但是你别忘了因为简单容易学所以学的人比较多。如果你把前面三个选择都否定了,而且你C语言学的还可以,有学过C51或者STM32这些简单的东西,你不妨看下去。如果你觉得这些对你没用或者不感兴趣,请就此打住不要再往下看不要再浪费你的时间了。亲,去做你该做的事吧!
一、入门者:了解嵌入式
了解嵌入式开发我觉得最好的东西还是《嵌入式系统设计师教程》,这本书写的很烂,无非是用来应付考试的。但是我认为对我们了解嵌入式开发需要学习些什么东西还是有一点用处的,可以在网上浏览一下,你就可以知道嵌入式大概要学的东西,不建议精读。另外如果想大致了解一下嵌入式开发的四个层次,可以看下韦东山韦老师的《作为一个新人,怎样学习嵌入式Linux》http://blog.sina.com.cn/s/blog_13955cfdb0102v3it.html

二、初学者:学习使用Linux
我这里的初学者者指的是已经回了解了嵌入式,有欲望想往深处学习的码农们。这个时候我们已经找到了感觉了。嵌入式操作系统有Vxworks、WINCE、uCLinux、Embedded Linux等操作,但是我们一般选择Linux。原因有二:Linux代码开源,可供学习免费使用。Linux学习的资料非常多,很容易找到小伙伴。学习嵌入式Linux驱动,就必须先学习使用Linux。但是我们对于Linux的使用其实不必学的太多,多了反而会在这浪费的时间。像大家都说可以的《鸟哥的linux私房菜》我不建议大家读,我认为像《Linux就该这么学》这样范范而谈的书籍反而更适合我们初学者。我们对Linux的定位是:基本命令会用,不懂再查。
http://www.linuxprobe.com/chapter-00.html如果觉的适合自己可以去看下

二、菜鸟们:加强C语言,看得懂电路图
我相信到这一阶段你已经深深的爱上了Linux,当然你也可能恨死她了,恨她为什么有那么多命令,恨她为什么不去想Windows那么傻瓜式啊,点点就可以了,但是你别忘了其实Windows也有DOS命令行,只是你没有用过而已吧。我对没有去Linux命令界面敲过几行命令的人视为不会使用操作系统的人,你觉得啦?
既然你爱上她了(不爱请不要再往下看),那请问你为了一个爱你的人做件可能对你难的事,你愿意吗?愿意的话,我们就要去加强自己的C语言基础,我觉得书看的多,视频看的多,还不如看懂一本书,把一本书的程序题好好敲敲,你觉得啦?所以我还是推荐最好的入门的C语言书籍《C程序设计》谭浩强前辈写的。对于看得懂电路图我认为最好的是去下一个画电路板的软件随便找几个电路图画画,慢慢就会了,当然你也可以跳过,我相信如果你真的爱上这一行了以后的学习工作中会逼出来的。

三、码农们:选择一块合适的开发板,然后看书、看数据手册、敲代码、看视频
嵌入式Linux驱动开发是一个敲代码的过程,所以称之为码农。对于嵌入式Linux驱动开发来说是一个偏软件的工作,而码农们就是一个看书、看资料、看视频学习理论知识,然后自己实现的反反复复的过程。只有你不断Debug不断解决不断充实理论知识,才可能往更高层次走。对于书籍我推荐韦东山韦老师的《嵌入式Linux驱动开发完全手册》,当然我觉得成为中国化的S3C2440数据手册更好些(至于为什么学ARM9的S3C2440可以往下看),当然这本书也有他的不好之处:太过于实践,理论知识不全。我觉得配合杜春雷老师的《ARM体系结构与编程》看会非常好,有比较详细的对ARM的介绍。另外既然我们学习S3C2440的话,《S3C2440数据手册》我们是非看不可。另外老外写的《设备驱动开发》也就是所谓的LDD,还有就是宋宝华老师的《Linux设备驱动开发详解》,挺不错的。视频的话我力顶《嵌入式Linux驱动开发完全手册》的作者韦东山韦老师的视频,可以去百问网http://www.100ask.org/ 自行查看。开发板的话我觉得可以自行选择,最好选择S3c2440或者S3c2410的芯片,因为ARM9的资料最多,随便上网搜就是一大把。
四、大神们:研究Linux
毛德操/ 胡希明写的《Linux内核源代码情景分析》、 赵炯《Linux内核完全注释》、《unix环境高级编程》还有更多的可以去看一看瞧一瞧了,我相信你学到这里就可以自找出路了,我也目前在前面阶段,以后把这些学习完再做补充了。

我相信能够学习嵌入式Linux驱动的人都能够知道有好的学习资料学习能够事半功倍的,本人也是学习驱动的菜鸟,历经了学习的沧桑,今天在这里分享一下自己学习嵌入式Linux驱动过程中自认为好的资料,不好请勿喷。有兴趣的可以转载分享给你的朋友。以后有时间我会整理我在学习过程中的东西,加我关注以后一起学习叫流。

  • 嵌入式linux怎么学?学习嵌入式linux有什么方法?
    答:嵌入式数据库开发;嵌入式 Linux应用综合项目;ARM处理器编程;ARM硬件接口开发;3.:底层 嵌入式底层一般会涉及到,如何把你写的程序移植到开发板上运行,那么就会接触到系统移植、内核驱动开发等等,这是嵌入式工程师最高境界。主要要学以下这些:嵌入式Linux系统开发;嵌入式Linux内核开发;嵌入式Linux驱动开发...
  • 如何自学linux驱动开发,做驱动开发需要哪些方面的知识
    答:做嵌入式应用的话一般的编程就可以了。那么嵌入式驱动开发与内核开发的话就需要学习多个方面的知识。我就把这方面的要求给你交流一下:(一家之言啊,自己多年从事嵌入式开发的一点感悟)嵌入式驱动开发需要了解的知识大概有以下几类:1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解...
  • 嵌入式linux驱动要学哪些
    答:linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的...
  • 基于linux的嵌入式底层驱动开发应该怎样系统的学习?注意哪些方面?_百度...
    答:不过,还是建议读国外的书(如果有时间的话),长痛不如短痛。2、不一定非要有开发板,可以用skyeye等软件模拟。但是,软件模拟和实体机肯定是有区别的。还是建议选一块开发板。3、ARM板是个硬件,可以用来学习WinCE、Vxworks、Linux、uCos等等系统开发。可以用来学习以上系统的驱动和应用开发。Linux驱动...
  • 嵌入式linux怎么学
    答:剩下的,就按<嵌入式Linux应用开发完全手册>和第1期视频的章节目录去学习吧。二、内核:想速成的人,先跨过内核的学习,直接学习怎么写驱动。想成为高手,内核必须深刻了解。注意,我说的是了解,我没奢望去写出一个内核。要对里面的调度机制、内存管理机制、文件管理机制等等有所了解。推荐两本书:1. 通读<linux内核...
  • 如何快速学习嵌入式Linux课程?
    答:如何快速学习嵌入式Linux课程?嵌入式要学哪些课程?嵌入式用一句话概括,就是写程序,用软件控制硬件。嵌入式的应用领域非常多。智能家居,智能农业,智能医疗等等都属于嵌入式。那么嵌入式该怎么学习呢?1.C语言 自上而下的学习首先是写代码,写用户的应用程序。每种语言的使用目的是不同的,嵌入式的...
  • 学嵌入式从哪里入手
    答:1.C语言! C语言! C语言! C语言可以说是贯穿整个嵌入式的核心程序语言,想要学好嵌入式,C语言必须学会。2.基础电路与工具的学习。 可以从b站找一些视频下载个proteus,keil进行学习。proteus是仿真软件,里面有各种元器件。keil可进行编程。学习嵌入式,避免不了跟硬件打交道,不可能总是仿真,最...
  • 嵌入式学习方法是什么?学嵌入式有什么学习方法?
    答:嵌入式数据库开发;嵌入式 Linux应用综合项目;ARM处理器编程;ARM硬件接口开发;3.:底层 嵌入式底层一般会涉及到,如何把你写的程序移植到开发板上运行,那么就会接触到系统移植、内核驱动开发等等,这是嵌入式工程师最高境界。主要要学以下这些:嵌入式Linux系统开发;嵌入式Linux内核开发;嵌入式Linux驱动开发...
  • 如何学好嵌入式linux?
    答:(3) Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)(4)了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。(5)...
  • 嵌入式linux要学哪些
    答:您好,关于该问题,解答如下:嵌入式linux要学什么:1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell...