تصحيح أخطاء مرحلة الحالة لنقل التحكم في USB
كيفية تصحيح مشكلات مرحلة الحالة لنقل التحكم في USB، والحزم ذات الطول الصفري، وتوقفات نقطة النهاية الصفرية، وتسلسل SETUP/DATA/STATUS، وطلبات الواصفات، وحالات فشل أوامر البائع.
تبدو عمليات نقل التحكم في USB بسيطة حتى يفشل الجهاز في مرحلة الحالة. يبحث المستخدمون عن "مرحلة حالة نقل التحكم USB"، و"حزمة ذات طول صفري USB"، و"توقف نقطة النهاية الصفرية"، و"SETUP DATA STATUS USB"، و"مهلة نقل التحكم"، و"فشل طلب البائع" عندما تعمل الواصفات ولكن أمر واحد يتوقف أو تنتهي مهلته.
يكون Bus Scope مفيدًا لأن حالات فشل نقل التحكم تتطلب رؤية جميع المراحل معًا. حزمة الإعداد وحدها ليست كافية. مرحلة البيانات ومرحلة الحالة تثبتان ما إذا كان المضيف والجهاز قد أكملا المعاملة.
مراحل نقل التحكم
عادة ما يحتوي نقل التحكم على:
- مرحلة SETUP.
- مرحلة DATA الاختيارية.
- مرحلة STATUS.
غالبًا ما تستخدم مرحلة الحالة حزمة ذات طول صفري في الاتجاه المعاكس لمرحلة البيانات. تؤكد الإكمال.
إذا فشلت مرحلة الحالة، قد يُبلغ المضيف عن مهلة حتى لو كان الجهاز قد تبادل بعض البيانات بالفعل.
ارتباك الحزمة ذات الطول الصفري
الحزمة ذات الطول الصفري ليست تلقائيًا "لا توجد بيانات" بمعنى التطبيق. في عمليات نقل التحكم، قد تكون مصافحة الحالة المطلوبة.
أخطاء شائعة:
- لا تؤكد البرامج الثابتة مرحلة الحالة.
- يتوقع المضيف حزمة حالة ذات طول صفري ويحصل على توقف.
- يرسل الجهاز بيانات عندما يجب أن تكون الحالة فارغة.
- يكمل أمر البائع مرحلة البيانات لكنه يفشل المصافحة النهائية.
- تنسى آلة حالة البرامج الثابتة تسليح نقطة النهاية الصفرية.
هذه الأخطاء شائعة في أوامر البائع المخصصة وbootloaders.
نقطة النهاية الصفرية خاصة
تعالج نقطة النهاية الصفرية التعداد وطلبات التحكم. إذا كانت حالة نقطة النهاية الصفرية فاسدة، يمكن أن يصبح الجهاز بأكمله غير مستقر.
الأعراض:
- يبدأ التعداد لكنه يفشل في واصف لاحق.
- يعمل طلب البائع مرة ثم يتوقف.
- يحتاج الجهاز إلى فصل/إعادة توصيل بعد نقل التحكم.
- SET_ADDRESS أو SET_CONFIGURATION غير موثوق.
- فشل تقرير ميزة HID عبر مسار التحكم.
- يُرجع طلب فصل DFU لكن الجهاز لا يغير الوضع أبدًا.
يجب أن يُظهر Bus Scope ما إذا كانت نقطة النهاية الصفرية قد استعادت بعد توقف أو بقيت معطلة.
نقل تحكم IN مقابل OUT
يغير اتجاه التحكم اتجاه مرحلة الحالة.
لطلب IN:
- يرسل المضيف SETUP.
- يرسل الجهاز DATA.
- يرسل المضيف حزمة حالة OUT ذات طول صفري.
لطلب OUT:
- يرسل المضيف SETUP.
- يرسل المضيف DATA إذا كان هناك أي.
- يرسل الجهاز حزمة حالة IN ذات طول صفري.
غالبًا ما تحدث أخطاء البرامج الثابتة عندما يتم اختبار اتجاه واحد أكثر من الآخر.
حالات فشل الواصفات مقابل أوامر البائع
قد تعمل طلبات الواصفات القياسية لأنها تستخدم مسارات برامج ثابتة مختبرة جيدًا. قد تفشل الطلبات الخاصة بالبائع لأن معالجًا مخصصًا يسيء التعامل مع الطول أو الاتجاه أو مرحلة الحالة.
الأدلة:
bmRequestType.bRequest.wValue.wIndex.wLength.- طول البيانات الفعلي.
- نتيجة مرحلة الحالة.
- توقف، NAK، مهلة، أو إعادة تعيين.
يجب تفسير حقول حزمة الإعداد مع سلوك المرحلة المرصودة.
قائمة مراجعة التصحيح
استخدم سير العمل هذا:
- التقط نقل التحكم الكامل.
- فك تشفير حقول SETUP.
- حدد اتجاه النقل.
- تحقق من طول البيانات المتوقع.
- تحقق من بايتات مرحلة البيانات.
- تحقق من اتجاه مرحلة الحالة.
- ابحث عن حزمة ذات طول صفري.
- تحقق من التوقف أو المهلة.
- قارن الطلبات القياسية والخاصة بالبائع.
- حافظ على سلوك استعادة نقطة النهاية الصفرية.
التشخيص النهائي
تكون حالات فشل نقل التحكم في USB غالبًا حالات فشل في مرحلة الحالة، وليس فقط مشكلات حزمة الإعداد. تهم الحزم ذات الطول الصفري وحالة نقطة النهاية الصفرية والاتجاه والمصافحة النهائية.
يساعد Bus Scope المهندسين على إثبات ما إذا كان الجهاز قد فشل أثناء SETUP أو DATA أو STATUS أو معالجة ZLP أو استعادة نقطة النهاية الصفرية أو معالجة أمر البائع.