原创 ARM学习日志(一)-- 初识ARM

2011-1-6 16:03 5023 5 6 分类: MCU/ 嵌入式

        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时是一样的,如下图所示:]


08944e8f-3565-4dfe-8f9d-3268de6a6373.JPG


图1 新建工程



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


0ba18743-4ab5-4e4c-87ab-232f43f565a5.JPG


图2 保存新建的工程


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


85a18e5f-0f8a-4dfd-889b-7fad5f98d70c.JPG


图3 型号选型表


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


7d389ea9-ba3f-4748-ab6b-faed90d7f980.JPG


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


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



 929b3f09-e0ac-4214-b61b-637294230337.JPG 


图5 工程建立完毕


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


 6af3d9a9-0716-446a-9dc0-afa9ff2d7a09.JPG


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


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


 ed7c8ad0-0897-4f2e-99fa-6927f13e76c8.JPG


图7  Target 配置页面


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


d7f9165e-c15d-4c8e-88d8-5a94f00cf9f9.JPG


图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这条学习之路很长也很难,不过只要坚持下去,没有过不去的坎,懒猫加油!勇敢的走下去吧,有一天你会飞的很高很远……


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


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


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户398889 2011-1-7 22:40

努力加油
相关推荐阅读
xucun915_925777961 2013-04-28 11:31
毕业后的五年拉开大家差距的原因在哪里?【转】
  有人工作,有人继续上学,大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!...
xucun915_925777961 2013-03-31 20:28
职场大牛精彩总结:职场上,如何做人做事做管理【转】(文/张子阳)
      大道至简,越是根源和基本的问题,道理实际上越简单。关于如何做人、做事、做管理的书很多,我看得不多,但是我觉得这些书更多是侧重技术和实现细节上的,而很少从人的思想和观念去讲。实际...
xucun915_925777961 2013-03-28 14:03
介绍几种优秀的UML工具
统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言...
xucun915_925777961 2013-03-27 18:05
IAR EW FOR 8051 修改工程名称的方法
        近段时间一直在搞蓝牙4.0的开发任务,所以用到了IAR编译器,话说IAR编译器用途蛮广,可以编译MSP430,ARM,还有TI的51核芯片,当然,这要不同的版本,我现在用的是for...
xucun915_925777961 2013-03-26 16:40
Cortex-M3学习日志(八)-- TFT实验Part(a)
    自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。 我的开发板上的液晶屏的用的是SPI接口,当...
xucun915_925777961 2013-03-25 20:48
说说那几款查看源代码的工具
说说那几款查看代码的工具 今天给大家介绍几款单片机工程师所喜欢的几款查看源代码的工具,这几款工具在懒猫的日常工作中可是帮了不少忙。 一、 Source Insight     Source Insig...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /1 下一条