一般异常发生以后,会被映射到0x00000000,或者0xFFFF,0000处(一般wince操作系统会到这个地址处),这2个地址可以通过cp15协处理器去配置。
异常向量和地址的映射问题:(s5pv210 iRom application Note的文档)当上电时,如果发生异常,会跳到0x0000000地址处运行,异常向量表的基地址在0x000000处,处理器会根据三星公司固化好的iROM程序,跳转到相应的SRAM地址;如果用户想要在SRAM里面处理中断异常的话,就需要开辟一块区域存放异常向量表,如果还是原来0x000000处的话,由于这块地方是ROM区,是不可更改的,不可以在这里放一句跳转指令,于是:
三星通过在SRAM里面的0xD003,7400处又开辟了一块异常向量表,如果用户希望在片内SRAM能够处理异常的话,就需要将ldr pc这些指令拷贝到0xD003,7400处的异常向量表,最重要的就是在这里放一句跳转指令,然后可以跳到用户所写的中断处理函数了。这样一旦发生异常,就会跳到0xD003,7400处执行相应的异常。
上述过程与三星S3C2440不一样,S5PV210是CPU上电后先从内部IROM中读取预先设置的代码(BL0),执行。而2440是上电后执行,将nand flash中大小如sram的前面代码(bootloader代码)拷贝到sram中,并cpu跳到sram的0x0位置,因此2440这里0地址处就在SRAM里面运行了,可以直接就在异常向量表里面添加相应的跳转指令来处理异常,不需要像210一样再开辟SRAM里面再开辟空间存放异常向量表了。