嵌入式linux学习路线要学哪些东西

您的举报已经提交成功,我们将尽快处理,谢谢!
本文仅面向Linux的初学者,大多是命令的操作,有可能还有点理论 。都是最简单的、最基础的东西。对于老鸟来说,看北南写的文章实在是浪费时间。哈哈。。。。所以老鸟...
Linux:就是一个系统而已。
嵌入式linux:哦。。可以理解为手机系统吧。。应该是这样的。我保留意见。
uClinux:针对微控制领域而设计的Linux...
安博也有嵌入式开发的培训
从基础开始学 C Linux
ARM体系架构
驱动程序开发 C++ QT等 还不错
大家还关注7124人阅读
嵌入式开发(64)
职业规划(81)
基础入门篇(124)
社区免费活动推荐:
open公开课《教你做一款自己的智能手表》:
open讲座《ARM全国大型技术巡回讲座》,
嵌入式Linux要学哪些东西?你真的造吗?
嵌入式Linux要学哪些?一些人总在寻思,怕走了弯路,又怕学的东西离企业需求远。那么今天就请华清远见高级讲师曹大神告诉你,9点浅析嵌入式学习步骤。下面是他本人亲笔。
1、要学习Linux,首先要会用,如果不会用怎么知道怎么知道怎么去做,所以需要学习Linux系统的安装及使用。
2、学会用Linux了,那么我们就要做一些Linux下的开发了,开发什么呢?看到网上有很多很强大很有趣的程序,我们都可以尝试去做,可是如何去做呢,程序是什么呢,怎么写呢?这时我们需要学习一些语言,比如比较基础的C语言,比如面向对象的C++,Java等。
3、写完程序了发现不就是一个很普通的文件吗,怎么能像别人写的程序一样运行起来呢?
这时我们需要知道如何编译一个程序,需要知道编译器及一些其他工具的使用,比如GCC,在开发的过程中我们为了提供工作效率还会用到Make,Shell等,为了能够很好的管理我们代码的不同版本,我们还需要知道什么是SVC,CVS,subversion,git等。
4、当我们开始写一些比较大的程序,不再是以往的hello world级别的了,这时我们发现我们考虑的更多了,我们考虑到了程序的效率,我们发现需要读写文件了,我们发现需要和另外一台电脑通信了,于是我们有需要学习一些更高级点的东西了,比如数据结构,比如文件IO,比如多进程多线程编程,比如网络通信,这时我们会接触很多新的名词,什么是树,图...,什么是文件io什么是标准IO,什么是进程线程,什么是TCP/IP...。
5、当我们再进一步的话,我们会发现我们什么有很多的东西都运行的是Linux系统,可是他们和我的PC运行的Linux有什么区别呢,为什么我电脑要用风扇而手机不用风扇呢,我们打开网页查找手机的详细参数的时候,会看到Cortex-A15 、四核 、ARM等等字眼,什么是ARM,什么是Cortex-A15,我们需要进一步的了解。
6、了解完ARM之后,很多人就回去购买一些开发板,去学习它,这时操作系统的移植又成了一个比较重要的内容了,什么是bootloader,什么是kernel,什么是rootfs等等,我们怎么做呢。
7、花了很长时间系统做好了,发现板子上很多的什么不能用,怎么办呢? 这时我们需要写一些驱动来驱动这些设备,这时我们需要知道,什么是字符设备驱动、块设备驱动、网络设备驱动,为了更好的写驱动我们需要了解更多的硬件相关的东西,我们需要看懂芯片手册,我们需要看懂原理图,只有我们懂我们的设备,才能更好的驱动它。
8、等等,这里就列举更多的内容了,因为还有很多。
9、这些都有了我们就可以自行开发我们自己的产品了。
嵌入式Linux要学哪些?上述9点基本很明了了。这也算是嵌入式学习的一个基本步骤。本人认为到第九点你已经是一个高级的嵌入式Linux人物了,工资待遇我已经不用说,咋说也得15K往上了,如果做管理30K也是有的。这些东西要靠自学,说实话不太现实,嵌入式入门门槛相对高,要有心里准备,参加培训班是有必要的,除非你有亲戚朋友手把手教你。引用一句老话:“师傅领进门,修行是靠个人!”自己必须得喜欢钻研与学习,只有付出才会有收获!
最后说一点,Android系统也是在linux系统基础上开发的,所以学嵌入式linux的朋友,将来不仅可以从事嵌入式开发的工作(嵌入式的应用领域非常广泛,永不过时!)还可以从事android开发方向的工作(轻松迈入),从职业发展来说,嵌入式linux也是程序员最具发展前景的技术首选。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:880906次
积分:17196
积分:17196
排名:第440名
原创:812篇
评论:212条
(3)(26)(18)(25)(23)(12)(13)(2)(1)(2)(1)(1)(7)(5)(3)(1)(2)(1)(2)(3)(1)(5)(2)(13)(4)(3)(4)(2)(3)(1)(2)(1)(6)(4)(5)(3)(4)(3)(3)(2)(4)(2)(4)(4)(4)(5)(3)(6)(4)(5)(5)(12)(10)(6)(6)(13)(2)(2)(9)(13)(3)(12)(20)(16)(10)(8)(15)(15)(13)(15)(17)(18)(12)(14)(20)(27)(6)(19)(23)(18)(22)(35)(30)(23)(34)(35)嵌入式 PK 互联网互联网+浪潮越来越热,一个学习Android app开发的应届生待遇都可以开到8K以上,越来越多的人开始投入到互联网开发领域中去。这是今年,尤其是去年2015年开始的火爆的互联网行情。家里的亲戚也曾跟我说过,你不是研究生吗,工资咋还这么低?隔离老王家的儿子本科毕业才2年,工资都15K了......从事嵌入式开发的工程师工资往往轻松被互联网的人double kill,甚至treble kill。网上各个QQ群、论坛、贴吧里也经常有在校的大学生迷茫,到底该选择嵌入式,还是互联网?嵌入式真的日薄西山,互联网真的会永远火下去?选择一个行业,不能光看到眼前,更要从前景、生态去分析,结合自己的基础、兴趣去选择一个适合自己、让自己能全身心投入的职业,这样才能更有机会做出更大的成就。如果什么热,不考虑自己的情况,就追逐,你要知道,根据市场规律,迟早会趋于平衡,到时候你的积累不够,也许并不能拿到期望中的高薪,也并不一定是适合自己的行业和工作。互联网+浪潮,大众创新,万众创业,引来大量的资本进入互联网行业,从事互联网行业的薪水也水涨船高,尤其是最近2年,据说如果你想创业,写个PPT,主要跟O2O、互联网+沾上边,都能拿到投资,开火干活,别管赚不赚钱,先烧钱笼络用户再说。滴滴快滴的烧钱大战,可以看做是一个典型的代表。然并卵,经过2年的火爆行情,从今年开始,慢慢地也开始趋于理性了,独角兽企业尚未形成,大量的O2O互联网企业开始倒闭,很多前期拿到2W甚至3W的程序员就陷入一个比较尴尬的地步了,怎么办,再回到以前8K的日子,心里肯定有落差,不适应,一咬牙,继续创业吧,于是就踏上了一条创业不归路。相对于互联网,嵌入式行业倒是不瘟不火,不卑不亢地发展着,我觉得没有当前在互联网浪潮下很多人认为的不堪,也没有辅导班吹得多好,一直在发展,生态在演化,而且跟互联网联系越来越紧密。嵌入式生态及需求变化十年前刚听说嵌入式,感觉就是ARM,三星的44B0,2410,嵌入式Linux,QT,后来还有Qtopia,就感觉很厉害了。很多嵌入式培训班也开始火爆起来,什么缺口100万,嵌入式驱动工程师供不应求,总之就是学习嵌入式很有前途,不累,可以吃老本,赞经验,越来越吃香。很多人开始学习、培训,踏入这个行业,把自己的职业方向定为嵌入式开发,尤其是Linux内核驱动开发,觉得工资高。培训班里驱动开发课程也是比较热的,然后出去找工作时,很少有人能找到驱动开发的工作,大部分都是基于方案做应用开发等,其实这可以从半导体行业的生态说起。功能机时代,我们知道,联发科的Turnkey交钥匙方案通吃整个手机行业,赚钱赚到手抽筋(当然后来被展讯砍下半壁江山,这是后话)。什么是交钥匙方案呢,通俗点说,也就是软硬件平台我都帮你做好了,你只要做个壳子就可以出货卖了。到了智能机时代,很多手机芯片厂商开始借鉴MTK的交钥匙方案,比如展讯、联芯、甚至高通,不仅仅是手机行业,像消费电子、平板的芯片厂商采取的同样是这一策略,这也导致了在嵌入式开发,尤其是驱动开发这一块上,手机企业需求很少,一般只集中在几家芯片厂商。像一般的手机公司,反正软硬件方案都已经做好了,一般很少有公司再愿意花大钱去供养专门的嵌入式工程师,尤其是驱动工程师,有问题,让测试人员,应用工程师直接跟原厂联系,让原厂解决。很多人在方案公司工作,其实也就是每天对着方案修修补补,有问题找出来,回报给原厂,打个patch,编译在重新测试验证一下。而且像前期,能做手机芯片、消费电子、工业控制芯片的一般都是国外欧美IC巨头企业,核心研发一般不在中国,都在国内,导致很多嵌入式职位类似于FAE、AE性质,这也让很多真心对嵌入式感兴趣,想学习真技术,硬货的工程师不满足。然而,这种状况已经在慢慢改变了。随着中国庞大的市场需求,越来越多的半导体公司把研发中心设在中国,以方便更好的服务和应对中国庞大的市场。同时也提供了大量的嵌入式技术职位,像很多欧美韩,台湾半导体企业,从芯片设计到软硬件平台解决方案甚至都开始放在中国来做,慢慢地对嵌入式高层次的工程师需求也多了起来,不仅仅是AE、FAE,RD的职位供给越来越多,毕竟这些职位原来在他们本国成本高,放到中国,可以节省成本。二是国家也开始重视和支持集成电路发展,各种大基金开始支持国内的企业从事集成电路开始、操作系统核心技术开发,导致越来越多的嵌入式开发需求也释放出来。比如,现在国内的瑞芯微、全志、展讯通信、华为海思、联芯、新岸线、盈方微都推出基于ARM的SOC芯片,面向消费电子、平板、工业控制、物联网、手机、智能硬件发布软硬件解决方案,围绕这些芯片,衍生出一系列的产品生态,也会对嵌入式工程师有很大的需求。除了ARM芯片之外,其实还有很多其他架构的CPU也开始慢慢推向市场,如龙芯、上海兆芯基于X86的CPU芯片、北京君正基于MIPS结构的SOC、还有北大的众志、国防科大的飞腾,今年法国刚刚公布的超级计算机第一位的太湖之光,也是国产的CPU处理器。另外,基于ARM的服务器CPU也即将推向市场,去蚕食Intel X86的地盘。随着越来越多的不同架构的CPU面世,围绕该CPU的一些列生态和产品线开发,都需要大量的嵌入式Linux工程师。除了传统的半导体企业外,一些原先的手机厂商、互联网企业也开始涉猎芯片设计行业,像苹果一样,打造自己的垂直产业链,比如像小米、中兴也开始研发自己的手机芯片。据说,大疆无人机也开始着手开发自己的飞控芯片。技术和生态的需求,除了大量的工程师之外,也对工程师的素质要求更高。以前,系统移植、优化这些都是由欧美大厂做好了,我们基于方案平台做二次开发,对底层的要求相对不是很高,这也是为什么很多公司不愿意掏钱养底层驱动工程师的原因。现在随着产品升级,要打造一款高品质的电子产品,光靠同质化的平台肯定不行,得有自己的特色和核心竞争力,大家可以到51job等招聘网站上可以看到,像乐视、小米这些企业也开始招聘大量的嵌入式工程师,从事智能硬件开发,打造自己的生态。新智能时代,新需求,如何学习嵌入式随着国家对集成电路、操作系统等基础软件的大力支持,在可以预见的将来,越来越多的国产芯片、中国芯将推向市场,基于Linux的面向各个特定行业的操作系统将陆续推出。物联网、智能硬件、VR这些方兴未艾的领域,也将催生大量嵌入式开发的需求。作为一个在校学生或者想从事嵌入式Linux开发的工程师来说,该如何去学习嵌入式呢?平台越来越多,平台环境搭建困难,是嵌入式学习的一道坎。嵌入式真的难学吗?我觉得嵌入式并不难,跟Windows下学习编程没有什么两样。难就难在嵌入式开发环境的复杂上,调试方法也不如在Windows下开发方便。很多人买来开发板,一阵子捣鼓,把时间都浪费在了开发板的升级、烧写上。而真正嵌入式Linux的精髓、核心知识、内核的理解却很少涉及。而在公司实际的开发中,不同的公司采用不同的平台,调试手段、升级方法也往往不尽相同,你花了很长时间掌握的开发板技能往往换个平台可能就不管用,而你该掌握的嵌入式核心知识、Linux内核基础、系统的通用理解却不完善,这也是当前很多人学习嵌入式容易遇到的一个情况。我的建议是,学习嵌入式,应该把主要精力放在核心通用的知识上,跟平台无关,比如对内核的理解,这个不是一朝一夕就提高的,需要花大量的时间和精力去系统学习的,而在公司工作中一般很少有机会和大量的时间去学习这些,而对开发板和平台的熟悉,你自己一个人在折腾,可能会浪费很多时间,到了公司,别人稍微指导下,可能很快就掌握了。这也是我将录制的《嵌入式工程师自我修养》系列课程,不采用实体开发板的原因,一是对于学员来说,实体开发板往往环境搭建就会遇到各种各样莫名其妙的问题,比如电脑硬件、系统不兼容,任何一个小细节都会让你系统跑不起来,烧写不成功,时间长了,容易受打击,而真正嵌入式的核心知识,需要我们花精力和时间该学的东西,却没有涉及。二,通过仿真平台,搭建理想化的学习平台,我们可以把精力完全放到嵌入式软件、Linux内核、驱动开发上,节省时间和金钱成本。三是从学习效果上看,在只有开发板,没有配套的万用表、示波器等硬件工具,其实硬件遇到问题往往也无能为力,对比下来,使用仿真器去学习是一个不错的选择。最后给自己打个广告:51CTO 6月30-7月1号3周年活动,一律课程五折,想攒点课学习的可以下手啦(我的攒了几门),另外我的以下课程已经录制好了,有兴趣的多支持~:C语言那些事(免费)git零基础实战零基础玩转Linux+Ubuntuvim从入门到精通嵌入式工程师自我修养(armlinuxfun) 
 文章为作者独立观点,不代表大不六文章网立场
