我也是用ZLG的光盘的例程,但Remap的例程只是叫人看数据的变化而没有真正的应用,所以我想自己能够真正的理解和应用Remap,我的程序的意思是这样的:<br /><br />ARM上电复位后,执行的是ZLG提供的启动代码,然后跳到main()函数,在main()函数里面,拷贝FLASH的0x00000000~0x0000003F的代码到RAM的0x40000000~0x4000003F,然后执行MEMMAP = 0x2,remap到内存后,真正被执行的异常向量表就是位于内存的起始地址了(0x40000000),然后我改变内存单元(0x40000028)的内容,原来的是指向SWI_Handler()函数,改变后指向SWI_Exception()函数,最后执行SWI软中断.(在编译器ADS设置RO_base =0<br />RW_base=0x40000000)<br /><br />问题是:1.remap后是否从0X40000000开始中断?<br /> 2.remap后SWI软中断是否从0x40000008开始,读取0X40000028单元所存放的数据(LDR PC, SWI_Address ..... SWI_Address DCD SWI_Handler)也就是SWI中断函数的地址,赋给PC,然后执行SWI中断函数?<br /> 3.改变0X40000028的数据,是否可以改变SWI中断的指向?<br />我遇到的情况就是我改变了0X40000028的内容,SWI中断还是指向原来的地址,而不是指向修改后的地址,我想知道我的思路错在哪里!<br />感谢zlg的工程师们的无私的奉献!
|