arm初学引导.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
arm初学引导

一直都在听说ARM有多么好,有多神奇,有多难学。故学它时都兴奋加恐惧。呵呵,我刚好用ARM也有一段时间了。写点东西给ARM的初学者,希望能起到帮助作用。 1,记住:ARM很简单,就如从51转换到PIC或者转换到AVR一样简单。ARM的一个功能就如同掌握一个其他IC的使用一样,如时钟芯片,存在芯片,等等,甚至更简单。所以ARM的那些功能就可以忽略了。 2,和51系列相比,arm的寄存器不在存储空间之内,而且不分数据、程序空间。记住它的分配图. 3,ARM有多种处理器模式,每个模式都有自己的独立 记住表格 记住寄存器的使用 4,ARM的中断加强了,增加了软件中断,掌握swi 可以把处理器模式及异常看成都是中断的扩张,从这些方面去理解也许快些。 swi是嵌入式系统中任务切换的一个关键指令。故先有个心里准备。用法:swi 立即数。执行该执行时,程序会跑到swi中断处。立即数包含在该指令代码中,如果要根据立即数执行程序必须找出立即数。 5,ARM的启动程序及引导地址 你编写的代码启动时:ARM都是从0始运行。 实际芯片运行时:ARM启动时,先根据硬件判断是否进入ISP还是经入程序运行。如进行程序运行,又会根据硬件判断会从0部 flash空间,还是外部flash空间0运行(此时芯片会自动改变映射,也就是将0射到 0 在ADS软件上:ADS软件会把ARM Linker-Layout-Place at beginning of image-Objiect/symbol中指明开始代码的文件。 Section中指明代码开始的程序块。一般习惯Objiect/symbol中填写的时Startup.o。Section中填写Start。因为大家一般会将开始程序放在Startup文件中的Start段。 ADS软件知道了我们程序的开始地方,还不知道这个程序的开始地方放到实际芯片的那个地址,所以我们还要为ADS软件指明开始地址,ARM Linker-Option-Image entry point中指明就行了。 这样我们自己编写的代码、实际芯片、仿真器程序起始的关系就差不多明白了,然后记住下面中断向量表的代码。 6,地址重新映射 这是个新概念,但记住它的功能是存储器映射用于改变从0始的中断向量的映射。记住1:是0始的中断向量的映射;记住2:为什么要这样做是为了不管你这段程序放在芯片实际的那个可以开始放的地方,ARM内部都可以从0始运行。 7,汇编语言与c语言的混合编程 如果你不会这个先最好了解一点概念 汇编与c的参数传递是靠R0,R1这些寄存器传递的。 函数的返回值也是靠R0。 汇编中的标号与函数名相当 c语言函数结束时实际上是汇编子程序的返回指令,故用汇编语言中用BL调用c的函数。否则就会返回出错。 8,汇编指令的记忆 多了几种寻址方式 先记住基本指令然后进行扩展,在记指令的执行条件,在搞懂特性符合的意义,如!,^等 我先是记住了以下几个指令:B,BX,BL,LDR,STR,LDM,STM,MOV,MRS,MSR,DCD,SWI,ADD,AND,CMP,MUL这些指令后,以后就边用边记。 9,ARM初始化要干些什么 ARM初始化灵活方式,很多功能都可以方便设置。故开始初始化的事情也是蛮的多,主要做那些呢 开始的中断向量表要做好吧。 每个处理器模式都有自己的SP,你要指明每个SP的开始地址,进行堆栈的初始化。 初始化外部总线控制 设置存储器加速模块 初始化时钟,初始化VIC等等,当然有很多你不必管,先拷贝 在网上找资料就行了。中断向量表与初始化堆栈一般如下 ;中断向量表 Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9205f80 ;ARM保留位,使向量表所有数据32位累加和为0,才能脱机运行。 LDR PC, [PC, #-0xff0] ; LDR PC, FIQ_Addr ResetAddr DCD ResetInit Undefin

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档