سؤال

أحاول كتابة برنامج تشغيل متوافق مع V4L2 لجهاز كاميرا خاص لدي، لكن الجهاز لا يبدو ملائمًا بشكل خاص لنظام المخزن المؤقت الخاص بـ V4L2.بدلاً من المخازن المؤقتة المخصصة بشكل منفصل، فإنه يريد كتلة واحدة متجاورة من الذاكرة قادرة على الاحتفاظ بمجموعة # من المخازن المؤقتة (عادةً 4)، ثم يوفر سجل حالة يخبرك بما هو الأحدث (يتم تحديثه بعد كل إطار DMA'ed إلى المضيف).لذلك فهو يحتاج بشكل أساسي إلى قطعة ذاكرة واحدة كبيرة مخصصة لـ DMA للعمل معها، وليس 4 قطع منفصلة على الأرجح.

كيف يمكنني استخدام هذا مع V4L؟كل ما أرى عنه VIDIOC_CREATE_BUFS, VIDIOC_REQBUFS وهكذا يتم التخصيص الداخلي للمخازن المؤقتة، ولا يمكنني الحصول على أي شيء يعتمد على V4L (مثل qv4l2 للعمل دون نجاح QBUF و DQBUF الذي يستخدم بنيتها الداخلية.

كيف يمكن القيام بذلك؟

هل كانت مفيدة؟

المحلول

للاستكمال فقط، وجدت أخيرًا حلاً في برنامج التشغيل "meye".لقد قمت بإزالة كل شيء VB2 وكتبت طلباتي الخاصة، وquerybuf، وqbuf، وdqbuf، بالإضافة إلى إجراءات mmap الخاصة بي للتعامل مع التخصيص.وكل شيء يعمل!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top