armlinuxfun嵌入式工程师技术交流、资讯分享、工作创业、开源共享平台热门文章最新文章armlinuxfun嵌入式工程师技术交流、资讯分享、工作创业、开源共享平台&&&&违法和不良信息举报电话:183-
举报邮箱:
Copyright(C)2016 大不六文章网
京公网安备78&&&学习嵌入式linux怎样才能快速入门?这是很多出来华清远见参加学员爱问的问题,这里做一个总结供大家参考,嵌入式linux入门可以概括为六步走:
&&&&第一步:学习基本的裸机编程
&&&&对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。要知道无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。
&&&&所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?
&&&&还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?
&&&&再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。
&&&&第二不: 使用linux系统进行一些基本的实验
&&&&在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。
&&&&华清远见自主研发嵌入式开发板推荐:
&&&&第三步:研究完整的linux系统的的运行过程
&&&&完整的linux系统包括三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。
&&&&第四步:开始做系统移植
&&&&搞清楚linux系统三部分之间的关系和作用后,你现在需要做的就是自己动手学会制作这些东西。
&&&&当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。
&&&&在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
&&&&至于每个部分的移植网上参考资料很多,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。
&&&&这一步的最终目的是,从源代码的官方主页上下载标准的源代码包,然后进行修改,最终运行在板子上。
&&&&第五步:研究linux驱动程序的编写 (推荐阅读:)
&&&&移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
&&&& Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。
&&&&第六步:研究应用程序的编写
&&&&做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。在这里推荐大家可以使用MiniGUI函数库,MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的。
&&&&完成这一步你基本就学完了嵌入式linux的全部内容了,在这里有一个小小的经验想和大家分享:一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。记住,问题是学习的最好机会。
&&&& 原文地址:&更多嵌入式培训资料详见:
阅读(...) 评论()2010年5月 硬件/嵌入开发大版内专家分月排行榜第二
2010年8月 Linux/Unix社区大版内专家分月排行榜第三2010年3月 Linux/Unix社区大版内专家分月排行榜第三
2008年12月 移动平台大版内专家分月排行榜第一
2009年3月 移动平台大版内专家分月排行榜第三2009年1月 移动平台大版内专家分月排行榜第三2008年11月 移动平台大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 嵌入式linux怎么学 的文章

 

随机推荐