2018년 4월 22일 일요일

Zturn 리눅스 부팅 모드(QSPI, SD, TFTP, NFS)

목적 : Zturn 보드에서 리눅스 부팅 모드는 QSPI, JTAG, SD Card, Nand Flash가 있다. 이중 Nand Flash는 별도의 보드를 제작해야 가능하고, JTAG는 리눅스 개발보다는 로직을 개발할때 유용할거 같아 QSPI에 포팅하는 방법과 SD 카드로 부팅하는 방법을 살펴보며, 개발 단계에서 많이 사용되고 있는 TFTP환경과 NFS환경에 대해서 보도록 하겠다.

1. SD Card 부팅.
  1.1.  기본적으로 제공되는 Zturn 보드의 부팅모드는 SD Card 부팅모드이며, SD 카드내에 BOOT.Bin, 7z020.bin, devicetreee.dtb, uImage, uramdisk.image.tar.gz uEnv.txt파일들만 존재하면 부팅이 된다.

2. QSPI에 리눅스 부팅하기
  2.1. zturn보드에서는 qspi를 포팅하기 매우 쉽다. 일단 SD Card로 부팅후 환경변수 출력하면(print), qspiupdate가 보이는데 run qspiupdate를 실행하게 되면 자동으로 SD카드에 있는 파일들이 qspi영역으로 올라가게 되며, 파일 로딩이 끝나면, 전원을 끄고, Boot Mode를 qspi로 설정한 후 SD카드를 뽑고 다시 전원을 인가하면 qspi로 올라간 리눅스가 실행되게 된다.

3. TFTP로 리눅스 부팅하기
  3.1.  qspi의 부팅 메시지를 변경하여 tftp로 부팅시 마다 커널과 파일시스템을 가져와서 부팅할수 있다. 변경 방법은 아래와 같다.
환경 변수 설정을 보면 아래와 같이 설정되어있는데
qspiboot=echo Copying Linux from QSPI flash to RAM... && sf probe 0 0 0 && qspi_get_bitsize 0x0A0000 && sf read ${loadbit_addr} 0x0A0004 ${bitsize} && fpga loadb 0 ${loadbit_addr} ${bitsize} && sf read ${kernel_load_address} ${qkernel_addr} ${kernel_size} && sf read ${devicetree_load_address} ${qdevtree_addr} ${devicetree_size} && echo Copying ramdisk... && sf read ${ramdisk_load_address} ${qramdisk_addr} ${ramdisk_size} && bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}

이부분을 tftp로 업로드로 변경할것이다.
변경전에 혹시 모르니 아래와 같이 백업을 해두고
setenv qspiboot_bk 'echo Copying Linux from QSPI flash to RAM... && sf probe 0 0 0 && qspi_get_bitsize 0x0A0000 && sf read ${loadbit_addr} 0x0A0004 ${bitsize} && fpga loadb 0 ${loadbit_addr} ${bitsize} && sf read ${kernel_load_address} ${qkernel_addr} ${kernel_size} && sf read ${devicetree_load_address} ${qdevtree_addr} ${devicetree_size} && echo Copying ramdisk... && sf read ${ramdisk_load_address} ${qramdisk_addr} ${ramdisk_size} && bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}'

아래와 같이 tftp를 적용한걸로 수정한다.
setenv qspiboot 'tftpboot ${kernel_load_address} ${kernel_image} && tftpboot ${devicetree_load_address} ${devicetree_image} && tftpboot ${ramdisk_load_address} ${ramdisk_image} && bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}'

tftp를 사용하기 때문에 당연히 이더넷 케이블이 꽃아있어야 하며, tftp서버 주소 설정이 되어있어야 한다.
tftp 서버 주소는 아래와 같이 설정하면 되고, tftp서버 설정은 인터넷을 통해 검색하기 바란다.
setenv sersverip 192.168.1.82
이렇게 하면 192.168.1.82번의 주소의 서버에서 이미지를 가져온다.
정상적으로 tftp서버에서 이미지를 가져오면 다운로드되는 화면을 콘솔에서 볼수 있다.

댓글 없음:

댓글 쓰기

VITIS Git + Doxygen Config

 Doxygen Configure 1. Vitis 메뉴의 Window->Preference의 C/C++ -> Editor의 Documentation tool comments 기본 설정값을 Doxygen으로 변경 설정 후 함수 바로 위에서 /...