0基础学习嵌入式开发要怎么规划嵌入式学习路线
时间:2018-12-26 00:00:00
来源:信盈达
作者:信盈达
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。江湖有传言:除非在过去的十年你一直生活在山洞里,否则你一定听说过嵌入式linux。是的,像我们平常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统,嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等,特别是随着消费家电的智能化,嵌入式更显重要。
是的,现在听说过嵌入式linux,会一点嵌入式linux基本操作的人多如牛毛,然而真正能用嵌入式linux做一点事情的确少之又少,这就造成了现在的状况:各大 嵌入式linux论坛十分热闹,但我国嵌入式linux人材却还十分紧缺.到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥!
现在国人学习嵌入式linux的状况也是这样,学嵌入式linux的人个个都意气分发,以为学习嵌入式linux会用嵌入式linux是多么了不起.学了一点皮毛就认为很牛了.但是那些企业用人单位却很难找到真正适合的嵌入式linux人材.因此,我想就目前的状况发表一下我的看法.
首先,这篇文章是写给那些想成为嵌入式linux高手,并真正想用嵌入式linux做些事情的人.如果你只想做一个菜鸟,没事的时候在你双系统启动的电脑上偶尔选一次 嵌入式linux,然后没事进去偷着乐,那就请你自便.另外,我想说明,和真正的牛人比起来,我自己还处于一个比较低的水平.我没有读过内核源代码,不知道 嵌入式linux工作原理等等,但是通过摸索,至少我已经找到了通往高手的道路的方向.因此还是想说两句.
1,嵌入式linux不是玩具
如果你想系统的学习嵌入式linux,你必需清楚的认识到这一点.现在有很多人,号称是嵌入式linux爱好者,但是他们大部分的事情还是用windows 做,而嵌入式linux只是作为一个随便玩玩的系统.他们懂得一些嵌入式linux的基本操作,知道有嵌入式linux这个玩艺,也因为经常听人家说嵌入式linux好就咬定了 嵌入式linux就是好.只要有人说嵌入式linux比windows差,那么他们就奋起反驳,他们也看不起用windows的人,认为用windows的人水平低. 但是自己用电脑的大部分时间还是用windows并且把重要的文件都放在了windows分区,因为他们骨子里只把嵌入式linux当做玩具,没有真正领悟 嵌入式linux的精髓所在.如果你真正想系统的学习嵌入式linux,想用嵌入式linux有所作为,那么请忘记windows的思维方式,慢慢感受和习惯嵌入式linux的操作方式,总有一天你会真正体验到他的奥妙所在,从而从自己内心深处喜欢他,使用他,而不是为了赶时髦或向人炫耀而使用他.
2,手头有一本好的入门教材吗
"如果你还没有好好的读完过一本嵌入式linux安装及入门教材就不要到初学者论坛来问题!因为你连问问题的资格都没有! " 这是我的一个比较偏激的观点.
如果你现在开始下决心学习嵌入式linux了,那么第一件你要做的事情是到书店去挑一本好书.而不是到论坛社区去问该用什么版本,该如何学习 嵌入式linux.一本好的入门教材可以让你快速领悟嵌入式linux的操作方式,系统的基本使用等等.而且都是前人总结经验写出来的,他可以帮你搭起一个学习 嵌入式linux的框架,对嵌入式linux有一个总体的认识.就好比建一撞大楼前先打好地基,搭好混凝土框架.以后就可以慢慢往这个框架里添砖加瓦,最后建起大楼. 而那些想急于学习的,不想看书,只想靠混论坛来学习嵌入式linux知识的人,就好比建一撞大楼,今天建好第一层,然后第一层就要全部粉刷好,装修好,家具买好住进去,然后第二天再开始建第二层.这样没有整体规划的学习是学不好嵌入式linux的,最后的结果是浪费自己的时间,也浪费别人的时间. 如果你不信,可以让实事去告诉你,以一年为限,你和你的一个朋友同时从0开始学嵌入式linux,计算机基础差不多.你去买几本好书自己慢慢看边看边做实验,让你的朋友整天到各大论坛瞎混零散的学些嵌入式linux知识.也许一开始,你的朋友会比你懂得多,但是一年以后你的水平肯定在你的朋友之上. 在初学阶段,不要随便在论坛上发问,多看书是根本,即使真的非问不可的问题,也要先自己动手察资料解决.实在不行再来问,高手不会鄙视菜鸟,因为每一个高手都是从菜鸟过来的,他们都知道菜鸟的苦衷.但是高手会看不起那些自己不愿动手动脑不会学习解决问题而只想得到现成答案的人.那样的人会被高手在心里暗骂成不配用嵌入式linux的蠢货.
你需要以下几种书:
一本好入门教材->一本嵌入式linux指令参考手册->嵌入式linux系统管理手册->讲解嵌入式linux系统原理的书.
一开始,你只需要入门教材就可以了.并且严格安教材的讲解去学习,不要一天到晚想着去装显卡驱动啦,装游戏啦,装软件啦,这些都没有必要.你就当你自己的电脑不能上网,只能通过看书学习.慢慢看书,稳抓稳打.慢慢地就融会贯通了.这时候你再到嵌入式linux初学者论坛去看看,你在那里早已经是高手了.
另外,一开始你要选定一本入门教材,但是不能只看一本,因为有些书上讲的,可能是另外的书上没有的.因此,重点选一本教材看完.然后再看两三本入门教材浏览一下.作为对第一本书的知识的扩充和巩固. 在看书过程中,如果你有什么不懂的,不要急于上论坛问,自己认真看几次,实在不懂没有关系,把问题放在那里.不要钻牛角尖不懂不肯放手,这种精神是好的, 但是方法是错误的.你尽管学下去,也许你看完书本以后的内容,就对前面不懂的内容豁然开朗了.这是在学习嵌入式linux中常有的情况.
另外,现在很多入门书籍是针对非技术型用户的.(我把那些对嵌入式linux本身不感兴趣,只想用他来上网,听音乐和打字的人称为非技术型用户,而把对嵌入式linux本身感兴趣的人称为技术用户)
这些针对非技术型用户的入门书籍几乎通篇都是插图,讲解的内容都是如何在图形界面下操作.这些书籍并不能帮你成为一个高手.反而会让你养成倚赖鼠标和图形界面操作的习惯以后很难改掉.因此不能看这些书,一定要买那些一开始就从系统基本机构基本命令开始讲解的书籍.我看过的第一本嵌入式linux入门书籍共有十多章,但是他从第十一章开始才大致的讲解了一下图形界面的知识.我很感谢这本书,让我一开始就脱离了windows的思维方式,给我以后的进一步学习带来了很大帮助.
完成以上的内容,你就完成了建大楼打地基建混凝土框架的过程了.可以接下来进一步学习了.
3,你看完系统自带的文档了吗?
当你完成入门的过程后,就可以开始读其他的文档,然后到论坛的精华区看看,向你建起来的大楼框架中添砖头了.当然 ,首先要读的,还是系统自带的文档.
绝大多数嵌入式linux发行版都自带非常详细的文档.比如我一直在用的redhat,他有从系统安装到系统安全,针对不同层次的人的详尽文档.静下心来,把这些文档读完,比看任何论坛的精华区都有用.书籍和文档就好比是你每天都离不开的一日三餐,论坛区的精华文档就好比是点心和水果.你可以不吃点心和水果,但是决不能不吃正餐.
当然,不能为看文档而看文档,你一定要边看边安文档中说的做试验验证.这样才印象深刻,否则看过就忘记了等于没有看.
另外,如果真心想学习嵌入式linux就不要吝啬,也不要害怕丢失数据而不敢做实验.我建议你去买一个小的二手硬盘,然后放开手干.不要怕丢失数据而不敢做,如果你没有学会技能,将来做了嵌入式linux系统管理员或者网络管理员到那时因为不会而丢了数据就是大事情了.
4,学习嵌入式linux不是逛自由市场.
经常看到有人问用什么版本的嵌入式linux好,其实只要你认真学习无论什么版本都挺好的.要知道,开发嵌入式linux发行版的人都是通读过嵌入式linux内核代码,对 嵌入式linux原理极其精通的人,而且每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此. 因此,讨论什么版本好并无意义,关键是你是不是真心想学.不过,为了避免曲高和寡,最好选用的人多的版本,比如redhat manrake suse 等等. 国内有一两个嵌入式linux版本做的也不错,但是国内的嵌入式linux都是面向非技术型用户开发的,因此,如果你想成为高手,建议不要用国内的版本.
学习嵌入式linux不是逛自由市场,选定版本就要静下心来学习.不要今天换版本明天要升级.这样对你没有好处.我见过一些人号称用过十几种甚至几十种 嵌入式linux,向人谈论起来头头是到,好像懂的很多,但是如果你让他去用嵌入式linux搭建一个web服务器,做一个嵌入式linux网关,他就什么都不会了.他们把时间都浪费在了版本的转换上了.
5,你能看懂英文文档吗?
谈论这个问题,我有点低气不足,因为我自己的英语很差.但是, 至少我可以无障碍的读完一般的计算机文档.计算机英语很简单,只要熟悉了计算机专业英语,高中毕业的水平就可以轻松的阅读计算机文档了.如果你的英语实在太差了,连最简单的计算机英语文档都看不懂,那么在学习嵌入式linux的同时,请赶紧学习英语.也许你说,你可以看翻译的文档,当我还是一个菜菜鸟的时候,也是这样认为的.但是,后来才发现,如果你想深入学习嵌入式linux,看不懂因为文档实在是太难了.写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的.即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表.你去看看各大软硬件生产商的官方网站,有哪一个不是用英语作为其主站的? 长期用windows的人会很不习惯这一点,装个软件还要看半天文档,应为windows用起来实在太简单了.但是如果你想学习嵌入式linux就必需学会看各种文档,而大部分的文档都是用英语写的.我发现很多人甚至连man文档都不会看,有什么命令不会用了就跑到论坛上来问,还装出一副可怜相,乞讨一个命令的用法.有这些时间还不如自己看看man文档,即使你一个一个单词的翻译成中文再自己看都比问别人强,因为别人的回答再怎么详尽都比不上man文档详尽.安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么.否则,说明文档都不看,结果出了问题再来找答案反而浪费时间! 古人说欲速则不达就是这个道理!
6,忘记windows的思维方式
思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度.现在很多人用嵌入式linux.但是,他们用嵌入式linux的方式完全是 windows的那一套方式.骨子里都是windows的思想.这样是不能领悟嵌入式linux的精髓体验不到他的优越性的.我前几天看到一个朋友要把刚装了不到2天的mandrake 10 删除掉,我问他为什么,他说太慢了,受不了,还是用windows快.然后我留意了一下他用嵌入式linux的方式,他的所有操作都带着windows的影子. 他连最基本的删除,移动文件这样的操作都要用鼠标,这样当然慢了!最后我只好说,你删除吧,你不适合用嵌入式linux,嵌入式linux不是这样用的.各位可以去看看那些嵌入式linux高级用户,他们是怎样操作的.通常他们都是在X上开一个xterm或者rxvt终端,80%以上的操作都在这个终端下用命令完成,因为 嵌入式linux的命令行十分强大,速度也十分快,简单的几个命令的组合就能完成非常复杂的操作.举一个例子:嵌入式linux的常用命令find,去看看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会了就对他爱不释手.他的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和 grep命令,那么他能完成非常复杂的操作,如果同样的操作你用图形界面的工具来完成,恐怕要多花十几陪的时间.因此嵌入式linux高手经常会说:如果没有 find和grep我们还怎么活.但是现在大部分的嵌入式linux初级用户受到windows影响都喜欢用图形界面的工具来完成一些基本的操作,我并不是说图形界面不好.只是由于嵌入式linux和windows设计思想的不同他们的操作方式也有很大不同.在windows下用图形界面操作会比敲命令快,但是 嵌入式linux是一个命令行组成的操作系统,他的精髓在命令行! 无论图形界面发展到什么水平这个原理是不会变的!
7,入门以后多学命令
当你看完了一两本入门书籍后就应该扩充自己的知识,多学习嵌入式linux命令,但是不要在初学阶段就系统的学习嵌入式linux命令,初学阶段只要学会书上提到过的命令就可以了.单靠学习各种命令而成为高手是不可能的,但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的.
在嵌入式linux中学习命令的最好办法是学习bash脚本编程.bash脚本比起其他语言来学习简单,但是功能却十分强大.通过学习bash编程,能让你掌握大量的嵌入式linux命令.另外,买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比察man文档快.特别适合英语不好,看不懂man文档的人.
在嵌入式linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.比如ls,rm,rmdir,cp,cd,mv,cat 等等.这样的基本命令大约有200个,这些命令是一定要掌握的,我买了一本< redhat 7 指令参考手册>这本书非常好,他根据命令的常用指数分类,标明3颗星的为最常用命令,一定要掌握,两颗星的其次,1颗星的只要知道一下就可以了虽然现在都已经FC3了,但是经典的UNIX基本命令几十年来都没有变过!另外有些命令是嵌入式linux特有的或者是某一个应用程序的可执行文件比如xmms播放器.这些只要知道就可以了,不知道也无所谓.有些命令比较少用,因此通常都记不住他的用法,对于这些命令至少要知道有这个命令,脑子里有印象,需要用的时候察一下手册就可以了,但是决不能不知道这个命令的存在!
8,学会管理系统
等到有了基本知识,也掌握了一定量的命令用法后,就可以进一步学习管理系统.这些内容入门书上会有,但是不会很深入.要深入的学习系统管理,就要去买一本类似 之类的书.认真的看书并做实验,可以让你很快的进步.学习配置各种网络服务器,用嵌入式linux搭建网络,这些都是学习嵌入式linux系统管理和网络管理的好方法. 到了这个阶段就可以经常上网察察资料,看发布软件的官方网站文档和FAQ,看看论坛精华区文章.但是不能本末倒置,多看书还是根本.书籍和官方文档可以让你系统的学习,但是论坛可以让你学到一些小知识,小技巧.我本人也经常到论坛上来看看,因为即便是一个新手,也可能会发现一些你所不知道的小技巧,看论坛可以学到这些小技巧.但是我看文档和看论坛的时间比不会小于4:1 . 可以把平时积累的问题一次在论坛上发问. 但是初学的时候不要频繁上论坛,因为你要问的问题都在书上写着,耐心一点,你很快就能看到了.
9,了结系统结构
等你有了一定的系统管理知识,知道了/etc下那些配置文件有什么用,知道了一般的网络服务器如何配置后,就可以去了解系统结构了. 了解系统结构不是要你去看什么文件夹放什么内容,而是要学习一些原理性的东西.比如系统是如何引导的,引导后启动了那些东西.系统中哪些是最基本的库文件,有什么用等等.学习系统结构的最好方法是自己做一个嵌入式linux系统,再也没有什么能比自己做一个嵌入式linux系统更能学习系统结构的了.LFS(嵌入式linuxfromstrach)可以教你从源代码自己编译一个系统.通过自己编译一个系统,你就可以了结嵌入式linux系统结构,知道哪些文件是干什么用的,以及他们如何协调工作.当然,在你达到LFS水平之前还有很多事情要做,比如学会如何编译安装源代码发布的软件和编译新的内核等等.到了LFS水平,那么在大多数 嵌入式linux论坛上你就可以被人称作"高手"了!到了这个地步,就相当于一撞大楼已经基本建好,但是还需要粉刷和装修,真正的细活还在后面!
永远记住天外有天,人外有人的道理.即便有了LFS水平,在那些搞嵌入式linux系统开发,通读过嵌入式linux内核代码的人看来你还是一个菜鸟.因此, 请时刻保持虚心的态度.即便是在 论坛上只有一颗星级别的人,也有可能是一个潜在的,真正的高手! 大多数真正的高手平时都在搞研发工作,哪里有时间上论坛啊! 倒是有很多大学还没毕业的学生,整天混在论坛上.
10,学习专业课程
如果你不是计算机专业的,而想把嵌入式linux学好,就一定要学习专业课程.学习微机原理,操作系统,计算机网络等等专业课程是必需的.为什么同时开始学习 嵌入式linux,有些人学的非常快,不到半年就成了高手,有些人玩来玩去还玩不出名堂,玩了一两年还是菜鸟? 因为那些学得快的人有基础,他们都学过专业课程.同样一篇文档,没有基础的人可能看了三遍还不明白,基础扎实的眼睛扫两下就懂了! 这就是专业和非专业的差别! 因此,要想达到更高的境界就一定要学习基础的专业课程.
11,保持虚心学习的态度
我想再重复一遍天外有天,人外有人的道理!
保持虚心的学习态度不仅能让你学到更多知识,而且会让你受人尊重.
在嵌入式linux 的世界里,如果你想靠混论坛,发水贴,换几颗星星增加一下级别,然后再面对菜鸟说几句牛哄哄的话来赢得别人的尊重是不可能的.即便是一个刚入门的菜鸟,也能分辨你回答问题的质量,从而知道你到底有多少水平. 另外,当你成了"高手"的时候,你也能从"菜鸟"那里学到很多知识.因为有很多问题是你从来没有想过的,认为自己肯定会的,但是实际遇到的时候会有困难. 而"菜鸟"们往往更善于发现这类问题.这就是中国人常说的"教学相长"!
在嵌入式linux的世界里,越是水平高的人越谦虚,因为他们知道自己还有很多不知道的,而那些半瓶水就想晃荡的人反而自以为是,因为他们还不知道自己还有很多不知道的! 大家也可以去看看嵌入式开发和UNIX版块的牛人分享,他们很多都是有过好几年嵌入式linux方面的工作经验,精通嵌入式linux和unix的好手,但是每个人都保持着非常谦逊的态度,这些人是值得尊敬的!
想要了解更多的嵌入式知识那就加入我们吧!
信盈达从事嵌入式教育十多年,积累了丰富的实战教学项目,比如:四轴飞行器、机械手臂、17自由度运动机器人、MCU环境检测,智能可穿戴、智能家居等。此外,信盈达2018嵌入式课程全面升级,新添加RK3399(A53+A72)教学平台学习内容,该平台广泛适用于AR设备、VA设备、3D设备、智能机器人、人脸识别、一体机、 庭影音、集群服务器、智能交互、车载设备、医疗行业、电视盒子等。