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

2011-1-11 16:46 2318 17 20 分类: 消费电子

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

tu1.jpeg



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

tu2.jpeg



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

tu3.jpeg


图3 型号选型表

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

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

tu5.jpeg

图5 工程建立完毕

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

tu6.jpeg


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

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

tu7.jpeg



图7  Target 配置页面

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

tu8.jpeg

图8 配置startup文件     

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

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

//文件名称:main.c

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

//作    者:懒猫爱飞

//备    注:MCU -- S3C2440A   

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

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

#include

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

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

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

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

文章评论3条评论)

登录后参与讨论

用户1622470 2012-9-24 14:47

嗯 我顶一个

cj578009030_531948212 2011-1-17 20:29

恩,顶一个。。。

用户1402034 2011-1-17 14:54

太好了,继续

相关推荐阅读
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...
我要评论
3
17
关闭 站长推荐上一条 /2 下一条