dboyzju 发表于 2012-12-11 20:17:42

(请教大家)(ARM学习)启动代码好几问之第一问

本帖最后由 dboyzju 于 2012-12-11 20:25 编辑

想学ARM,手头上有块OK6410开发板。打算先从裸机开始,第一个难题就遇到了--------启动代码。
之前不会汇编,找了点资料看。一些基本的汇编指令稍微清楚了些。但是看网上找到的启动代码还是云里雾里,汇编语法不熟悉,好多都不明白。希望有懂的启动代码的大神帮忙解释一下。

第一问是关于中断向量表的。
从网上找到的资料里看到中断向量表是放在从0开始的连续8x4字节内。
接下来是相关启动代码:
      AREA startup, CODE, READONLY
      
      ENTRY

;系统向量表

         b      vectorRESET      ;复位向量
         b      vectorUNDEF      ;未定义指令
         b      vectorSWI      ;软中断
         b      vectorPABT      ;预取指终止
         b      vectorDABT      ;数据终止
         b      .                        ;系统保留
         b      vectorIRQ      ;外部中断
         b      vectorFIQ      ;快速中断

这里上来就使用b指令跳转,后面的vectorRESET, vectorUNDEF等等还没有定义就可以用吗?还是说在后面定义也可以?

这样跳转是顺序执行的么?

另外怎么样和ARM的几个中断向量对应起来?是这里的从上到下的顺序和ARM中断向量表的顺序一一对应吗?

还有ARM的中断向量名字需要自己确定吗?需要自己把中断向量定义一遍么,包括中断向量的地址?

刚接触ARM,完全是小白,有些问题问的很傻请见谅,希望有懂得的人帮忙解答一下。不胜感激~
{:dizzy:}

jm2011 发表于 2012-12-12 10:30:37

建议楼主看看ARM的体系结构;这是CPU启动的标准做法;几乎所有的CPU的BOOT都是这种结构的;这个是异常向量表;b后面的是地址;跳出去是回不来的;{:sad:}

dboyzju 发表于 2012-12-12 10:43:49

jm2011 发表于 2012-12-12 10:30 static/image/common/back.gif
建议楼主看看ARM的体系结构;这是CPU启动的标准做法;几乎所有的CPU的BOOT都是这种结构的;这个是异常向量 ...

好的,谢谢。这里把跳转指令放到开始的32个字节内,是不是CPU发生了对应的中断就跑到对应的中断向量位置执行之前保存的跳转指令

jm2011 发表于 2012-12-12 11:55:14

对的,是这个意思;异常向量表就是跳转语句

alfred1 发表于 2012-12-12 11:55:46

是的。
注意这里包括中断和异常2类向量,不要混为一谈

happy_andy 发表于 2012-12-12 15:10:18

本帖最后由 happy_andy 于 2012-12-12 15:13 编辑

建议你去看看ARM Architecture Reference Manual,里面说的很清楚。
向量表是预先定义好的且模式固定,由硬件实现。你的程序当然要与ARM的中断向量表一一对应。你这里用的是低端向量模式。当相应中断发生时会自动跳转到相应地址,上面的跳转指令就是完成从相应的向量入口跳转到相应处理子程序。中断向量名vectorRESET为标号,编译时编译器会自动计算其地址并分配给它。B指令是相对跳转指令,最终跳转地址为:当前指令地址+(相对地址<<2)+8 = vectorRESET{:smile:}

dboyzju 发表于 2012-12-13 18:35:34

jm2011 发表于 2012-12-12 11:55 static/image/common/back.gif
对的,是这个意思;异常向量表就是跳转语句

谢谢,受教了。

dboyzju 发表于 2012-12-13 18:37:20

happy_andy 发表于 2012-12-12 15:10 static/image/common/back.gif
建议你去看看ARM Architecture Reference Manual,里面说的很清楚。
向量表是预先定义好的且模式固定,由硬 ...

哦,这个我下来看看,多谢~又深入了一些~

sunhaojie 发表于 2012-12-13 19:40:24

我的是TQ2440开发板,启动代码估计和你的有区别,但是应该有相通之处,你可以看看http://www.amobbs.com/thread-5511650-1-1.html
页: [1]
查看完整版本: (请教大家)(ARM学习)启动代码好几问之第一问