菜鸟学arm之方法入门篇(基于arm7内核)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
by:爱雪胡
想必有很多同学都有这样的经历,学过了51单片机之后,想要学习ARM,但又无从下手,关于ARM的学习视频或资料又没有51的那样好理解,结果花了好长时间也不得其法。
我也曾是一个初学者,也是从这个过程走过来的,对其中的困难深有感触,闲来无事,把自己的学习过程及心得体会记录成文,希望能对处在纠结中的孩纸有点帮助。
ps:我不是大神,本人菜鸟一个,如有疏漏,还望不吝赐教qq:1906723068
首先说一下我用的芯片,是LPC2103,ARM7内核的,相信很多人也用过,ARM9比较高端,目前还没有学完。
个人感觉ARM7还是作为单片机使用比较好,不适合用它来跑系统,因为它主频不够高(能提到60多M貌似),我就是把它单纯作为一个32位的单片机来使用的。
ARM7与51的最大区别首先是CPU位数不一样,这个应该好理解一个是32位单片机,一个是8位单片机,性能上当然前者更好点了,速度更快、功耗更小、外设更多,价格差距也越来越小。
一般用的51单片机多为STC89C52或其同类产品如图所示:
51的外设一般比较少,以上图为例只有UART,定时器资源,其他功能基本需要另加元件,比如AD芯片、DA芯片、有些功能还只能靠软件模拟,如SPI接口,IIC接口,PWM等,在简单的控制系统中51是非常厉害的,但是在一些复杂控制并且对体积功耗等要求严格的系统中,51就力不从心了,这时ARM7就非常好用了,它速度快,体积小(LPC2103的面积还不到1平方厘米),外设多(集成有2个UART,1个SPI,2个IIC,1个SSP,2个定时器,PWM,AD,RTC等)这样就非常方便好用。
最开始学习ARM我们最希望弄明白的就是怎么去操作它,具体来说就是我买一个学习板,怎么把程序下载到芯片里边并让程序跑起来,这和我们学51时点亮第一盏等的想法是一样的。
这就要求知道3点:
1.编程,即使用什么软件去编程序;
2.烧程序,即使用什么烧录程序软件;
3.怎么烧,是用串口ISP下载还是使用JLINK烧录
对这3个问题我一一解答。
1.编程序,一般使用IAR或ADS或Keil,如果想很快上手建议使用IAR,不过我用了一段时间之后感觉并不好
用,界面不好看而且对其中的一些配置文件不是很明了。
Keil听说不错,不过没有用过不敢妄下评论,个人感觉还是ADS比较好用,虽然它的启动代码和配置文件比较复杂,但是比较明了,可以在网上下一份周立功的LPC2131工程模板,里边的各个配置文件的解释非常清楚,这样可以对程序的运行过程理解得更深刻。
2.烧程序,这个不同的芯片不一样,我的用的是NXP公司的flashmagic软件,这个根据不同的开发板具体去选择。
3.怎么烧,一般买arm的开发板时卖家会问你电脑有没有并口,当然现在的电脑基本都没有并口就是串口也很少有,这时他会说调试程序需要并口才行,会给你说让你顺便买他的JLINK仿真器,如下图所示
这个仿真器一般都卖七八十,有的卖100多块大洋,但其实它用处并不是很大,它是用来对arm进行硬件仿真用的,平时我们对51程序进行仿真都是软件仿真,这个玩意儿就是把软件仿真的结果同步输出到开发板上,等于是在板子上可以一步一步地调试程序。
我们学习时一般不会编制非常复杂的程序,基本上编制好就烧进芯片里让它上电运行就可以了,大不了再烧一遍。
所以如果只是一般学习的话就不要
买这个仿真器了。
那程序怎么烧进芯片里呢,ARM7提供了一种ISP 下载功能,也就是和51烧程序一样,用一根串口线和学习板的UART 口相连即可,用的串口线也和51是一样的也是USB转RS232线,不过对ARM7来说,它不会自动进行ISP下载,需要先按下复位不放,然后让P0.14脚接低电平再松开复位,最后松开P0.14(这是对LPC2103来说,不同arm可能略有差异,不过大同小异),这样就可以像给51烧程序一样给arm烧程序了。
至于编程语言,当然是C了,汇编了解一些即可,不需要非常明白(反正我是很多理解不了)。
学习51我们都有一个感受,就是对sfr操作比较多,其实51的一些复杂功能就是通过对这些特殊功能寄存器进行配置赋值以达到不同目的的,arm也是一样,只是这些负责不同外设功能的sfr(暂且这样叫吧)更多,关系更复杂,但其核心思想是不变的,理解了这一点,你的arm7就基本会了一半了,剩下的就是实践与再实践了。
下边说一下arm7的一些常识,我们都知道51的存储器结构式哈佛结构,也就是它存储程序和存储数据的空间是分开的,有不同的指令分别对程序和数据进行操作,而arm7的存储结构是冯诺依曼结构,即数据和程序不分开,这和PC机是一致的。
还有存储单元,在arm 中,字的长度是32位,半字的长度是16位,字节的长度是8位。
还有arm7的时钟问题,芯片内部的时钟不是完全一样的,像内核与外设之间的时钟频率就可以设置成不同值,这个是通过芯片内部的倍频电路实现的,也就是所谓的锁相环(PLL),这个后边具体说。
总之,学习arm7,就可以把它当做一个32位的单片机来学习,等自己可以随心所欲地操作它的各个硬件并对其工作原理理解深刻以后,可以继续学习更高档的微处理器或在上边跑操作系统。
这章就到此未知,简要介绍了一些关于arm7的基本常识。