之前用惯了C51,用interrupt很方便,初初使用arm,不知道该怎么写了,<br /><br />看了别人汇编写的bootloader,发现它在SDRAM里做了一个中断地址表,然后获取中断处理程序的地址值写到这个地址表里,通过跳转来完成。<br /><br />如:<br /> ldr r0, =HandleIRQ ;Setup IRQ handler<br /> ldr r1, =IsrService <br /> str r1, [r0] <br /><br /> MAP _ISR_STARTADDRESS <br />HandleUndef # 4<br />HandleSWI # 4<br />HandlePabort # 4<br />HandleDabort # 4<br />HandleIRQ # 4<br />HandleFIQ # 4<br /><br />HandleADC # 4<br />HandleRTC # 4<br />HandleUTXD1 # 4<br /> ......<br /><br />如果我是用C写的中断处理程序,也是要通过这种方式把它的地址值放到上面的表里吗?但是C写的处理函数怎么能得到它的地址所在呢?而且每个用到的中断都要如此设置一次?? |
|