Petalinux Booting and Packaging
petalinux Packaging
petalinux-package
명령을 이용하여 하기 내역을 수행 할 수 있다..BIN
또는.MCS
파일을 생성 (–boot 옵션)- BSP (
.BSP
파일) 또는 Package image 생성 (–bsp, –image 옵션) - prebuilt 디렉토리 생성 (–prebuilt 옵션)
- Vitis 를 위한 sysroot 설치 (–sysroot 옵션)
petalinux booting
QEMU, SD card, Jtag, TFTP, QSPI에 의한 Booting을 지원한다. (jtag Boot는 속도가 느려 잘 사용안함)
Petalinux Debugging
상세 내용은 교제의 Petalinux Application Debugging
및 LAB5
참조
- Petalinux는 Application Debugging 시 System Debugger(Vitis) 와 GNU Debugger를 지원한다.
- Vitis는 Target Communication Framework(TCF)와 Xilinx System DBugger(XSDB)를 이용한 Debugging 환경을 제공
- 일반적인 Linux GNU Debugger 지원
System Debugger 방법
petalinux-config -c rootfs
를 이용하여 Root File system에 하기 내역을 포함 시킨다.- tcf-agent (default enable)
- openssh-sftp-server
- dropbear (default disable)
- 이미지를 빌드 하고 디버깅하고자 하는 Application을 실행 시킨다.
- QEMU의 경우 GEM0만 연결되어 있으므로 필요 시 GEM3 등의 Device Tree를 추가하여 빌드한다.
- vitis를 실행 시키고
*.XSA
파일 등을 이용하여 platform project를 구성한다. - platform project에 빈 linux Applicaiton domain을 추가한다.
- 4)항의 항목내 Debug configuration을 이용하여 Single Application Debug를 추가한다.
- target 보드의 debug IP/port를 설정하고 파일 패스를 설정한다.
GNU Debuger
- GNU 디버거를 사용하기 위해서는 Root file System에 gdbserver를 포함하여야 한다.
Custom HW and Driver Development
- Xilinx는 Custop IP에 대한 디바이스 제어를 위해 하기의 방법을 제안한다.
- Linux Device Driver 제작
- mmap의 사용 (사용이 쉽다. 인터럽트 핸들링이 안됨)
- User space I/O (UIO 사용) (간단한 IRQ핸들링이 된다, Latency가 가변적이고 DMA가 지원되지 않는다)
- Petalinux는 빌드 시 Device Tree Generator가 DTSI/DTS파일을 생성하고 DTB를 만든다
*.XSA
파일을 분석하여 기본적인 DTSI/DTS 파일을 만든다{project-root}/components/plnx_workspace/device-tree/device-tree
에 생성되는 DTSI파일은 다음과 같다- pl.dtsi : memory-mapped PL IP node
- pcw.dtsi : Dynamic properties of the PS peripheral
- system-top.dts : boot argument 와 console, memory information
- zynqmp.dtsi : PS peri and CPU information
- zynqmp-clk-ccf.dtsi : IP peri를 위한 clock information
- Custop IP 추가 등 Device tree를 업데이트 하기 위해 하기 DTSI를 업데이트 한다.
{project-root}/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
Custom HW and Petalinux 개발 절차
- Custop IP를 개발(RTL 등) 후 Vivado IP Packer를 통하여 IP-XACT Standard Format으로 패키징 한다.
- Vivado를 이용하여 1)항의 IP와 기타 사용자 IP를 조합하여
*.XSA
파일을 생성한다. petalinux-creat -t project -n {project 이름}
를 이용하여 project를 생성하고*.XSA
파일을 import한다.petalinux-creat -t module -n {driver 이름}
을 이용하여 모듈을 생성한다.{project-root}/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
에 Custom IP에 관련된 Device tree를 업데이트한다.- 작성 시
pl.dtsi
를 확인하여 module name 및 address 등을 확인한다.
- 작성 시
- 모듈 내부 드라이버 파일을 작성하고 Yocto 레시피를 수정한다.
- 커널에 로딩할 지 모듈로 rootfs에 등록할지 결정한 후 빌드한다.