看韦东山的视频有感
第一次接触老大的视频是在大一暑假,那个假期没有回家在学校实验室里面准备学习arm和linux,由于本人在高三暑假就自学了c语言,大一在我们学校acm练习了一年的编程,每天晚上刷竞赛题,白天自学51单片机(大一课程比较少,本人又几乎没有参加过活动)
在大一下学期用51单片机做了几个小项目,认为自己能力可以就上了arm和linux。
结果当时给了我迎头一棒,刚开始对linux一无所知,自己就买了一本鸟哥私房菜天天敲命令,大概这样的日子过了有两个星期学长告诉我让我看韦东山的视频和他出的书籍,然后果断买了,后来又买了一块开发板,按照韦老师的视频的步骤走,对整体有了一个大概的认识,可是我当时不会配置服务器,就这样学了两个月没有入门就放弃了。
第二次学习arm和linux是在我大二下学期,由于大一没有学会arm所以大二上学期就在学stm32,幸运的是stm32的库函数和linux应用很像,他的库函数就像linux的底层函数,我们写的就像应用程序,不需要考虑底层是怎么实现的,不过我把他们的底层函数的实现方式也看了一遍,对后来学习arm和linux打下了基础,其实stm32也是arm的一个系列的芯片,感觉它简单是因为它上面不跑linux。在第二次学习的时候我是在网上搜索了国嵌的视频和老大的视频结合着看的,对比可以发现国嵌的视频讲的太基础了,老大的视频含量很高,当时就特别崇拜老大,希望有一天能够和老大一样。
现在经过一年的努力,我把老大的第一期的视频看了三遍,裸机程序也跑了一遍,第二期视频看了两遍,期间看了linux内核设计与实现,linux设备驱动开发,linux设备驱动开发详解,以及linux应用程序详解,还有老大的嵌入式linux应用开发完全手册,说实话老大的书是适合入门,他书中的每一个部分都可以抽出一个方向进行深入的学习,例如arm裸机程序,内核移植,linux应用程序开发,linux驱动程序开发,qt开发。每一块都有很多东西要进行梳理和学习,不过不得不佩服老大真是全才中的专才,相当的厉害。视频的含金量也是非常高。
经过两年的基础学习和一年的深入学习在我的心里面对嵌入式linux有了清晰的认识,在这里也非常感谢老大的视频,希望老大的视频大卖(真心不错),一听说搞活动果断买了第三期的视频。
下面是我整理的我以前学习的阶段性的计划。
第一, 学习基本的裸机编程。
我当时是先学51单片机,后来学习stm32,最后学的是arm9,使用ADS去编程,第一个实验就是控制LED。对于学硬件的人而言,必须先对硬件的基本使用。我之前上去就学习linux结果到后来直接学不下去了又跑过去学习stm32,所以建议大家先学习arm的裸机编程,然后在接触linux会更好一点。在学习中要会用S3C2440中有AD转换器,有GPIO(通用IO口),还有NAND FLASH控制器这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?
第二动手搭建linux的服务器了。
我个人用的是crt,smb服务器等等。这一部分老大视频里面有讲大家可以跟着老大的视频走就行了。
第三移植内核到开发板。
移植包括三部分
三部分:uboot、linux kernel(linux内核)、rootfile(根文件系统)。
首先要明白那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。老大书里面讲的很详细,整理的也很好。
第四,研究linux应用程序的编写。
我先学习应用开发是因为应用开发相比驱动开发难度更小,而且要验证你的驱动程序是否达到预期的目标要用应用程序测试所以我先学习的是linux应用程序开发,我看的书是linux应用开发详解,不过大家都说apue挺好,不过太厚了,所以入门我没有看这个,不过进行深入学习这本书必不可少。
第五学习驱动程序开发
在这里就不得不说韦老师的第二期的视频了,老大的视频是基于2.6内核的,2.6内核和2.4内核差别很大,2.6内核对驱动程序做了统一的设备模型所以编写驱动的风格差别很大,补习班的视频大部分是用2.4的内核讲的,其实很不好,最好用2.6的,当时学习是啥也不懂,不过很幸运是跟着老大的视频学习的,学的是2.6版本的,这是我后来看《深入理解linux内核》才明白的道理。
经过大学三年的努力以及韦老师的帮助我已经叩开嵌入式的大门了,说一点题外话,如果不学arm和linux那么就只能做嵌入式的低端产品,没有前途,arm和linux是一道坎,只有做到这一块你的前景才能更上一层楼(个人观点)。 |