[Petalinux] Petalinux Advance

wedo soluton Petalinux 교육 내용 요약 2nd

Petalinux Booting and Packaging

petalinux Packaging

  1. 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 DebuggingLAB5 참조

  • Petalinux는 Application Debugging 시 System Debugger(Vitis) 와 GNU Debugger를 지원한다.
  • Vitis는 Target Communication Framework(TCF)와 Xilinx System DBugger(XSDB)를 이용한 Debugging 환경을 제공
  • 일반적인 Linux GNU Debugger 지원

System Debugger 방법

  1. petalinux-config -c rootfs를 이용하여 Root File system에 하기 내역을 포함 시킨다.
    • tcf-agent (default enable)
    • openssh-sftp-server
    • dropbear (default disable)
  2. 이미지를 빌드 하고 디버깅하고자 하는 Application을 실행 시킨다.
    • QEMU의 경우 GEM0만 연결되어 있으므로 필요 시 GEM3 등의 Device Tree를 추가하여 빌드한다.
  3. vitis를 실행 시키고 *.XSA 파일 등을 이용하여 platform project를 구성한다.
  4. platform project에 빈 linux Applicaiton domain을 추가한다.
  5. 4)항의 항목내 Debug configuration을 이용하여 Single Application Debug를 추가한다.
    • target 보드의 debug IP/port를 설정하고 파일 패스를 설정한다.

GNU Debuger

  • GNU 디버거를 사용하기 위해서는 Root file System에 gdbserver를 포함하여야 한다.

Custom HW and Driver Development

  1. Xilinx는 Custop IP에 대한 디바이스 제어를 위해 하기의 방법을 제안한다.
  • Linux Device Driver 제작
  • mmap의 사용 (사용이 쉽다. 인터럽트 핸들링이 안됨)
  • User space I/O (UIO 사용) (간단한 IRQ핸들링이 된다, Latency가 가변적이고 DMA가 지원되지 않는다)
  1. 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 개발 절차

  1. Custop IP를 개발(RTL 등) 후 Vivado IP Packer를 통하여 IP-XACT Standard Format으로 패키징 한다.
  2. Vivado를 이용하여 1)항의 IP와 기타 사용자 IP를 조합하여 *.XSA 파일을 생성한다.
  3. petalinux-creat -t project -n {project 이름}를 이용하여 project를 생성하고 *.XSA 파일을 import한다.
  4. petalinux-creat -t module -n {driver 이름}을 이용하여 모듈을 생성한다.
  5. {project-root}/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi에 Custom IP에 관련된 Device tree를 업데이트한다.
    • 작성 시 pl.dtsi를 확인하여 module name 및 address 등을 확인한다.
  6. 모듈 내부 드라이버 파일을 작성하고 Yocto 레시피를 수정한다.
  7. 커널에 로딩할 지 모듈로 rootfs에 등록할지 결정한 후 빌드한다.
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy