LDR R1,=0x001E0000 ;BIOS在FLASH中的地址<br /> LDR R2,=0x0C7C0000 ;BIOS在SDRAM中的地址<br /> LDR R7,=0x0C7D0000-4 ;BIOS总共64K<br />LOOP:<br /> LDMIA R1!,{R3-R6} ;装入4个字到寄存器中<br /> STMIA R2!,{R3-R6} ;将4个字保存到RAM中<br /> CMP R2,R7 ;比较拷贝是否完成<br /> BLS LOOP ;循环<br /> <br />0x001E0000 0x0C7C0000 0x0C7D0000-4这三个数值是怎么算出来的呀,在ADS1.2中<br /> LDR r0, =|Image$$RO$$Limit| ; Get pointer to ROM data<br /> LDR r1, =|Image$$RW$$Base| ; and RAM copy<br /> LDR r3, =|Image$$ZI$$Base| <br /> ;Zero init base => top of initialised data<br /> <br /> CMP r0, r1 ; Check that they are different<br /> BEQ %F1<br />0 <br /> CMP r1, r3 ; Copy init data<br /> LDRCC r2, [r0], #4 ;--> LDRCC r2, [r0] + ADD r0, r0, #4 <br /> STRCC r2, [r1], #4 ;--> STRCC r2, [r1] + ADD r1, r1, #4<br /> BCC %B0<br />1 <br /> LDR r1, =|Image$$ZI$$Limit| ; Top of zero init segment<br /> MOV r2, #0<br />2 <br /> CMP r3, r1 ; Zero init<br /> STRCC r2, [r3], #4<br /> BCC %B2<br />只要设置ARM Linker中的R0 Base RW Base的相应值就可以,<br />在KEIL中如何实现的呀??<br />望高手赐教,在线等呀, |
|