تصحيح أخطاء الأجهزة المركبة USB: أرقام الواجهات وIAD ونقاط النهاية وربط برنامج التشغيل
كيفية تصحيح أخطاء الأجهزة المركبة USB عندما تعمل واجهة واحدة وتفشل أخرى، أو يربط المضيف برنامج التشغيل الخاطئ.
الأجهزة المركبة USB ملائمة وخطيرة. يمكن لجهاز واحد أن يعرض عناصر تحكم HID وCDC التسلسلية وتخزين الكتلة ونقاط نهاية خاصة بالبائع والصوت والفيديو أو واجهات التشخيص. عندما يوصف كل شيء بشكل صحيح، يربط المضيف برامج التشغيل الصحيحة وتعمل كل وظيفة. عندما يكون حقل واصف واحد خاطئًا، يمكن أن يبدو الجهاز بأكمله غير موثوق.
عادة ما تشير عمليات البحث مثل "لم يتم التعرف على جهاز USB المركب"، أو "لا تظهر واجهة CDC"، أو "HID يعمل لكن التسلسلي لا يعمل"، أو "ربط برنامج تشغيل خاطئ لواجهة USB" إلى بنية الواصفات، أو ترقيم الواجهة، أو تعيين نقطة النهاية، أو سلوك واصف ربط الواجهة.
الأجهزة المركبة تحتاج تهيئة متماسكة
واصف التهيئة هو الخريطة على المستوى الأعلى. يجب أن يصف الطول الكلي وعدد الواجهات وسمات الطاقة وجميع واصفات الواجهة ونقطة النهاية المتداخلة. إذا كان wTotalLength خاطئًا، فقد لا يقرأ المضيف جميع الوظائف. إذا كان عدد الواجهات خاطئًا، فقد يتجاهل المضيف الواجهات اللاحقة. إذا تصادمت عناوين نقطة النهاية، تصبح عمليات النقل غامضة أو غير صالحة.
افحص:
- الطول الكلي للتهيئة
- عدد الواجهات
- أرقام الواجهات
- الإعدادات البديلة
- عناوين نقطة النهاية
- اتجاهات نقطة النهاية
- قيم الفئة والفئة الفرعية والبروتوكول
- ترتيب الواصفات
يجب أن يُظهر الالتقاط ما إذا كان المضيف قد طلب التهيئة الكاملة وما هي البايتات التي أرجعها الجهاز.
IAD يساعد في تجميع الواجهات ذات الصلة
تُستخدم واصفات ربط الواجهة غالبًا لتجميع واجهات متعددة تنتمي إلى وظيفة واحدة، مثل اتصال CDC بالإضافة إلى بيانات CDC. بدون التجميع الصحيح، قد يربط المضيف برامج التشغيل بشكل غير صحيح أو يعرض جزءًا فقط من الوظيفة.
أدلة IAD للفحص:
- رقم الواجهة الأولى
- عدد الواجهات
- فئة الوظيفة والفئة الفرعية والبروتوكول
- الموضع قبل الواجهات المجمعة
- الاتساق مع واصفات الواجهة الفعلية
إذا لم يظهر CDC التسلسلي لكن HID يعمل، فقد تكون واجهة HID سليمة بينما تجميع CDC خاطئ.
تصادمات عنوان نقطة النهاية يسهل تفويتها
تتضمن عناوين نقطة النهاية الاتجاه. نقطة النهاية 0x81 و0x01 اتجاهات مختلفة، لكن نقطتي نهاية IN بنفس العنوان ليستا صالحتين داخل تهيئة الجهاز نفسها. أحيانًا تنسخ فرق البرامج الثابتة واصفات نقطة النهاية بين الواجهات وتنسى تحديث العناوين.
تشمل الأعراض:
- واجهة واحدة تعمل، أخرى صامتة
- يرسل المضيف عمليات نقل إلى نقطة نهاية غير متوقعة
- تحميل برنامج تشغيل الفئة لكن التطبيق لا يحصل على بيانات
- توقف نقطة النهاية أو المهلة بعد التهيئة
- وظيفة واحدة فقط تعمل في كل مرة
يجب أن يُظهر الالتقاط واصفات نقطة النهاية وحركة النقل اللاحقة جنبًا إلى جنب.
ربط برنامج التشغيل هو دليل أيضًا
يختار المضيف برامج التشغيل بناءً على الواصفات. قد يكون للجهاز الذي يربط بشكل غير صحيح أدلة واصف توضح السبب. يمكن أن تؤثر الفئة والفئة الفرعية والبروتوكول وواصفات ربط الواجهة ومعرّفات التوافق وواصفات OS الخاصة على الربط.
لا تشخّص ربط برنامج التشغيل فقط من إدارة الأجهزة أو سجلات التطبيق. قارن طلبات الفئة الخاصة بالمضيف بشجرة الواصف. إذا لم تصل طلبات الفئة المتوقعة أبدًا، فربما لم يربط المضيف برنامج التشغيل المتوقع.
أين يتناسب Bus Scope
يجب أن يساعد Bus Scope فرق البرامج الثابتة في فحص الأجهزة المركبة على كلا المستويين:
- خريطة الواصفات
- أدلة النقل بعد ربط برنامج التشغيل
تُظهر جلسة .bscope جيدة لتصحيح أخطاء الأجهزة المركبة:
- جميع الواجهات
- تجميع IAD
- تعيينات نقطة النهاية
- الطلبات الخاصة بالفئة لكل واجهة
- بايتات الواصفات الخام
- حالة النقل بعد التهيئة
يجعل ذلك محادثة الدعم محددة. بدلاً من "لا يحب Windows جهازنا المركب"، يمكن أن يقول التقرير "الواجهة 2 لا تتلقى أبدًا طلبات فئة CDC لأن واصف التجميع لا يطابق تخطيط الواجهة المُعلن".
هذا هو مستوى الأدلة التي تحتاجها فرق البرامج الثابتة.