cortex A9 中断模式遇到的问题

4412开发板 中断模式遇到的跳转问题

      在异常向量表中 通常有两组地址(Normal address (0x00000000)和 High vector address(0xFFFF0000)),其中Normal address是不可用的,因为在A9中0x00000000是外设iROM的地址,所以只能使用高地址0xFFFF0000。

     我们把start.s拷贝到0xFFFF0000后,start.s中的bl do_unde(第二次改为ldr pc, =do_unde 也不行 )(跳转到user态的do_unde函数)不能成功,忽略的一个问题,就是bl 指令的跳转范围是+-32M。如 原start.s的代码段地址为0x5000 0000 main函数和do_unde函数的代码段地址为0x5000 1000 而拷贝后start.s代码段的地址为0xFFFF 0000 距离远远超过32M。所以ldr pc, _do_unde....................._do_unde:  .word do_unde

总结:这就是同位置相关和位置无关的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值