02.07.2013 Views

Uboot中start.S源码的指令级的详尽解析

Uboot中start.S源码的指令级的详尽解析

Uboot中start.S源码的指令级的详尽解析

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

而此处的意思就很清楚了,就是r2 = r3-r2,计算出<br />

text + rodata + data<br />

的大小,即整个需要载入的数据量是多少,用于下面的函数去拷贝这么多的数据到对应的内存的<br />

位置。<br />

这里的实际的值是<br />

r2<br />

= r3 –r2<br />

= 0x33d339d4 - 0x33d00000<br />

= 0x000339d4<br />

【总结】<br />

到此刻位置,假定是从Nor Flash启动的话:<br />

r0 = 0x0 = 我们代码此刻所在的位置<br />

r1 = 0x33D00000 = 我们想要把我们的代码放到哪里<br />

r2 = 0x000339d4 = 对应的代码的大小(此处的代码 = text + rodata + data)<br />

#if 1<br />

#else<br />

bl CopyCode2Ram /* r0: source, r1: dest, r2: size */<br />

add r2, r0, r2 /* r2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!