如何学习嵌入式Linux驱动

如何学习嵌入式Linux驱动,第1张

学习嵌入式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系统。当然虚拟机就行。先学习标准C、然后学习linux的Unix C当然这种C很相似。就是函数不太一样。思想都是一样的。

上面两个网上都有教学视频。把网上的教学视频看完就差不多了。当然教程中要求练习的地方必须要动手做。只想大体思路是绝对不行的,这样学到的东西很不扎实。

这两个学习差不过了。就可以买一块开发板玩了。

如果你趋向于裸跑的程序,可以买一个arm7、arm9的板子,当然可以用cortex-m系列的也就是stm32系列的单片机开发板。裸跑和单片机没什么区别了。就是arm的cpu比单片机寄存器复杂一些。这就看你阅读cpu芯片手册的能力了。当然这个平台上也能跑一些系统比如uCOS就是个很好的实时 *** 作系统。

如果你趋向于 *** 作系统,你可以上cortex-a8 、a9系列的cpu了。这个需要学习的东西比较多。学习 *** 作系统的启动代码必须要学。现在最流行的是u-boot。

然后学习一下系统移植方面的东西:

1、文件系统制作 。流行的软件是busybox

2、系统裁剪。这个你买的开发板都会带平台代码。也可以在www.kernel.org上下载源码自己编译。

这个时候你就可以用u-boot(类似我们常见的主板bios)启动你的系统。加载你自己编译好的linux内核。系统就启动起来了。

最难学的是你要搞嵌入式系统的开发。基本要了解linux内核了。自己学的话需要在网上找一找相关教程看看。(这个我不知道有没有视频教程),没有的话要买一个《linux内核高级编程》学习。这本书太难啃了。

要学习 *** 作系统的嵌入式开发,还远不止我说的那些。还有库移植、makefile脚本也要学习。linux内核启动原理(启动过程加载那些文件、启动参数)。arm启动原理等等。

你可以边工作边学习,从事嵌入式周边行业的(嵌入式应用方面)所以可以学一学嵌入式的图形开发工具:QT,这个很有意思。然后慢慢的想嵌入式方向发展。这是一个漫长的过程。如果想速成也可以报班学习。

另外就是Unix c部分的网络编程很重要这个地方要学好。学好了也可以从事linux的网络协议栈相关工作。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8931999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存