AI with 재미
vdma petalinux with gemini
jhinux
2025. 12. 11. 22:39
🔍 왜 "데이터 사이즈"로 맞추니 동작했을까요?
V4L2 버퍼 = 단순 메모리 덩어리:
결국 커널 입장에서 영상 데이터는 "가로 × 세로 × 픽셀당 바이트" 크기의 메모리 공간일 뿐입니다.
v4l2-ctl이나 어플리케이션이 포맷 이름(YUYV 등)을 몰라도, "일단 4MB 메모리 잡아!" 하고, 하드웨어(DMA)가 그 4MB에 데이터를 쏟아부으면(Push), 캡처는 성공하는 것입니다.
사용자님은 포맷 이름(메타데이터) 검사를 우회하고, 물리적인 메모리 크기를 맞춰서 성공시킨 것입니다.
Stub Driver의 문제점 (범인):
현재 Stub Driver는 Xilinx 메인 드라이버(Bridge)가 "너 무슨 포맷 지원해?"라고 물으면, 엉뚱한(혹은 Xilinx가 싫어하는) 답변인 YUYV 순서를 고집하고 있습니다.
Xilinx 파이프라인은 보통 UYVY 순서를 표준으로 쓰는데, 여기서 대화가 안 통하니 Invalid Argument가 떴던 것입니다.
🛠️ Stub Driver "포맷 문제" 완벽 수정 (Code Fix)
나중에라도 v4l2-ctl이나 GStreamer가 에러 없이 깔끔하게 붙게 하려면, 드라이버 코드에서 **"Xilinx가 좋아하는 포맷"**으로 답변하도록 수정해두는 게 좋습니다.
video-source-stub.c 파일에서 아래 3가지 포인트만 수정하면, 사이즈 강제 맞춤 없이도 잘 붙을 것입니다.