懒猫爱飞

初识ARM

0
阅读(1370)

         ARM是什么,胳膊,武器还是RAM写错了,貌似是,貌似也不是,专业一点说ARM是一家公司也是一种处理器,至于这家公司这里就不多说了,网上好像有好多关于它的传说,作为处理器,它的全称是Advanced RISC Machine,翻译成中国话来说就是高级精简指令集计算机,RISC全称是Reduced Instruction Set Computers,即精简指令集计算机,它相对于CISC即Complex Instruction Set Computers 来说的。不负责的来说ARM说是一个高级一点的单片机,但它比51要强多了,添加了不少功能,最主要的它还是32位的。那么学它有什么用呢?最基本的一方面同,它比51功能强大,所以做复杂系统时,不用再添其它器件;另一方面,它是做嵌入式系统的很好的处理器,至于它有多少优点,懒猫以前听说过不少,但真正没有体验过,所以这一点只有懒猫深入了以后才能真正感受到。懒猫学ARM只是为了深入学习嵌入式系统而打基础。嵌入式系统重在应用,它不仅仅是一门技术,技术的进步不是靠看两本书就能解决的,而是来自实践与应用需求,这同样适用于ARM。一切学习只有在实际需要时才能更深入,同样ARM学习一样需要多实践,在实际项目中才能体会到它的奇妙之处,好了,还是开始ARM之旅吧。。。

我用的编译器是RealView MDK-ARM Verxion 4.12,为什么要选它?有两个原因,一就是我以前学过51用的就是KEIL,二听说ARM已收购了KEIL,所以它对ARM支持的也会更好些,其它的原因还要在用的过程中体会到。有人说这个软件网上资料少的让人抓狂,还是用ADS1.2好。懒猫不这样认为,懒猫走上工作岗位学会的第一样东东就是怎样查资料,在学校时查芯片资料一直都是在百度或google上找个中文资料看,可能是错误的东东,自己也不会斟酌,可是懒猫工作后才发现很多东东是别人没用过的,也就是说只有看原版的英文手册才最可靠,还有就是用软件,懒猫在学校时最爱看中文教程,工作后,懒猫爱看软件自带的帮助文档,懒猫发现它才是最好的教程,所以现在懒猫不会的软件一般都会先看一下软件自带的帮助,有时也会去该软件的网站上转转,总会有新发现。嗯,有点扯远了,还是先建一个工程,学习一下怎么使用编译环境^_^

首先要先建一个工程,这与51时是一样的,如下图所示:

图1 新建工程


点击以后要,接下来就是找个位置保存新建的工程,如下图所示:

图2 保存新建的工程

保存以后就出现了选型表,我的开发板是S3C2440A所以我就选这个型号了,如下图:

 

 

 

 

 

 

 

 

图3 型号选型表

选完型号会出现一个对话框,问是否把该型号的startup代码拷贝到工程,并建文件夹,选是,当然也可以自己写startup文件,这里用系统自带的,如下图所示:

图4 是否拷贝startup文件对话框

做完这一步,工程基本建立完毕,如下图所示:

 

 

 

 

 

 

 

图5 工程建立完毕

其实这还不算真正的建立完成,还要加入源文件还要对所选ARM进行一定的设置才行。比如ROM起始地址,RAM起始地址什么的。为了工程看起来整洁有序,最好在工程目录下建几个文件夹,把源文件头文件什么的分开。如下图所示:

 

 

 

 

 

 

 

 

 

图6 将建好的源文件加入工程

把源文件加入工程以后,记得要配置一个ARM如下图所示:

 

 

 

 

 

 

 

 

 

 

 

图7  Target 配置页面

这里时钟频率可以随便设置,它只与仿真有关,下载到板子中与有实际的振荡频率有关。Os暂时选为none,ROM1 这里是只读存储器,我们不做调试就设置成nor flash 的地址,如果作为调试就务必设置成0x30000000,这里不用作调试,RAM1里边开始地址设置为SRAM的开始地址0x30000000 ,大小设置成64 兆,也就是0x4000000 ,其它有先不用设置,到学到时再慢慢理解与设置了。补充一下,怎么用keil配置startup文件,如下所示:

 

 

 

 

 

 

 

 

 

图8 配置startup文件

用这个配置向导设置启动文件很简单,只要在相就的项目上点击就可以设置,包括ARM有几种模式设置,堆栈设置,看门狗设置等,设置完毕保存一下就可以了,很方便。对于这些设置,懒猫还不是太清楚它是怎么用的,还需要好好研究一下。做完这些工作,就可以编译一下工程了,因为只是测试程序,所以很简单,程序如下:

/***********************************************************/

//文件名称:main.c

//功    能:主程序,主要就是学习用一下RealView MDK-ARM

//作    者:懒猫爱飞

//备    注:MCU -- S3C2440A    

//          开发环境-- RealView MDK-ARM Verxion 4.12

/*********************************************************/

#include <s3c2440.h>

 

 

/***********************************************************/

//函数名称:void delay(void)

//功    能:简单延时

//入口参数:NULL

//出口参数:1

//备    注:NULL  

/*********************************************************/

void delay(void)

{

              int i, j;

              for(i = 0; i < 10000; i ++)

                            for(j = 0; j < 50; j ++);

}

 

/***********************************************************/

//函数名称:int main(void)

//功    能:主函数

//入口参数:NULL

//出口参数:NULL

//备    注:NULL  

/*********************************************************/

int main(void)

{

 

              GPBCON = 0x155555;//配置protB的所有引脚为输出

             

              while(1)

              {

                            //点亮第一个小灯

                            GPBDAT |= 0x1E0;

                            GPBDAT &= 0x1C0;

                            delay();

                           

                            //点亮第二个小灯

                            GPBDAT |= 0x1E0;

                            GPBDAT &= 0x1A0;

                            delay();

                           

                            //点亮第三个小灯  

                            GPBDAT |= 0x1E0;

                            GPBDAT &= 0x160;

                            delay();

                           

                            //点亮第四个小灯  

                            GPBDAT |= 0x1E0;

                            GPBDAT &= 0x0E0;

                            delay();

              }

             

              //return 1;

}

学ARM有目的是为了学系统,而昨天在聊天时有个网友提到了一个新的观点,他认为先学系统,把系统中各个接口都弄清楚了,再去看下ARM就可以在系统中驰骋了,不知道对不对,不过总感觉做为电子方面的软件工程师,多了解些底层的东东没什么坏处吧。。。

好了,先去研究一下启动代码了,貌似里面有一大堆汇编代码,还得先看看ARM的指令了,貌似ARM这条学习之路很长也很难,不过只要坚持下去,没有过不去的坎,懒猫加油!勇敢的走下去吧,有一天你会飞的很高很远……

最后再吼吼那句口号,来鼓励一下自己:

每天进步一点点,开心多一点^_^