新手学习arm的建议
如果您是ARM初学者或者以前是51单片机应用开发工程师,想快速进入32位ARM嵌入式开发领域,建议您阅读本文档。本文档是我们结合多年ARM开发经验,针对初学者对ARM嵌入式开发中存在的各种疑问,结合海同嵌入式教育(www.iotek.com.cn)学员和老师多年的学习教学实践而总结的一些经验,相信您按照我们的学习建议,加上您的努力与坚持,很快就可以进入32位嵌入式开发领域,因为我们自己就是这样一步一步走过来的。
注意:我们所给出的学习建议并不一定完全适用于每一个ARM初学者,本文档仅作为用户的学习参考。
1.初识ARM
相信ARM初学者已经通过各方面的信息(尤其是因特网)对ARM或多或少有所了解。那么,看看您是否对以下我们所提出的概念有所了解:
(1)“ARM”到底指的是什么?(是一家公司?是一款芯片?是一种技术?)
(2)ARM处理器芯片如何分类?
(3)目前有哪些芯片厂商生产ARM处理器芯片?
(4)目前国内应用比较多的ARM处理器芯片有哪些?它们主要应用于哪些领域?
以上四个问题,用户可以通过在网上查找资料很快得出答案。我们之所以只提出问题,不给出答案,是希望用户能够亲自去查阅相关信息和资料,因为这也是ARM学习的一部分。我们希望用户能够与我们给出的学习建议进行一种互动,即我们提出问题,用户通过查找资料来找出答案,这样更有助于用户对知识的理解。
2.一开始就必须掌握ARM体系结构与汇编指令?
未必!我们身边的很多ARM初学者,一开始就抱着有关ARM体系结构的书籍开始苦读,更有甚者,在很多具体内容上钻牛角尖,把大量时间花在了ARM汇编指令上,几个月下来,进展不大,虽然也能知道一些ARM的相关概念,但离真正的具体应用相差甚远,很多初学者会感觉到,学完ARM体系结构后,对ARM的应用还是无从下手,一片茫然,有的甚至就因为这个原因,被挡在了ARM嵌入式开发领域的大门外,从此放弃了ARM嵌入式开发的学习。
请用户不要误解,我们并不是主张用户不看ARM体系结构的相关书籍,关键在于怎么看、看到什么程度。根据我们的经验,ARM初学者对于ARM体系结构的相关知识只需做到“了解”这一程度就可以了,对于ARM的汇编指令完全可以不用记忆,只要能看懂就可以(目前大部分基于ARM的产品开发都采用C语言,汇编语言的使用机会大大减少,只有在操作系统移植以及某些特殊应用中才会用到部分汇编指令)。随着初学者对ARM更深入地学习,有关ARM体系结构与汇编指令的知识以后可能会反复出现,遇到时再有针对性的重点看,相信会取得比较好的效果。
注意:有关ARM体系结构的文档请用户参看配套光盘“用户使用手册”文件夹中的“ARM7TDMI_en.pdf”文件,该文档为ARM公司的官方技术手册,虽然是英文版,但我们建议初学者一开始就养成查看英文手册的习惯,因为很多翻译的资料并不能保证完全翻译正确。
如果初学者对英文确实感到头痛,那也可以找几本ARM体系结构相关书籍来看,北京航空航天大学出版社出版了多本比较不错的ARM相关书籍,用户可以参考。
3.选择ARM的软件集成开发环境
目前,流行的ARM软件集成开发环境有ADS1.2、Keil uV3和IAR等。对于51单片机应用开发工程师来说,Keil开发环境应该应用得比较熟练,若采用Keil uV3进行ARM软件开发,应该可以快速上手。但是,我们并不推荐ARM初学者选择Keil uV3进行ARM软件开发,主要是基于以下2个原因:
(1)Keil uV3是第三方ARM软件集成开发环境,目前支持的ARM芯片种类还不多,所带的编译器也并不完善;
(2)由于Keil uV3为了方便用户的开发,提供了现成的ARM启动文件,换句话说,它屏蔽了ARM开发中的一个重要内容——启动代码的编写,而这一点对初学者来说应该是非常重要的内容。
IAR目前国内应用的人还不多,相关资料也不是很多,所以我们也不推荐初学者使用。
ADS1.2集成开发环境是ARM公司推出的ARM核微控制器集成开发工具。它支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C、C++源程序;具有编译效率高、系统库功能强等特点;可以在Windows 98、Windows 2000、Windows XP以及RedHat Linux上运行。
本开发板配套的所有实验都是采用Wiggler板+H-JTAG调试代理软件,在ADS1.2集成开发环境下进行编写及调试的,非常方便。
基于以上原因,我们推荐ARM初学者使用ADS1.2集成开发环境进行ARM开发。关于ADS1.2集成开发环境的使用,初学者可以参看ADS1.2集成开发环境自带的用户手册。另外,向ARM初学者推荐一本关于ADS1.2集成开发环境使用的好书——ARM开发工具ADS原理与应用 赵星寒 刘涛著 北京航空航天大学出版社 2006年2月第一版。
4.学ARM必搞嵌入式操作系统?
很多ARM初学者有一个错误的概念——学ARM必搞嵌入式操作系统。认为在ARM上跑嵌入式操作系统就代表技术先进、产品档次高的观点绝对是谬论。持这种观点的人一定是没有做过具体的产品开发。一个嵌入式产品是否需要跑嵌入式操作系统,是由很多因素决定的,例如,产品的功能需求、开发成本、开发周期等都是需要综合考虑的。
对于ARM初学者来说,前期我们并不建议使用嵌入式操作系统。当用户把所有配套实验都熟练掌握后,即对LPC213X/214X的内部功能器件可以做到熟练应用的程度后,可以考虑学习一个具体的嵌入式操作系统。
目前,流行的嵌入式操作系统非常多,例如,uC/OS-II、WinCe、Linux、VxWorks等。对于初学者,我们慎重地推荐源码公开的uC/OS-II嵌入式操作系统。uC/OS-II已经有很多产品成功使用的案例且得到了美国航空管理局的认证,北京航空航天大学出版社也出版了配套的专著。国内熟悉这个嵌入式操作系统的开发人员特别多,十分容易通过网站上的讨论社区得到帮助,更关键的是,初学者可以很容易地通过阅读源码达到彻底掌握嵌入式操作系统的目的。在熟练掌握了uC/OS-II后,用户已经从ARM初学者进入到了ARM应用开发工程师的行列。下一步可根据自己的知识背景、兴趣爱好和开发领域,再选择一个嵌入式操作系统(例如WinCE、Linux或VxWorks等)进行学习,彻底掌握ARM嵌入式系统开发。
5.如何检验学习成果
在经过一段时间的学习后,初学者一定想知道自己达到了一个怎样的程度,我们给初学者提供一个检查自己学习效果的方法:可以仿照我们的开发板,自己做一款类似的开发板出来。当然,没有必要完全按照我们的设计,您可以在自己设计的开发板中加入更多的功能,配套更多的实验。
6.充分利用网络资源,不耻下问!
我们已经进入了信息大爆炸的时代,很多知识都可以通过网络及时地获得。在学习的过程中遇到困难时,可以通过网络获得帮助,只要我们虚心好学,不耻下问(当然要注意在网络上寻求别人帮助的方式方法),一定会得到很多好心人的帮助,使自己每天都有所提高。
7.知识是永远学不完的——学海无涯、人生苦短
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基础知识的深入学习,到头来说得头头是道,可真的干起来却离实际的需求差得太远。知识是永远也学不完的——学海无涯、人生苦短!我们学习的目的是为了满足应用的需求。只要方法得当,掌握ARM嵌入式开发应用技术其实并不难。
原文地址:【http://chen4013874.blog.163.com/blog/static/204243013201231792849382/】