برق و الکترونیک Soc و میکروکنترولر
Kanalga Telegram’da o‘tish
بسمه تعالی دانلود پروژه و پی سی بی رایگان
Ko'proq ko'rsatish2 519
Obunachilar
+124 soatlar
+27 kun
+2230 kun
Postlar arxiv
🖥️ ۴. چرا RK3588 برای پردازشهای سنگین جذابتر است؟
اگر سیستم صنعتی شما علاوه بر کنترل، به پردازش تصویر یا هوش مصنوعی نیاز داشته باشد، RK3588 میتواند گزینهٔ بسیار قدرتمندی باشد.
برای مثال، در یک دستگاه صنعتی هوشمند میتوان از آن برای این وظایف استفاده کرد:
📷 دریافت و پردازش تصاویر دوربین
🤖 تشخیص خودکار عیوب محصولات
📈 تحلیل دادههای تولید
🌐 ارتباط شبکه و اجرای سرویسهای مختلف
🎥 پردازش و نمایش ویدئو
🖥️ اجرای رابط گرافیکی پیچیده
اما اگر کنترل دقیق موتور نیز ضروری باشد، یک معماری ترکیبی میتواند انتخاب مناسبتری باشد.
برای نمونه:
🔹 RK3588: اجرای لینوکس، رابط کاربری، پردازش تصویر و هوش مصنوعی
🔹 STM32H743: اجرای FOC، خواندن انکودر، نمونهبرداری ADC و مدیریت PWM
در این ساختار، هر پردازنده وظایفی را انجام میدهد که برای آن مناسبتر است.
البته این روش هزینهٔ سختافزار، پیچیدگی طراحی و نیازهای توسعهٔ نرمافزار را افزایش میدهد.
━━━━━━━━━━━━━━━━━━
🔬 ۵. اجرای لینوکس و برنامهٔ بلادرنگ چگونه انجام میشود؟
در معماری STM32MP2، میتوان لینوکس و برنامهٔ هستهٔ Cortex-M33 را بهصورت مستقل اجرا کرد و از روشهایی مانند OpenAMP برای ارتباط میان آنها استفاده کرد.
برای مثال، فرض کنید کاربر سرعت موتور را از طریق رابط گرافیکی تغییر میدهد.
۱️⃣ برنامهٔ لینوکس فرمان جدید را دریافت میکند.
۲️⃣ مقدار سرعت درخواستی از طریق یک سازوکار ارتباطی مناسب به برنامهٔ بلادرنگ منتقل میشود.
۳️⃣ برنامهٔ بلادرنگ، مقدار جدید را در کنترلکننده اعمال میکند.
۴️⃣ کنترلر موتور، محاسبات لازم را انجام میدهد و خروجیهای PWM را بهروزرسانی میکند.
۵️⃣ اطلاعات جدید موتور به لینوکس بازگردانده میشوند تا روی نمایشگر نشان داده شوند یا در حافظه ذخیره شوند.
به این ترتیب، لینوکس وظایف سطح بالا را مدیریت میکند و برنامهٔ بلادرنگ مسئول اجرای وظایف زمانحساس باقی میماند.
💡 این جداسازی یکی از مهمترین مزایای معماریهای ترکیبی در سیستمهای صنعتی است.
━━━━━━━━━━━━━━━━━━
⚖️ ۶. بالاخره کدام گزینه بهتر است؟
انتخاب نهایی به نوع پروژه بستگی دارد.
🥇 STM32MP257
اگر میخواهید لینوکس و یک برنامهٔ بلادرنگ را در یک تراشه ترکیب کنید، این گزینه ارزش بررسی جدی دارد.
بهخصوص زمانی که هدف شما ساخت یک کنترلر صنعتی با رابط گرافیکی، ارتباط شبکه و وظایف کنترلی زمانحساس است.
البته پیش از انتخاب نهایی، باید امکانات سختافزاری موردنیاز برای کنترل موتور در مدل دقیق تراشه تأیید شوند.
🥈 RK3588
اگر قدرت پردازشی، هوش مصنوعی، پردازش تصویر و اجرای برنامههای سنگین اهمیت بیشتری دارند، RK3588 گزینهٔ جذابی است.
این پردازنده برای سیستمهای صنعتی هوشمند و کاربردهایی که به توان محاسباتی بالا نیاز دارند، بسیار مناسب است.
🥉 RK3588 + STM32H743
اگر هم به قدرت پردازش بالا نیاز دارید و هم میخواهید کنترل موتور را به یک میکروکنترلر اختصاصی بسپارید، این ترکیب میتواند انتخاب خوبی باشد.
در این معماری، RK3588 وظایف سنگین را انجام میدهد و STM32H743 مسئول کنترل دقیق موتور خواهد بود.
━━━━━━━━━━━━━━━━━━
🎯 جمعبندی نهایی
هیچکدام از این پردازندهها در تمام کاربردها برندهٔ مطلق نیستند.
✅ STM32MP2: مناسب برای بررسی در سیستمهای یکپارچهای که به لینوکس و پردازش بلادرنگ نیاز دارند.
✅ RK3588: مناسب برای سیستمهایی با نیازهای سنگین پردازشی، گرافیکی و هوش مصنوعی.
✅ RK3588 + STM32H743: ترکیبی قدرتمند برای سیستمهایی که هم پردازش پیشرفته میخواهند و هم کنترل دقیق موتور.
💬 حالا نوبت شماست!
اگر بخواهید یک کنترلر صنعتی با لینوکس، Ethernet، انکودر و کنترل موتور FOC طراحی کنید، کدام معماری را انتخاب میکنید؟
۱️⃣ STM32MP257 با استفاده از Cortex-M33 برای کنترل بلادرنگ
۲️⃣ RK3588 در کنار STM32H743
۳️⃣ یک معماری دیگر
نظرتان را در بخش نظرات بنویسید. 👇
━━━━━━━━━━━━━━━━━━
📚 منابع رسمی
🔹 اطلاعات خانوادهٔ STM32MP2:
https://www.st.com/en/microcontrollers-microprocessors/stm32mp2-series.html
🔹 اطلاعات محصولات Rockchip:
https://www.rock-chips.com/
#الکترونیک #STM32 #STM32MP2 #RK3588 #لینوکس #سیستم_های_نهفته #کنترل_موتور #FOC #SVPWM #هوش_مصنوعی #طراحی_صنعتی
🚀 STM32MP2 یا RK3588؟ کدام پردازنده برای ساخت سیستمهای صنعتی هوشمند بهتر است؟
🔧 تصور کنید میخواهید یک کنترلر صنعتی طراحی کنید که همزمان لینوکس را اجرا کند، موتور سهفاز را کنترل کند، اطلاعات انکودر را بخواند، دادهها را از طریق شبکه ارسال کند و یک رابط گرافیکی پیشرفته داشته باشد.
برای چنین پروژهای، دو خانوادهٔ پردازنده توجه زیادی را به خود جلب میکنند:
🔹 STM32MP2 از شرکت STMicroelectronics
🔹 RK3588 از شرکت Rockchip
هر دو قابلیتهای قدرتمندی دارند، اما معماری آنها متفاوت است و همین تفاوت میتواند روی انتخاب نهایی تأثیر بگذارد.
بیایید این دو گزینه را از دیدگاه یک طراح سیستمهای نهفته و کنترلرهای صنعتی بررسی کنیم. 👇
━━━━━━━━━━━━━━━━━━
🧠 ۱. STM32MP2؛ ترکیب لینوکس و پردازش بلادرنگ
یکی از ویژگیهای مهم خانوادهٔ STM32MP2، امکان ترکیب پردازندههای اجرای لینوکس با یک هستهٔ میکروکنترلری برای اجرای وظایف بلادرنگ است.
برای مثال، در مدل STM32MP257 میتوان از معماری زیر استفاده کرد:
🔹 هستههای Cortex-A35 برای اجرای لینوکس
🔹 هستهٔ Cortex-M33 برای اجرای برنامههای بلادرنگ
💡 این معماری چه فایدهای دارد؟
فرض کنید یک سیستم کنترل موتور طراحی کردهاید.
لینوکس میتواند وظایف زیر را انجام دهد:
📱 اجرای رابط گرافیکی
🌐 مدیریت ارتباطات شبکه
📊 نمایش اطلاعات موتور
💾 ذخیرهسازی دادهها و تنظیمات
⚙️ مدیریت فرمانهای کاربر
در همین زمان، برنامهای مستقل روی Cortex-M33 میتواند وظایف زمانحساس را انجام دهد؛ از جمله کنترل موتور، پردازش اطلاعات انکودر و اجرای الگوریتمهای کنترلی.
به این ترتیب، لازم نیست تمام وظایف سیستم به زمانبندی لینوکس وابسته باشند.
⚠️ البته برای کنترل دقیق موتور، باید قابلیتهای سختافزاری مدل انتخابی، از جمله تایمرها، ADC، PWM و مسیرهای دسترسی به تجهیزات جانبی، بهدقت بررسی شوند.
━━━━━━━━━━━━━━━━━━
🔥 ۲. RK3588؛ قدرت پردازشی بالا برای کاربردهای پیچیده
در طرف دیگر، RK3588 قرار دارد؛ پردازندهای قدرتمند که برای اجرای برنامههای سنگین لینوکسی، پردازش تصویر، گرافیک و هوش مصنوعی بسیار جذاب است.
مشخصات مهم این تراشه عبارتاند از:
⚡ چهار هستهٔ Cortex-A76
⚡ چهار هستهٔ Cortex-A55
⚡ پردازندهٔ گرافیکی Mali-G610
⚡ واحد پردازش عصبی با توان اسمی ۶ تریلیون عملیات در ثانیه برای محاسبات INT8
⚡ امکانات پیشرفتهٔ پردازش ویدئو
🤖 این توان پردازشی برای چه کاربردهایی مفید است؟
📷 پردازش تصویر دوربینهای صنعتی
🔍 تشخیص عیب محصولات با هوش مصنوعی
🎥 پردازش چند جریان ویدئویی
🌐 اجرای برنامههای پیچیدهٔ لینوکسی
📊 تحلیل حجم زیادی از دادهها
نکتهٔ جالب این است که RK3588 سه هستهٔ Cortex-M0 نیز دارد. بنابراین این تراشه فاقد هستههای میکروکنترلری نیست؛ اما قابلیت استفاده از آنها برای کنترل بلادرنگ به امکانات سختافزاری، ابزارهای توسعه و پشتیبانی نرمافزاری بستگی دارد.
━━━━━━━━━━━━━━━━━━
⚙️ ۳. کنترل موتور سهفاز؛ کدام معماری مناسبتر است؟
فرض کنید قصد دارید یک درایو صنعتی طراحی کنید که شامل این امکانات باشد:
🔹 الگوریتم کنترل برداری میدان یا FOC
🔹 تولید سیگنالهای SVPWM
🔹 انکودر افزایشی با خروجیهای A و B و Z
🔹 اندازهگیری جریان موتور با ADC
🔹 حلقهٔ کنترل با فرکانس ۲۰ کیلوهرتز
🔹 نمایش سرعت، جریان، دما و خطاها
🔹 ارتباط Ethernet برای دریافت فرمان و ارسال اطلاعات
در چنین سیستمی، زمانبندی دقیق اهمیت بسیار زیادی دارد.
⏱️ اگر حلقهٔ کنترل با فرکانس ۲۰ کیلوهرتز اجرا شود، زمان هر چرخه فقط ۵۰ میکروثانیه خواهد بود!
🔵 راهکار پیشنهادی با STM32MP2
میتوان برنامهٔ کنترل موتور را روی Cortex-M33 اجرا کرد و لینوکس را به وظایف رابط کاربری، شبکه و مدیریت اطلاعات اختصاص داد.
در این معماری:
🔸 برنامهٔ بلادرنگ، الگوریتم FOC را اجرا میکند.
🔸 تایمرهای سختافزاری، تولید دقیق PWM را بر عهده میگیرند.
🔸 سختافزار مناسب انکودر، موقعیت و سرعت موتور را اندازهگیری میکند.
🔸 ADC و DMA برای نمونهبرداری از جریان به کار گرفته میشوند.
🔸 لینوکس، اطلاعات موتور را نمایش میدهد و فرمانهای کاربر را مدیریت میکند.
مزیت این روش آن است که توقف یا کندشدن رابط گرافیکی لزوماً باعث توقف حلقهٔ کنترل موتور نمیشود.
البته باید زمان اجرای الگوریتم، تأخیر وقفهها و دسترسی به منابع سختافزاری اندازهگیری شود. وجود هستهٔ بلادرنگ بهتنهایی تضمینکنندهٔ عملکرد قطعی در هر شرایطی نیست.
━━━━━━━━━━━━━━━━━━
🟠 حضرت آیت الله العظمی امام باقر صلوات الله علیه می فرمایند : در آخر الزمان گروهى به وجود مىآيند كه در بين خود از فرقهاى پيروى مىكنند كه رياكار، قارى قرآن، اهل انجام عبادات، داراى حالتى زهدگونه، تازه به دوران رسيده و سفيه و ناداناند. امر به معروف و نهى از منكر را واجب نمىدانند مگر در صورتى كه از ضررى در امان باشند، براى خودشان رخصت و بهانه مىجويند، و از لغزشهاى علما و بد عملى آنها پيروى مىكنند. به نماز و روزه و چيزهايى كه به جاه و مالشان لطمهاى نزند روى مىآورند، و اگر نماز و ديگر كارهايى را كه انجام مىدهند نيز به مال و جانشان ضررى برساند، آن را هم همانند فريضهها و واجبات بزرگ ديگرى كه ترك كردند، رها مىكنند.
در واقع امر به معروف و نهى از منكر فريضه و واجب عظيم و بزرگى است كه فرايض و واجبات، تنها با آنها برپا مىشود.
اينجاست كه غضب الهى بر اين افراد تمام و كامل مىشود و همه را به كيفر خود گرفتار مىكند و نيكان را نيز در سرزمين بدكاران، و كوچكها را در سرزمين بزرگان هلاك و نابود مىكند.
📚 کافی ج ۵ ص ۵۵
📚 تهذیب الأحکام ج ۶ ص ۱۸۰
📚 مجموعه ورام ج ۲ ص ۱۲۵
🚀 معرفی تراشه جدید Allwinner T153؛ گامی بزرگ در نسل جدید پردازندههای صنعتی و HMI
اگر در حوزه طراحی سختافزار، سیستمهای نهفته (Embedded Systems) یا تجهیزات اتوماسیون صنعتی فعالیت میکنید، احتمالاً تراشه قدرتمند و اقتصادی T113-S3 را میشناسید. اما کمپانی Allwinner با معرفی خانواده جدید T153، استانداردهای جدیدی را برای پردازندههای صنعتی ارائه داده است!
در ادامه نگاهی به معماری، امکانات و مقایسه توان پردازشی T153 با T113-S3 میاندازیم.
🔹 مشخصات و ویژگیهای کلیدی Allwinner T153
1️⃣ معماری پردازشی دوگانه (Heterogeneous Architecture):
پردازنده اصلی: ۴ هسته Arm Cortex-A7 (۳۲ بیتی) با فرکانس کاری بالا (تا ۱.۶ گیگاهرتز) و ۵۱۲ کیلوبایت L2 Cache.
کمکپردازنده بلادرنگ (MCU): یک هسته مجزای RISC-V E907 با فرکانس ۶۰۰ مگاهرتز جهت مدیریت تسکهای Real-Time و پردازشهای کممصرف.
2️⃣ پشتیبانی از رمهای نسل جدید:
پشتیبانی از حافظههای DDR3 / DDR3L / DDR4 با فرکانس تا ۱۰۶۶ مگاهرتز (دارای نسخههای مجزا و مدلهای SiP با رم داخلی ۱۲۸ یا ۲۵۶ مگابایت).
3️⃣ رابطهای تصویر و نمایشگر (Display & Camera):
خروجیها: پشتیبانی همزمان از RGB، LVDS دوگانه (تا Full HD) و MIPI DSI (تا Full HD) همراه با شتابدهنده گرافیکی G2D.
ورودیها: دارای ISP داخلی (تا ۲ مگاپیکسل) و پشتیبانی از MIPI CSI و Parallel CSI.
4️⃣ ارتباطات صنعتی و شبکه:
شبکه: دارای ۳ پورت اترنت گیگابیتی (GMAC) با پشتیبانی از RGMII/RMII.
گذرگاههای صنعتی: پشتیبانی از ۲ پورت CAN-FD (سرعت بالا و مطمئن برای شبکه خودرویی و صنعتی) و Local Bus شانزده/سیودو بیتی.
پورتهای عمومی: ۱۰ پورت UART، ۶ پورت TWI/I2C، ۴ پورت SPI، و USB 2.0.
5️⃣ امکانات آنالوگ و سختافزار جانبی:
دارای ۲۴ کانال ADC عمومی (GPADC)، مبدل تاچپنل (TPADC) و تا ۳۰ کانال PWM با قابلیت کنترل استپر موتور.
🔍 مقایسه توان پردازشی T153 با T113-S3
اگر بخواهیم این دو تراشه را مستقیماً از نظر توان پردازشی (CPU Compute) و کارایی در سیستمعاملهای لینوکس و رابطهای گرافیکی (مانند LVGL یا Qt) مقایسه کنیم:
💥 قدرت پردازنده مرکزی (CPU):
تراشه T113-S3 دارای ۲ هسته Cortex-A7 تا فرکانس ۱.۲ گیگاهرتز است. اما تراشه T153 مجهز به ۴ هسته Cortex-A7 با فرکانس بالاتر تا ۱.۶ گیگاهرتز است. این یعنی T153 از نظر قدرت پردازش خالص بیش از ۲ برابر قویتر از T113-S3 عمل میکند!
⚡️ پردازشهای بلادرنگ (Real-Time):
در T113-S3 پردازشهای بلادرنگ به اجزای داخلی سادهتر متکی است، اما T153 دارای یک هسته پردازشی کاملاً مجزا و قدرتمند RISC-V E907 است که بار کارهای بلادرنگ را از روی پردازنده اصلی برمیدارد.
🚀 سرعت حافظه و پهنای باند:
تراشه T113-S3 محدود به حافظههای با سرعت پایینتر است، در حالی که T153 با پشتیبانی از DDR4 و فرکانسهای بالاتر، پهنای باند بسیار بیشتری را در اختیار سیستم قرار میدهد.
🌐 اتصالات و شبکه:
در حالی که T113-S3 تنها ۱ یا ۲ پورت اترنت و پشتیبانی از CAN 2.0 دارد، تراشه T153 به ۳ پورت اترنت گیگابیتی و پورتهای قدرتمند CAN-FD مجهز شده است.
💡 جمعبندی:
اگر پروژههای شما با T113-S3 به مرزهای نهایی قدرت پردازشی، کمبود هسته یا محدودیت در اجرای گرافیکهای سنگین برخورده است، T153 با ۲ برابر هسته پردازشی، فرکانس بالاتر و هسته کمکی RISC-V، ارتقای فوقالعادهای برای پروژههای حرفهای و صنعتی شما خواهد بود.
در این مسیر از تبدیلهای غیرضروری مانند RGB و BGR جلوگیری میشود.
هر تبدیل اضافه معمولاً باعث موارد زیر میشود:
مصرف بیشتر CPU
کپی بیشتر حافظه
تأخیر بیشتر
مصرف بیشتر RAM
کاهش FPS━━━━━━━━━━━━━━ ۵. تفاوت MJPEG، YUYV و NV12 MJPEG یک فرمت فشرده است. YUYV یک فرمت خام با نمونهبرداری YUV 4:2:2 است. NV12 یک فرمت خام با نمونهبرداری YUV 4:2:0 است. MJPEG برای انتقال روی USB بسیار کمحجمتر است. YUYV اطلاعات خام بیشتری دارد، اما پهنایباند زیادی مصرف میکند. NV12 برای پردازش سختافزاری و ورود به APU معمولاً مناسبتر است. MJPEG برای HTTP و ذخیره AVI مناسبتر است. YUYV برای پردازش خام مناسب است، اما برای ضبط باید Encode شود. NV12 برای انتقال USB معمولاً خروجی مستقیم رایج دوربین نیست، بلکه بیشتر یک فرمت میانی در داخل سیستم است. مسیر معمول هرکدام:
MJPEG:
MJPEG → JPEG Decode → NV12 یا RGB → APU
YUYV:
YUYV → NV12 یا RGB → APU
NV12:
NV12 → Resize و Normalize → APU━━━━━━━━━━━━━━ ۶. بهترین انتخاب برای T527 چیست؟ انتخاب نهایی به هدف پروژه بستگی دارد. اگر هدف اصلی پخش زنده و ضبط AVI است:
MJPEGانتخاب بهتری است، چون:
MJPEG → HTTP
MJPEG → AVIدر این حالت فریمهای JPEG بدون Encode مجدد در AVI ذخیره میشوند. اگر هدف اصلی پردازش تصویر با APU یا NPU است:
YUYV → NV12 → APUمسیر مناسبی است، چون مرحله JPEG Decode حذف میشود. اگر دوربین در YUYV رزولوشن بالا را فقط با 10 FPS ارائه کند، اما در MJPEG همان رزولوشن را با 30 FPS ارائه دهد، MJPEG در عمل میتواند سریعتر باشد. اگر هم پردازش تصویر و هم ضبط ویدئو لازم باشد، مسیر پیشنهادی میتواند این باشد:
YUYV
├── NV12 → APU یا NPU
└── JPEG Encode → AVI یا HTTPدر این حالت باید از JPEG Encoder سختافزاری یا نرمافزاری استفاده شود. ━━━━━━━━━━━━━━ ۷. آیا YUYV همیشه سریعتر از MJPEG است؟ خیر. YUYV به JPEG Decode نیاز ندارد، اما حجم خام آن بسیار زیاد است. اگر USB، حافظه یا مسیر انتقال نتواند حجم داده را بهموقع منتقل کند، FPS کاهش پیدا میکند. مثلاً ممکن است دوربین در حالت زیر کار کند:
YUYV 1280x720 = 10 FPS
MJPEG 1280x720 = 30 FPSدر این شرایط، با اینکه YUYV Decode نمیخواهد، MJPEG برای دریافت فریم سریعتر است. بنابراین همیشه باید خروجی واقعی دوربین را بررسی کرد:
v4l2-ctl -d /dev/video0 --list-formats-ext
در این خروجی باید به سه مورد توجه کرد:
فرمت تصویر
رزولوشن
FPS قابل پشتیبانی━━━━━━━━━━━━━━ ۸. بررسی فرمتهای واقعی دوربین برای نمایش فرمتها، رزولوشنها و FPSهای واقعی دوربین:
v4l2-ctl -d /dev/video0 --list-formats-ext
نمونه خروجی:
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
[1]: 'MJPG' (Motion-JPEG, compressed)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)در این نمونه:
YUYV در 640x480 با 30 FPS موجود است.
MJPEG در 1280x720 با 30 FPS موجود است.برای پردازش با APU، YUYV میتواند مناسب باشد. برای پخش زنده با رزولوشن بالا، MJPEG انتخاب بهتری است. ━━━━━━━━━━━━━━ ۹. مسیر پیشنهادی برای T527 اگر هدف، پردازش سریع تصویر با کمترین تبدیل باشد:
دوربین USB
↓
YUYV
↓
NV12 با G2D یا سختافزار تصویر
↓
Resize
↓
Normalize
↓
APU یا NPUاگر هدف، پخش زنده و ضبط AVI باشد:
دوربین USB
↓
MJPEG
├── HTTP Stream
└── AVI بدون Encode مجدداگر هر دو هدف همزمان وجود داشته باشد:
دوربین USB
↓
YUYV
├── NV12 → APU یا NPU
└── JPEG Encode → AVI یا HTTPالبته مسیر سوم به JPEG Encoder نیاز دارد و از نظر پیادهسازی پیچیدهتر است. ━━━━━━━━━━━━━━ ✅ جمعبندی اگر اولویت اصلی پخش زنده و ضبط AVI است:
MJPEG را انتخاب کن.اگر اولویت اصلی پردازش تصویر با APU در T527 است:
YUYV → NV12 → APUاگر مدل فقط RGB یا BGR قبول میکند:
YUYV → RGB یا BGR → Resize و Normalize → APUاگر هدف همزمان پردازش تصویر و ضبط ویدئو است:
YUYV → NV12 → APU
YUYV → JPEG Encode → AVI یا HTTPقاعده اصلی این است:
کمترین تبدیل
کمترین کپی حافظه
استفاده از فرمت native شتابدهندهیعنی هرچه مسیر پردازش کوتاهتر باشد، سرعت بیشتر و تأخیر کمتر خواهد بود.
🎥 آموزش YUYV، NV12 و MJPEG برای پردازش تصویر با T527
در پروژههای پردازش تصویر، انتخاب فرمت مناسب دوربین روی سرعت، مصرف USB، حافظه و عملکرد APU یا NPU تأثیر مستقیم دارد.
سه فرمت مهمی که معمولاً در دوربینهای USB میبینیم عبارتاند از:
MJPEG
YUYV
NV12
در ادامه تفاوت این فرمتها و بهترین مسیر پردازش روی تراشههایی مانند Allwinner T527 را بررسی میکنیم.
━━━━━━━━━━━━━━
۱. MJPEG چیست؟
در حالت MJPEG، دوربین هر فریم تصویر را بهصورت جداگانه با الگوریتم JPEG فشرده میکند.
ساختار ویدئو تقریباً به این شکل است:
JPEG Frame 1
JPEG Frame 2
JPEG Frame 3
JPEG Frame 4
...هر فریم یک تصویر JPEG مستقل است. مزیت مهم MJPEG این است که حجم اطلاعات بسیار کمتر از تصویر خام است. به همین دلیل پهنایباند کمتری از USB مصرف میکند و برای دوربینهای USB، پخش زنده و ضبط ویدئو گزینه بسیار مناسبی است. مزایای MJPEG: ✅ مصرف کمتر پهنایباند USB ✅ مناسب برای دوربینهای USB ✅ مناسب برای HTTP Streaming ✅ امکان ذخیره مستقیم فریمهای JPEG در AVI ✅ عدم نیاز به JPEG Encode مجدد هنگام ضبط معایب MJPEG: ❌ تصویر از قبل فشرده شده است ❌ برای پردازش باید JPEG Decode انجام شود ❌ بعد از Decode معمولاً باید تصویر به YUV یا RGB تبدیل شود ❌ Decode کردن هر فریم مقداری زمان و حافظه مصرف میکند مسیر معمول پردازش MJPEG:
USB Camera
↓
MJPEG
↓
JPEG Decoder
↓
NV12 یا RGB
↓
Resize و Normalize
↓
APU یا NPUبرای پخش زنده و ضبط AVI، مسیر MJPEG بسیار مناسب است:
MJPEG
├── HTTP Stream
└── AVI بدون Encode مجدد━━━━━━━━━━━━━━ ۲. YUYV چیست؟ YUYV یک فرمت خام و فشردهنشده از خانواده YUV است. در YUYV اطلاعات روشنایی و رنگ مستقیماً از دوربین دریافت میشود و JPEG Decode وجود ندارد. چیدمان ساده دادهها:
Y0 U0 Y1 V0
Y2 U1 Y3 V1
...هر چهار بایت، اطلاعات دو پیکسل را نگهداری میکند:
Y0 و Y1 = روشنایی دو پیکسل
U0 و V0 = اطلاعات رنگ مشترکدر نتیجه هر پیکسل تقریباً ۲ بایت فضا مصرف میکند. برای تصویر 1280 در 720:
1280 × 720 × 2 = 1,843,200 bytesیعنی هر فریم YUYV حدود 1.76 مگابایت حجم دارد. اگر نرخ تصویر 30 فریم بر ثانیه باشد:
1,843,200 × 30 ≈ 55 MB/sبنابراین YUYV در رزولوشن بالا پهنایباند زیادی از USB مصرف میکند. مزایای YUYV: ✅ بدون نیاز به JPEG Decode ✅ کیفیت خام تصویر ✅ مناسب برای پردازش لحظهای ✅ تأخیر کمتر نسبت به MJPEG، در صورتی که USB گلوگاه نباشد ✅ مناسب برای تبدیل سختافزاری با G2D معایب YUYV: ❌ حجم داده بسیار زیاد ❌ مصرف بالای پهنایباند USB ❌ مصرف بیشتر حافظه ❌ ممکن است در رزولوشن بالا FPS کاهش پیدا کند ❌ برای ذخیره AVI باید ابتدا JPEG Encode انجام شود ❌ اگر APU مستقیماً YUYV را قبول نکند، تبدیل فرمت لازم است مسیر پردازش YUYV:
USB Camera
↓
YUYV خام
↓
تبدیل به NV12 یا RGB
↓
Resize و Normalize
↓
APU یا NPU━━━━━━━━━━━━━━ ۳. NV12 چیست؟ NV12 یک فرمت خام YUV با نمونهبرداری رنگی 4:2:0 است. NV12 مانند JPEG فشرده نیست، اما اطلاعات رنگ را با حجم کمتری ذخیره میکند. ساختار NV12 از دو قسمت تشکیل شده است. قسمت اول، صفحه Y است:
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Yبرای هر پیکسل یک مقدار روشنایی Y وجود دارد. قسمت دوم، صفحه UV است:
U V U V U V
U V U V U Vدر NV12 اطلاعات U و V بهصورت درهمتنیده ذخیره میشوند. تعداد اطلاعات رنگ در NV12 کمتر از اطلاعات روشنایی است. به همین دلیل NV12 بهطور میانگین 1.5 بایت برای هر پیکسل مصرف میکند. برای تصویر 1280 در 720:
1280 × 720 × 1.5 = 1,382,400 bytesیعنی هر فریم NV12 حدود 1.32 مگابایت حجم دارد. مقایسه حجم یک فریم 1280 در 720:
YUYV ≈ 1.76 MB
NV12 ≈ 1.32 MB
MJPEG = حجم متغیر و معمولاً بسیار کمترNV12 برای پردازش ویدئو و شتابدهندههای سختافزاری بسیار مناسب است، چون هم خام است و هم حجم کمتری نسبت به YUYV دارد. ━━━━━━━━━━━━━━ ۴. چرا NV12 برای APU یا NPU مناسب است؟ بسیاری از APUها و NPUها، مستقیماً یا با یک تبدیل بسیار ساده از فرمتهایی مانند NV12 استفاده میکنند. مزایای NV12 برای پردازش: ✅ بدون JPEG Decode ✅ حجم کمتر از YUYV ✅ مناسب برای پردازش سختافزاری ✅ قابل استفاده با G2D ✅ مناسب برای Resize و Color Conversion ✅ مناسب برای پردازش ویدئویی و هوش مصنوعی اگر مدل APU ورودی NV12 را قبول کند، مسیر پیشنهادی این است:
YUYV
↓
NV12 با G2D یا سختافزار تصویر
↓
Resize
↓
Normalize
↓
APU یا NPU
