ARM学习流程
资料来源:网络
一:熟悉环境
首先仔细阅读开发板使用手册,依据手册进行环境的搭建和实验。 (所在目录 光盘\TQ2440_CD\TQ2440开发板配套教材集\TQ2440开发板使用手册V2.5_20100611.pdf)
开发板使用手册里对板子的软硬件进行了概要的介绍,对开发环境的搭建,操作系统影像的烧录,应用程序的烧写仿真等都做了详细的描述。这些都是ARM初学者学习ARM开发的第一步,也是十分重要的一步。所以手册一定要好好阅读,只有对板子了解清楚了,对开发环境熟悉了以后的学习才能顺利进行。
二、 裸奔三部曲
不管是搞上层还是底层,对硬件的底层控制有一定的了解都是十分有必要的。如果准备往底层、 驱动方面发展,那更是应该深入研究裸奔的程序,因为驱动程序是直接跟硬件打交道的,驱动程序的主要代码是实现硬件控制,然后跟操作系统有个接口就可以了。对于将来想往上层应用发展不想做驱动的用户,对这部分可简要的看一下,了解个大概,不要浪费太多的时间。
三、 操作系统移植
对于这部分,也是建议大家简单看下,不要过深的研究(实在有兴趣的除外)。操作系统的移植一般只在开发的初级阶段,当你到一个公司的时候,他们的嵌入式操作系统都是移植好的,不需要移植。你最有可能的是修改驱动,或做上层应用,所以嵌入式真正的要学的是驱动和应用程序的编写。多下功夫在驱动或操作系统下的应用程序编写,对将来的工作帮助会更大。
四、 WINCE 还是 LINUX
很多用户会问,到底选择哪个,其实任何一个都可以的。关键是要学习深入和透彻。WINCE编程,类似VC很方便和快捷,但是不开源,其应用受到一定的限制。linux编程会麻烦一些,整天跟命令打交道。怎么选择看自己的爱好了,VC学的得好的,可以选WICE会比较容易上手。linux 学习难度会大一些,并且总是和命令打交道有的人可能不习惯,但是应用会广些。总之不管选哪种,
只要认真的学习,学好了,都是前途一片光明的。
五、 驱动还是上层应用
驱动靠近底层硬件,喜欢摆弄硬件,对硬件了解多的人建议选择这个,有点枯燥,一天到晚做的工作就是,读数据,拷贝数据,送给应用程序,怪无聊的,不过这方面的应用真的很多,想想吧现在那个公司做产品不是首先从底层开始的。上层应用有趣些,实现的都是“功能”,还能做出漂亮的界面,不过牵涉的知识也多,因为上层应用,需要好多方面才能工作,比如网络,数据库,图像
处理,这种文件,那种文件,这协议,那格式的,有时候搞的头都痛,是比驱动要复杂一些的。不过只要功夫深,铁杵都能磨成针,滴水还能穿石呢,等你学了几年以后,你再回过头来看看,这些东西不算什么,不算什么...
六、 正真的开始
这里要说的是很重要的一点。也是好多买板子的用户的一个误区,就是以为建了环境,跑了裸奔,弄了几下linux,看了两个应用程序,学习就算结束了。其实大错特错了,这时候,学习才真正刚刚开始。
因为前边你的工作其实都是在准备,熟悉板子,建立开发环境,熟悉开发环境等,等这些都弄好了之后,如果你就跑了几个现成写好的程序,一看没问题就OK了,那其实你什么也没有学到。因为正真有用的东西是,你针对一个应用用你所学的知识能找到一个合适的解决办法,将来你工作的时候就是根据企业的需要来想办法解决问题的,到那时候根本没有现在写好的代码的。所以,学到这个阶段是一定要自己动手,做一个真实的应用出来,把嵌入式开发的流程走一遍,从硬件的分析,相关资料的搜索,阅读,程序的组织,调试,修改BUG等等,中间你会遇到很多很多的问题,当你把这些问题都一一解决,真正做好一个应用的时候,你的水平才算真正上了一个台阶。这个时候,你就算入门了,因为你会开发了。 但是你做应用会相当慢,因为中间遇到的很多问题你解决起来会很慢,没有多少经验可以参考,好多知识还不懂或不清楚,这可能会导致你遇到的问题都是新问题,所以有时候解决一个问题都要好久。怎么办呢?答案只有一个,继续做应用,到你做了很多以后,好多东西都明白了,再弄起来就快多了,这时候你就是熟练了,升了一个级别。然后继续做应用…..所以学习的路,很长,大家不要止步。这样说也许大家会觉得很累,总是学习学到什么时候呢,其实不然,很有趣的,因为当你发现你由一个阶段到另一个阶段时候,你那种成就感,一下子觉得自己不再是菜鸟了,心里会充实的多,并且最重要的一点,拿的薪水由一个阶段到另一个阶段跳变的时候也是惊心动魄的,一下子就有可能翻番的 :) 。
你想如果你在学校时候就可以做个应用,那你直接就是上升了一个阶段了,心里的底气也足了,因为面视的人往往会问,我想让做个什么什么应用,你觉得你能做吗,如果你做过一个完整的应用,熟悉流程,你就会信心十足的回答他,你能。这样找工作好找,并且你比别人占得了一个先机,等他们弄了一段时间到你的水平的时候,你就又升级了,感觉又要上一个台阶,薪水也要跟着…..
这里啰嗦的有点多,主要是想大家学习能深入进去,不要浅尝辄止,只有这样才能真正学到有用的东西,才能使这块开发板买的有价值。
关于要做点什么应用,建议从简单的开始,比如从控制个灯开始,控制蜂鸣器,控制一些串口应用的器件,比如温度传感器,红外传感器,AD芯片等,然后再到稍微复杂点的,步进电机,射频读卡器,然后再到更复杂的,无线网卡,GPS定位模块等等。。。总之你会发现,每做好一个东西,你自己就会觉得你的水平上升了一大截。
七、 C语言到底有多重要
C语言到底有多重要呢,答案是非常非常的重要。这里我说一下我的亲身经历大家就明白了,我做软件工作这么多年的经历,只要有面视,几乎每次都有C语言的试题给你做。为什么呢?这就是因为企业都知道对于做软件的来说,C语言就是一个基础,基础不行,其他一切都是空谈。就像一个人能干这个,能干那个,但是他路都走不稳,谁会愿意用他呢? 所以建议大家在学校的时候,把C语言的基础一定学扎实。Linux的开发大多是C,或C++,WINCE类似VC ,对于这些C都是基础,如果C学不好将来再弄这些,你会觉得举步维艰。
八、 总结:
好多用户买了板子不知道从那儿下手,或是不知道学习是怎么一个流程,感到很迷忙,所以我才写了这个文档给大家。都是自己的一点拙见,中间也有可能有说的不对的地方,欢迎大家来批评指正,或是一起共同探讨吧。