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初学者在收到我们的开发板后,恨不得一口气就把所有的实验都做完,这样的做法我们坚决反对。由于初学者盲目下手做实验,可能很多实验都做不出正确的结果,甚至损坏开发板,因此我们建议初学者经过下面的几步来进行实验:
(1)收到开发板后请仔细检查所有配件是否齐全或损坏,若有问题,请及时联系我们;
(2)请认真阅读配套光盘中的“ARMSKY-LPC213X_214X教学实验开发板使用手册.pdf”文档,熟悉开发板的硬件资源;
(3)请认真阅读配套光盘中的“如何在ARMSKY-LPC213X_214X教学实验开发板上运行第一个实验程序.pdf”文档,以便在开发板上进行第一个实验。
经过以上三步,用户就应该能够在开发板上做出第一个实验了。接下来,用户可以依次将所有配套实验做一遍,看看都会出现哪些实验效果。
5.如何做好每一个配套实验,达到最好的学习效果?
开发板配套了60多个实验,几乎涵盖了213X/214X系列芯片的所有内部功能器件的使用。初学者如何充分利用这些配套实验进行学习,对于是否能真正掌 握ARM嵌入式开发起着决定性作用。然而,很多初学者对这一点认识不足,很多都是把这些实验在开发板上做一遍就认为已经掌握了ARM开发,其实不然,只把 这些实验在开发板上做一遍,顶多算是对实验结果进行了验证,根本没有达到掌握ARM开发的目的。因此,我们建议初学者按下面的步骤进行实验:
(1)将配套实验先在开发板上运行一遍,观察实验结果;
(2)仔细分析实验代码,至少需要结合以下两部分资料:
A. ARMSKY-LPC213X_214X教学实验开发板原理图.pdf(在配套光盘的“用户使用手册”文件夹中);
B. LPC213x User Manual.pdf或LPC214x User Manual.pdf(在配套光盘的“用户使用手册”文件夹中);
LPC213X/214X的每个内部功能器件都和一组特定的寄存器相关,要想完成该功能器件所能实现的功能,就必须对这些相关的寄存器进行设置,这些寄存 器的详细说明,用户可以在LPC213x User Manual.pdf或LPC214x User Manual.pdf中查看。
(3)自己将实验代码重新写一遍(一个字一个字的敲入计算机,请一定不要复制我们提供的现成代码),然后在ADS1.2下进行调试;
(4)看看是否可以用另外的方法实现实验所要达到的效果,如果可以,可自己编写代码进行调试。
经过以上四步的练习,相信初学者可以很好的掌握LPC213X/214X片内功能器件的使用,对ARM开发流程也有了比较深刻的体会。
6.学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嵌入式系统开发。
7.如何检验学习成果
在经过一段时间的学习后,初学者一定想知道自己达到了一个怎样的程度,我们给初学者提供一个检查自己学习效果的方法:可以仿照我们的开发板,自己做一款类似的开发板出来。当然,没有必要完全按照我们的设计,您可以在自己设计的开发板中加入更多的功能,配套更多的实验。
8.充分利用网络资源,不耻下问!
我们已经进入了信息大爆炸的时代,很多知识都可以通过网络及时地获得。在学习的过程中遇到困难时,可以通过网络获得帮助,只要我们虚心好学,不耻下问(当然要注意在网络上寻求别人帮助的方式方法),一定会得到很多好心人的帮助,使自己每天都有所提高。
9.知识是永远学不完的——学海无涯、人生苦短
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使 初学者迷失方向,进而忽视对基础知识的深入学习,到头来说得头头是道,可真的干起来却离实际的需求差得太远。知识是永远也学不完的——学海无涯、人生苦 短!我们学习的目的是为了满足应用的需求。只要方法得当,掌握ARM嵌入式开发应用技术其实并不难。
10.知识改变命运——学好ARM就有机会,只要努力终将成功!
相信ARM初学者已经通过各方面的信息(尤其是因特网)对ARM或多或少有所了解。那么,看看您是否对以下我们所提出的概念有所了解:
(1)“ARM”到底指的是什么?(是一家公司?是一款芯片?是一种技术?)
(2)ARM处理器芯片如何分类?
(3)目前有哪些芯片厂商生产ARM处理器芯片?
(4)目前国内应用比较多的ARM处理器芯片有哪些?它们主要应用于哪些领域?
以上四个问题,用户可以通过在网上查找资料很快得出答案。我们之所以只提出问题,不给出答案,是希望用户能够亲自去查阅相关信息和资料,因为这也是ARM 学习的一部分。我们希望用户能够与我们给出的学习建议进行一种互动,即我们提出问题,用户通过查找资料来找出答案,这样更有助于用户对知识的理解。
未必!我们身边的很多ARM初学者,一开始就抱着有关ARM体系结构的书籍开始苦读,更有甚者,在很多具体内容上钻牛角尖,把大量时间花在了ARM汇编指 令上,几个月下来,进展不大,虽然也能知道一些ARM的相关概念,但离真正的具体应用相差甚远,很多初学者会感觉到,学完ARM体系结构后,对ARM的应 用还是无从下手,一片茫然,有的甚至就因为这个原因,被挡在了ARM嵌入式开发领域的大门外,从此放弃了ARM嵌入式开发的学习。
请用户不要误解,我们并不是主张用户不看ARM体系结构的相关书籍,关键在于怎么看、看到什么程度。根据我们的经验,ARM初学者对于ARM体系结构的相 关知识只需做到“了解”这一程度就可以了,对于ARM的汇编指令完全可以不用记忆,只要能看懂就可以(目前大部分基于ARM的产品开发都采用C语言,汇编 语言的使用机会大大减少,只有在操作系统移植以及某些特殊应用中才会用到部分汇编指令)。随着初学者对ARM更深入地学习,有关ARM体系结构与汇编指令 的知识以后可能会反复出现,遇到时再有针对性的重点看,相信会取得比较好的效果。
注意:有关ARM体系结构的文档请用户参看配套光盘“用户使用手册”文件夹中的“ARM7TDMI_en.pdf”文件,该文档为ARM公司的官方技术手册,虽然是英文版,但我们建议初学者一开始就养成查看英文手册的习惯,因为很多翻译的资料并不能保证完全翻译正确。
如果初学者对英文确实感到头痛,那也可以找几本ARM体系结构相关书籍来看,北京航空航天大学出版社出版了多本比较不错的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月第一版。
由于对ARM的神秘感以及初学者的好奇心理,很多ARM初学者在收到我们的开发板后,恨不得一口气就把所有的实验都做完,这样的做法我们坚决反对。由于初学者盲目下手做实验,可能很多实验都做不出正确的结果,甚至损坏开发板,因此我们建议初学者经过下面的几步来进行实验:
(1)收到开发板后请仔细检查所有配件是否齐全或损坏,若有问题,请及时联系我们;
(2)请认真阅读配套光盘中的“ARMSKY-LPC213X_214X教学实验开发板使用手册.pdf”文档,熟悉开发板的硬件资源;
(3)请认真阅读配套光盘中的“如何在ARMSKY-LPC213X_214X教学实验开发板上运行第一个实验程序.pdf”文档,以便在开发板上进行第一个实验。
经过以上三步,用户就应该能够在开发板上做出第一个实验了。接下来,用户可以依次将所有配套实验做一遍,看看都会出现哪些实验效果。
开发板配套了60多个实验,几乎涵盖了213X/214X系列芯片的所有内部功能器件的使用。初学者如何充分利用这些配套实验进行学习,对于是否能真正掌 握ARM嵌入式开发起着决定性作用。然而,很多初学者对这一点认识不足,很多都是把这些实验在开发板上做一遍就认为已经掌握了ARM开发,其实不然,只把 这些实验在开发板上做一遍,顶多算是对实验结果进行了验证,根本没有达到掌握ARM开发的目的。因此,我们建议初学者按下面的步骤进行实验:
(1)将配套实验先在开发板上运行一遍,观察实验结果;
(2)仔细分析实验代码,至少需要结合以下两部分资料:
A. ARMSKY-LPC213X_214X教学实验开发板原理图.pdf(在配套光盘的“用户使用手册”文件夹中);
B. LPC213x User Manual.pdf或LPC214x User Manual.pdf(在配套光盘的“用户使用手册”文件夹中);
LPC213X/214X的每个内部功能器件都和一组特定的寄存器相关,要想完成该功能器件所能实现的功能,就必须对这些相关的寄存器进行设置,这些寄存 器的详细说明,用户可以在LPC213x User Manual.pdf或LPC214x User Manual.pdf中查看。
(3)自己将实验代码重新写一遍(一个字一个字的敲入计算机,请一定不要复制我们提供的现成代码),然后在ADS1.2下进行调试;
(4)看看是否可以用另外的方法实现实验所要达到的效果,如果可以,可自己编写代码进行调试。
经过以上四步的练习,相信初学者可以很好的掌握LPC213X/214X片内功能器件的使用,对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嵌入式系统开发。
在经过一段时间的学习后,初学者一定想知道自己达到了一个怎样的程度,我们给初学者提供一个检查自己学习效果的方法:可以仿照我们的开发板,自己做一款类似的开发板出来。当然,没有必要完全按照我们的设计,您可以在自己设计的开发板中加入更多的功能,配套更多的实验。
我们已经进入了信息大爆炸的时代,很多知识都可以通过网络及时地获得。在学习的过程中遇到困难时,可以通过网络获得帮助,只要我们虚心好学,不耻下问(当然要注意在网络上寻求别人帮助的方式方法),一定会得到很多好心人的帮助,使自己每天都有所提高。
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使 初学者迷失方向,进而忽视对基础知识的深入学习,到头来说得头头是道,可真的干起来却离实际的需求差得太远。知识是永远也学不完的——学海无涯、人生苦 短!我们学习的目的是为了满足应用的需求。只要方法得当,掌握ARM嵌入式开发应用技术其实并不难。