مهلة نقل Bulk في USB: تصحيح أخطاء السرعة العالية والكاملة وSTALL وNAK وتأخيرات البرامج الثابتة للجهاز

كيفية تشخيص مهلات نقل bulk في USB، والقراءات البطيئة، وكتابات متوقفة، وسلوك NAK، واستعادة توقف نقطة النهاية، وعدم تطابق السرعة، وتأخيرات البرامج الثابتة بأدلة USB.

مهلة نقل bulk USB, نقطة نهاية bulk USB, USB عالي السرعة, USB كامل السرعة, توقف نقطة النهاية, تشخيص USB

تُستخدم عمليات نقل bulk في USB عندما تكون الصحة أهم من التوقيت الثابت. تستخدم أجهزة التخزين والمحولات التسلسلية ومسبقات التصحيح ومحدثات البرامج الثابتة والماسحات الضوئية والأجهزة الخاصة بالبائع والعديد من منتجات الحصول على البيانات نقاط نهاية bulk. عندما تفشل، يبحث المستخدمون عن "مهلة نقل bulk في USB"، و"توقف نقطة نهاية bulk"، و"مهلة قراءة USB"، و"مهلة كتابة USB"، و"فشل نقل bulk في libusb"، و"جهاز USB يتوقف عن الاستجابة أثناء نقل bulk".

عادةً ما يرى التطبيق مهلة أو خطأ إدخال/إخراج. قد يخبر الناقل قصة أغنى: NAK الجهاز لفترة طويلة، أو توقف نقطة النهاية، أو أعاد المضيف المحاولة، أو تمت إعادة تعيين الجهاز، أو كان حجم النقل خاطئًا، أو كانت سرعة الجهاز أقل من المتوقع، أو حجبت البرامج الثابتة أثناء تحضير البيانات.

يكون Bus Scope مفيدًا لأن حالات فشل نقل bulk تحتاج إلى أدلة على مستوى نقطة النهاية، وليس مجرد تتبع مكدس من التطبيق.

ما تجيده عمليات نقل Bulk

عمليات نقل Bulk موثوقة على مستوى بروتوكول USB. تستخدم عرض النطاق الترددي المتاح ويمكنها إعادة المحاولة. إنها جيدة لحركة البيانات الكبيرة حيث تكون الكمون أقل صرامة من الصحة.

تشمل أجهزة bulk الشائعة:

  • تخزين USB كبير السعة
  • محولات CDC التسلسلية
  • أدوات البرامج الثابتة الخاصة بالبائع
  • مسبقات التصحيح
  • أجهزة القياس
  • الطابعات والماسحات الضوئية
  • بعض أجهزة الالتقاط
  • أنابيب بيانات FPGA أو المتحكم الدقيق

لأن عمليات نقل bulk تستخدم عرض النطاق الترددي المتبقي للناقل، يمكن أن يختلف الأداء حسب حركة USB الأخرى وجدولة المضيف.

المهلة لا تعني دائمًا فقدان الحزم

عادةً ما تعني مهلة نقل bulk أن طلب جانب المضيف لم يكتمل ضمن مهلة التطبيق. يمكن أن يحدث ذلك حتى لو كان ناقل USB يتصرف بشكل قانوني.

تشمل الأسباب:

  • الجهاز ليس لديه بيانات جاهزة ويستمر في NAK.
  • البرامج الثابتة مشغولة وتأخر الاستجابة.
  • نقطة النهاية متوقفة بعد STALL.
  • أرسل المضيف طلبًا إلى نقطة النهاية الخاطئة.
  • حجم النقل لا يطابق توقع البروتوكول.
  • تمت إعادة تعيين الجهاز أو فصله.
  • لم يقدم برنامج التشغيل النقل بشكل صحيح.
  • مسار السرعة الكاملة بطيء جدًا للمعدل المطلوب.
  • جهاز آخر يستهلك عرض النطاق الترددي للناقل.
  • مهلة التطبيق عدوانية جدًا.

يجب أن يُظهر التتبع أي من هذا محتمل.

سلوك NAK

يمكن لأجهزة USB الرد بـ NAK للإشارة إلى أنها غير جاهزة مؤقتًا. NAK ليس بالضرورة خطأ. إنها إشارة تحكم في التدفق.

لنقطة نهاية bulk IN، قد تعني NAKs المتكررة أن الجهاز ليس لديه بيانات بعد. لنقطة نهاية bulk OUT، قد تعني NAKs أن الجهاز لا يمكنه قبول المزيد من البيانات بعد.

المشكلة هي المدة والسياق. بعض NAKs عادية. NAKs مستمرة حتى مهلة التطبيق تعني أن الجهاز لم يصبح جاهزًا أبدًا أو أن المضيف توقع البيانات في الوقت الخطأ.

STALL وتوقف نقطة النهاية

يختلف STALL عن NAK. عادة ما يعني أن نقطة النهاية توقفت أو أن الطلب غير مدعوم في هذا السياق. غالبًا ما تتطلب الاستعادة:

