搜索
bottom↓
回复: 8

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

[复制链接]

出0入0汤圆

发表于 2012-12-11 20:17:42 | 显示全部楼层 |阅读模式
本帖最后由 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,完全是小白,有些问题问的很傻请见谅,希望有懂得的人帮忙解答一下。不胜感激~

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-12-12 10:30:37 | 显示全部楼层
建议楼主看看ARM的体系结构;这是CPU启动的标准做法;几乎所有的CPU的BOOT都是这种结构的;这个是异常向量表;b后面的是地址;跳出去是回不来的;

出0入0汤圆

 楼主| 发表于 2012-12-12 10:43:49 | 显示全部楼层
jm2011 发表于 2012-12-12 10:30
建议楼主看看ARM的体系结构;这是CPU启动的标准做法;几乎所有的CPU的BOOT都是这种结构的;这个是异常向量 ...

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

出0入0汤圆

发表于 2012-12-12 11:55:14 | 显示全部楼层
对的,是这个意思;异常向量表就是跳转语句

出0入0汤圆

发表于 2012-12-12 11:55:46 | 显示全部楼层
是的。
注意这里包括中断和异常2类向量,不要混为一谈

出0入0汤圆

发表于 2012-12-12 15:10:18 | 显示全部楼层
本帖最后由 happy_andy 于 2012-12-12 15:13 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-12-13 18:35:34 | 显示全部楼层
jm2011 发表于 2012-12-12 11:55
对的,是这个意思;异常向量表就是跳转语句

谢谢,受教了。

出0入0汤圆

 楼主| 发表于 2012-12-13 18:37:20 | 显示全部楼层
happy_andy 发表于 2012-12-12 15:10
建议你去看看ARM Architecture Reference Manual,里面说的很清楚。
向量表是预先定义好的且模式固定,由硬 ...

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

出0入0汤圆

发表于 2012-12-13 19:40:24 | 显示全部楼层
我的是TQ2440开发板,启动代码估计和你的有区别,但是应该有相通之处,你可以看看http://www.amobbs.com/thread-5511650-1-1.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 08:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表