在进行u-boot移植时,大多数人都使用Nand闪存启动或Nar Flash启动。这样,u-boot只能在Nand Flash或Nor Flash中使用。因此,我们如何使我们的u-boot可以在Nand Flash或Nor Flash中使用。首先,让我们谈谈u-boot,u-boot是系统启动时执行的程序的一部分,该部分程序通常存储在Nand flash或Nor flash中。我们所谓的Nand Flash启动或Nor Flash启动主要涉及一段移动代码。此移动代码的功能是u-boot将自身移动到内存中以执行。以下是Nor Flash启动中的重定位代码(此处以s3c2410为例)重定位:/ *将U-Boot重定位到RAM * / adr r0,_STart / * r0<-代码的当前位置* / ldr r1,_TEXT_BASE / *测试是否从闪存或RAM运行* / cmp r0,r1 // *在调试期间不要重定位* / beq stack_setupldr r2,_armboot_startldr r3,_bss_startsub r2,r3,r2 / * r2& lt;-靴子大小* /添加r2,r0,r2 / * r2& lt;-源结束地址* / copy_loop:ldmia r0 !, {r3-r10} / *从源地址[r0]复制* / stmia r1 !, {r3-r10} / *复制到目标地址[r1] * / cmp r0,r2 / *直到源端地址addreee [r2] * / ble copy_loop#endif / * CONFIG_SKIP_RELOCATE_UBOOT * /#endif上面的代码用于将u-boot移至内存。这段代码中不同的启动方法之间的区别。如果我们从Nand flash开始,我们还需要编写具有相同功能的代码。不同之处在于Nand的操作与Nor的操作完全不同。选择“不闪光”。启动是将Nor flash映射到芯片选择0,即地址0x0,而Nand闪存启动是将CPU的片上RAM(4K)映射到地址0,并通过Nand闪存控制器操作Nand闪存。至于Nand flash的操作方式,我在这里不多说。在这里,我们讨论如何实现Nand和Nor的双重启动。让我们看一下这两个创业公司之间的映射关系。让我们看一下寄存器BWSCON:从上图中,我们可以通过判断是否是Nor flash启动或Nand Flash启动来判断它是BWSCON的第2位和第3位的值。因此,我们可以添加以下代码。 #define BWSCON 0x48000000ldr r0,= BWSCONldr r0,[r0] ands r0,r0,#6beq nand_boot ////////////////// Nar移动代码/////// / ///////////// nand_boot://////////////////// Nand移动代码//////////// ///////////通过上面的代码,我们可以实现双重引导,只要我们适当地添加相应的功能,我们的uboot就完成了。