我来补充一点:
ldr pc, _undefined_instruction
_undefined_instruction: .word undefined_instruction
undefined_instruction这个标识符的实际值是TEXT_BASE = 0x33D80000值基础上的一个偏移量,具体值也是在连接器连接的时候确定的。所以,在cpu执行到未定义指令的时候pc指针就会跳转到0x00000004地址上(uboot在norflash上执行时)执行LDR pc,_undefined_instruction指令,这条指令会取得undefined_instruction的值给pc,然后pc就跳转到SDRAM中执行相应的异常中断指令,而不是在norflash中。(如果uboot在nandflash中,则中断时pc指定到内部4k的sram起始地址偏移4字节的地方,然后再跳转到sdram)只有这样子中断代码可以用c代码来实现,而且加快了中断处理的速度。但在reset的时候要么在norflash中执行要么在内部sram中执行相应复位时候 的代码。所以复位向量0x00000000地址处的指令代码写成b reset