尝试了解uboot镜像复制

尝试了解uboot镜像复制

以下是摘录自u-boot-xarm/include/configs/zynq_zc702.h

"qspiboot=echo Copying Linux from QSPI flash to RAM...; \
                cp 0xFC100000 0x8000 ${kernel_size}; \
                cp 0xFC600000 0x1000000 0x8000; \
                echo Copying ramdisk...; \
                cp 0xFC800000 0x800000 ${ramdisk_size};\
                ping 10.10.70.101;\
                go 0x8000\0" \

有人可以解释一下这两行中发生了什么吗:

                    cp 0xFC100000 0x8000 ${kernel_size}; \
                    cp 0xFC600000 0x1000000 0x8000; \

这些地址是如何选择的?为什么有这么多地址?

答案1

它在启动 Linux 之前将存储在闪存中的内核和 initrd 复制到 RAM 中。命令 cp 记录在cp——内存复制

源地址是闪存中不保存闪存 u-boot 代码的区域。目标地址是 RAM 中 u-boot 在执行中不用于其自身代码/数据的区域。

答案2

我还没有遇到 QSPI 闪存到 RAM 复制命令的语法定义,但模式似乎是

cp src_addr dst_addr copy_size

第二个副本用于 devicetree ( devicetree.dtb),它的大小 (0x8000) 恰好与 RAM 中 Linux 内核的起始地址 (0x8000) 相同。

相关内容