学习嵌入式Linux经验之谈-从菜鸟做起

2019-07-12 15:10发布

受朋友邀请,写下怎么样学习嵌入式Linux,本来我是不想写的,因为网上很多前辈的经验都是非常好的,而且写得非常好,自己不想班门弄斧,后来实在经不住朋友的盛情,故此简单地说下我的经验。 我想了好久,不知道怎么下笔,因为很多都是前辈说过的。后来跟一位师弟聊天,聊到嵌入式,他说网上有很多学习方法可找,但是都不是针对初学者的,自己刚开始学习的时候,觉得好难好难,找不到方向。我认真想了想,确实,嵌入式这个行业本来就起点高,需要非常广泛的计算机基础才能入门。于是我就想说说怎样从一名菜鸟,甚至计算机盲来说说学习嵌入式的方法。不过话又说回来,你的基础越差,学起来的时间就越长,不过学得好的话,你学习的速度是呈指数增长的。 我在上大学之前,很少接触计算机,甚至在高三填报志愿的时候,因为打字慢,每次都因为超时而提交不了,后来还是同学帮忙才搞好的。算是个计算机文盲了吧。大学时,我的专业是信息网络,一上大学就学习c++。说实话,那时候我根本就不懂计算机,连计算机是由什么组成的我都不知道,稀里糊涂地就学习一学期的c++,学完之后,除了会做简单的考试题外,其他的什么都不会。看到这里,你也许会笑,不过你不要笑,一个连内存是做什么的,cpu是做什么的,怎样工作的都不知道的人,怎么能搞清楚c++是什么东西,我当时只是知道程序这样写,点哪个键是编译,编译之后点哪个是运行,然后就运行了,我当时连编译时什么意思都不知道,更加不知道为什么要编译。自己最大的疑惑就是为什么这个和我看到的软件那么不一样,问老师,老师就说这个是简单的,好吧,这个问题一直困扰我,直到大三的时候才搞懂,因为人家有图形界面。反正大一一年就是懵懵懂懂的学了c++,然后就什么都没有了,第二学期就什么都忘记了。大二时,学了计算机组成原理,才搞懂内存是什么,为什么要用内存,cpu是怎么工作的,怎么识别指令,然后才明白为什么要编译,这个时候,才对计算机结构有个比较整体的认识,对编程语言有了入门级的见解。接着学习了操作系统原理,慢慢地就了解了整个计算机系统。对于这个经历,我觉得,每一个计算机专业的学生,在学习专业课之前,都应该有一位资深的讲师来讲授一门叫做《计算机体系结构》的课程。我觉得每一个计算机专业的学生,都应该了解计算机体系结构,不需要知道哪些是怎样实现的,只需要了解整一个体系结构,给人一个整体的了解,这对以后的学习是很有帮助的。 所以我提出的菜鸟首先得学习的就是计算机体系结构,一:了解计算机的历史,这个其实很重要,计算机到底是用来干嘛的,每一代的计算机有什么区别。二:学习计算机组成原理,了解各个硬件是怎样工作的,计算机是怎样识别指令的,这对你的编程思想有一定的影响,这些都是基础。特别是对嵌入式的人来说。三:了解一点汇编的知识。这也是菜鸟入门的重要的一环。 有了上面的基础的话,你接下来学习c语言,程序员是非常喜欢c语言的,因为c语言既有汇编的特性,可以直接操纵内存,又有高级语言的特性,让人容易看懂。很多人都说c语言难,其实不难,比起其他高级语言来说,c语言需要考虑的更多,但不代表他难学,起码比汇编容易多了。C语言是专门为操作系统而设计的语言,在系统编程方面几乎是用c语言。所以c语言一定要掌握。学习完c语言的时候,你就可以学习数据结构,数据结构对于算法来说是非常重要的,这个不好评价怎么样,但是在实际编程中,时时都会用到。 以上的都是基础,其实学习嵌入式来说,我个人本身是偏向带Linux系统的,所以我说的也是嵌入式Linux。学习嵌入式Linux,首先你得会使用Linux,不是在图形界面上使用linux,而是使用命令行使用Linux,Linux本身就是设计成用命令来操作的。这样的速度比较快,其实如果单纯是使用Linux,只需要掌握十几个命令就行了。关键是要使用,要去操作。这样才能熟练。当然,在此前提下,你要学会安装Linux,刚开始的时候可以用虚拟机安装Linux,这样其实跟在计算机上直接安装Linux没有多大的区别。 再熟悉完Linux的基本使用的时候,你应该学会一下简单shell编程,为什么呢?因为在学习Linux编程的时候,很大情况下会使用shell编程。这样使开发大大加快。同时对你理解Linux也有很大的帮助。学习完这些后,你要学会在Linux上搭建开发环境,怎样使用交叉编译器。因为程序在嵌入式设备上编译是不太现实的,需要使用pc机的强大编译功能来编译,但是编程的镜像是在嵌入式设备上运行的,而不是在pc机上运行的,所以需要交叉编译。这时可能有些同学会问:不是都是Linux吗,为什么在pc机上的Linux编译的Linux程序不能再嵌入式设备上使用。以前对于这个问题,我也想了好久才明白。当你学了计算机组成原理的时候,你就会明白,因为两者的cpu不一样,使用的机器编码也不一样。运行在两者的Linux虽然是用一种操作系统,但是两者的二进制是不一样的,其实你看到的在嵌入式设备上使用的程序,包括操作系统,都是交叉编译器编译的。这一点,在你学了嵌入式Linux之后,你就会有深刻的体会。至此,你算是入门了。 接下来你就学习怎样在Linux下编程就行了,这是一个比较漫长的过程,要有恒心,多看下别人的代码。多练习一下,买一块板,按照上面的文档熟悉一遍,这样的话,差不多你就可以参与开发了。 总之,首先你得对嵌入式有个系统了解,然后按部就班地学习,你就能摆脱菜鸟行列了。不过对于那些高手来说,我也还是菜鸟。不管怎么说,希望这个对大家有用。   Ps:Linux操作快速入门http://download.csdn.net/detail/zmdhz111/5873633