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时是一样的,如下图所示:
点击以后要,接下来就是找个位置保存新建的工程,如下图所示:
保存以后就出现了选型表,我的开发板是S3C2440A所以我就选 这个型号了,如下图:
图3 型号选型表
选完型号会出现一个对话框,问是否把该型号的startup代码拷贝到工程,并建文件夹,选是,当然也可以自己写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
/***********************************************************/
//函数名称: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这条学习之路很长也很难,不过只要坚持下去,没有过不去的坎,懒猫加油!勇敢的走下去吧,有一天你会飞的很高很远……
最后再吼吼那句口号,来鼓励一下自己:
每天进步一点点,开心多一点^_^
用户1622470 2012-9-24 14:47
cj578009030_531948212 2011-1-17 20:29
用户1402034 2011-1-17 14:54
太好了,继续