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

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

你可能感兴趣的:(汇编语言,cortex,A9)