我们之前通过dnw下载程序到开发板中去,是下载到了NAND Flash中,而开发板一经上电,就会自动执行SROM中的固化代码BL0并将nand Flash中前8KB内容复制到SRAM(steppingstone),如果BootLoader程序大于8KB,这就需要我们手动的将大于的部分搬移到内存中去,这就代码搬移的工作。然而我们自己编写的g-boot远小于8KB,所以开发板一经上电就将nand flash中的g-boot代码全部搬移到了SRAM中,所以我们就不需要从nand flash去搬移代码了,然而今天为了起到示范的作用,就将SRAM中的内容搬移到内存中(实际上完全可以只让代码在SRAM中运行)。以后要是自己需要搬移代码,那就是从nand flash向内存中搬了,并且搬移的时候需要先初始化nand flash。
搬移代码如下图所示,r0中装入的是SRAM的起始地址,r1中放入的地址和链接器脚本文件(*.lds)中的指定的代码段的起始地址相同。