다음은 에서 발췌한 내용입니다.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 코드를 보유하지 않는 플래시 메모리 영역입니다. 대상 주소는 u-boot가 실행 중에 자체 코드/데이터에 사용하지 않는 RAM 영역입니다.
답변2
QSPI flash-to-RAM 복사 명령에 대한 구문 정의를 본 적이 없지만 패턴은 다음과 같습니다.
cp src_addr dst_addr copy_size
두 번째 복사본은 devicetree.dtb
RAM에 있는 Linux 커널의 시작 주소(0x8000)와 정확히 동일한 크기(0x8000)인 장치 트리( )용입니다.