CLEAR_FEATURE(ENDPOINT_HALT)

إذا لم يمسح المضيف التوقف، فقد تستمر عمليات النقل اللاحقة في الفشل. إذا توقفت نقطة النهاية مرة أخرى فورًا بعد المسح، فقد تكون البرامج الثابتة للجهاز ترفض تسلسل الأوامر.

ابحث عن:

  • أول STALL قبل المهلة.
  • CLEAR_FEATURE(ENDPOINT_HALT).
  • ما إذا كان النقل يستأنف بعد المسح.
  • نفس الأمر يسبب STALL في كل مرة.
  • إعادة الضبط بعد STALL المتكرر.

توقعات السرعة العالية مقابل السرعة الكاملة

تغير سرعة USB ما هو الإنتاجية الواقعية. لا يمكن لجهاز يعمل بسرعة كاملة تقديم إنتاجية عالية السرعة. قد يرجع جهاز قادر على السرعة العالية بسبب الكابل أو الموزع أو المنفذ أو سلامة الإشارة أو تفاوض الجهاز.

إذا افترض التطبيق أداء السرعة العالية لكن الجهاز تم تعداده بسرعة كاملة، فقد تظهر مهلات أثناء عمليات النقل الكبيرة.

تحقق من الواصفات والسرعة المتفاوض عليها وحجم الحزمة الأقصى لنقطة النهاية وتيرة النقل الفعلية. لا تستنتج السرعة من شكل الموصل أو تسمية التسويق.

بروتوكولات أوامر البرامج الثابتة

تنفذ العديد من أجهزة bulk بروتوكول أمر/استجابة فوق USB. يكتب المضيف أمرًا إلى bulk OUT وينتظر البيانات على bulk IN.

تحدث المهلات عندما:

  • تنسيق الأمر خاطئ.
  • الجهاز يتوقع طلب تحكم قبل نقل bulk.
  • يرسل الجهاز الحالة على نقطة نهاية مختلفة.
  • يقرأ المضيف في وقت مبكر جدًا.
  • يقرأ المضيف كثيرًا جدًا.
  • تحجب البرامج الثابتة أثناء معالجة الأمر.
  • يتطلب الجهاز حد حزمة ذات الطول الصفري.
  • لم يتم مسح حالة الخطأ السابقة.

يمكن أن تُظهر أدلة الحزم ما إذا كان الجهاز تجاهل الأمر أو أوقفه أو قبله لكن لم يرد أو رد على نقطة نهاية أخرى.

حجم نقل Bulk والحزم القصيرة

غالبًا ما تستخدم بروتوكولات bulk في USB الحزم القصيرة للإشارة إلى نهاية النقل عندما يكون الطول المطلوب أكبر من البيانات الفعلية. إذا توقع المضيف طولًا ثابتًا لكن الجهاز أرسل حزمة قصيرة، فقد يفسر التطبيق النتيجة بشكل غير صحيح. إذا انتظر المضيف المزيد من البيانات بعد أن أنهى الجهاز النقل بالفعل، فقد تحدث مهلة على طبقة التطبيق.

ابحث عن:

  • طول النقل المطلوب.
  • الطول المُعاد الفعلي.
  • الحزمة القصيرة.
  • الحزمة ذات الطول الصفري.
  • تأطير البروتوكول فوق USB.

هذا مهم بشكل خاص في البرامج الثابتة المخصصة والأدوات المستندة إلى libusb.

قائمة مراجعة التصحيح

استخدم هذه العملية:

  1. التقط التعداد وواصفات نقطة النهاية.
  2. تأكد من سرعة الجهاز وحجم الحزمة الأقصى لنقطة النهاية.
  3. حدد نقاط نهاية bulk IN وbulk OUT.
  4. التقط الأمر أو النقل الذي انتهت مهلته.
  5. تحقق مما إذا كانت نقطة النهاية ترجع NAK أو STALL أو بيانات أو فصل.
  6. افحص استعادة CLEAR_FEATURE(ENDPOINT_HALT) إذا حدث STALL.
  7. قارن الطول المطلوب والطول الفعلي.
  8. تحقق مما إذا كان الجهاز يرسل حزمة قصيرة أو حزمة ذات طول صفري.
  9. قارن المنفذ المباشر مقابل الموزع ومسار السرعة العالية مقابل السرعة الكاملة.
  10. اربط بسجلات البرامج الثابتة إذا كانت متاحة.

التشخيص النهائي

مهلة نقل bulk في USB ليست خطأ واحدًا. يمكن أن تعني سلوك NAK الطبيعي تجاوز مهلة التطبيق، أو عدم استعادة STALL لنقطة النهاية، أو عدم رد البرامج الثابتة، أو أن السرعة أقل من المتوقع، أو تأطير البروتوكول خاطئ، أو تمت إعادة تعيين الجهاز.

يساعد Bus Scope من خلال كشف تسلسل مستوى نقطة النهاية بحيث تصبح المهلة أدلة USB قابلة للتشخيص بدلاً من فشل إدخال/إخراج عام.