تصحيح أخطاء واصف تقرير HID: لماذا يعد الجهاز بنجاح لكن المضيف يقرأ بيانات خاطئة
كيفية تشخيص أخطاء واصف تقرير HID التي تجعل جهاز USB يعد بنجاح لكنه يتصرف بشكل غير صحيح على المضيف.
HID جذاب لأن العديد من الأجهزة يمكن أن تعمل دون برامج تشغيل مخصصة. تستفيد لوحات المفاتيح وأجهزة الاستشعار والمقابض وقارئات الباركات ولوحات التحكم وأجهزة HID الخاصة بالبائع جميعها من مجموعة المضيف القياسية. لكن HID ينقل التعقيد أيضًا إلى واصف التقرير. يمكن للجهاز أن يعد بنجاح ولا يزال يرسل بيانات يفسّرها المضيف بشكل غير صحيح.
هذه واحدة من أكثر مصائد البرامج الثابتة في USB شيوعًا: يُخلط بين نجاح التعداد وصحة HID.
واصف التقرير يحدد عقد البيانات
يخبر واصف تقرير HID المضيف بكيفية تفسير البايتات. يحدد الاستخدامات، وأحجام التقارير، وعدد التقارير، والنطاقات المنطقية، والنطاقات الفيزيائية، والتجميعات، ومعرّفات التقارير. إذا قال الواصف شيئًا وأرسلت البرامج الثابتة شيئًا آخر، فإن المضيف يتبع الواصف.
تشمل المشكلات الشائعة:
- البرامج الثابتة ترسل 8 بايتات لكن الواصف يصف 7
- معرّف التقرير مفقود أو زائد
- القيم الموقّعة موصوفة كغير موقّعة
- الحد الأدنى/الأقصى المنطقي لا يطابق النطاق الفعلي
- صفحة الاستخدام خاطئة
- بتات الحشو محسوبة بشكل غير صحيح
- تقارير متعددة تشترك في تخطيط مربك
- تقارير الإدخال والإخراج مختلطة
قد تظهر الأعراض في التطبيق كقيم خاطئة، أو أزرار مفقودة، أو تقارير مُتجاهَلة، أو قراءات متقطعة.
التقط الواصف والتقارير معًا
تصحيح أخطاء HID من واصف التقرير وحده غير مكتمل. التصحيح من بايتات الحمولة وحدها غير مكتمل أيضًا. تحتاج إلى كليهما.
يعرض التقاط HID المفيد:
- واصف الجهاز
- واصفات التهيئة والواجهة
- واصف HID
- طلب واصف التقرير والاستجابة
- تقارير IN للمقاطعة
- تقارير OUT للمقاطعة إذا استُخدمت
- عمليات نقل التحكم لتقارير الميزات
- معرّفات التقارير وأطوال الحمولة
ثم يمكن للمهندس مقارنة التخطيط المُعلن مع البايتات الفعلية. إذا كان واصف التقرير يقول Report Count 3 وحمولة المقاطعة تحمل أربع قيم، فيجب أن يجعل الالتقاط ذلك مرئيًا.
سلوك المضيف يمكن أن يكون صحيحًا حتى عندما يبدو خاطئًا
يعتقد مطورو البرامج الثابتة أحيانًا أن المضيف يُسقط البيانات. في الواقع، قد يكون المضيف يحلل وفقًا للواصف الذي تلقاه. إذا أعلن الواصف عن حشو أو معرّف تقرير مختلف، فقد تظهر البيانات مزاحة، أو مقتطعة، أو مُتجاهَلة.
لهذا السبب يجب أن يتضمن تقرير الدعم الجيد البايتات الخام. التفسير المفكوك مفيد، لكن البايتات الخام تحسم النزاعات. يصبح السؤال:
- ماذا أرسلت البرامج الثابتة؟
- ماذا أعلنت البرامج الثابتة؟
- ماذا طلب المضيف؟
- ماذا تلقى المضيف؟
هذا هو الحدود الصحيحة لتصحيح أخطاء HID.
أجهزة HID المركبة تحتاج عناية إضافية
يمكن للأجهزة المركبة أن تعرض HID مع CDC أو التخزين أو واجهات خاصة بالبائع. قد يكون جزء HID صحيحًا بذاته لكنه يتأثر بترقيم الواجهة، أو تعيين نقطة النهاية، أو أخطاء الطول الكلي للواصف.
لتصحيح أخطاء HID المركب، افحص:
- ربط الواجهة حيثما ينطبق
- رقم الواجهة
- تفرّد عنوان نقطة النهاية
- موقع واصف HID
- طول واصف التقرير
- توجيه الطلبات الخاصة بالفئة
عندما يطلب المضيف واصف التقرير من الواجهة الخاطئة أو يتلقى الطول الخاطئ، تصبح حركة التقارير اللاحقة مضللة.
أين يتناسب Bus Scope
تم تصميم Bus Scope لفرق البرامج الثابتة والأجهزة التي تحتاج إلى تصحيح أخطاء USB قائم على الأدلة. لحالات واصف تقرير HID، يجب أن يسمح للمهندسين بفحص شجرة الواصف، والبايتات الخام، وحركة نقطة النهاية، وجلسة .bscope المحفوظة معًا.
يجب أن تكون النتيجة العملية تقريرًا يقول:
- تم طلب واصف تقرير HID وإرجاعه
- طول التقرير المُعلن بواسطة الواصف
- طول حمولة المقاطعة الفعلي
- سلوك معرّف التقرير
- عدم تطابق أو اتساق بين الإعلان وحركة المرور
- الإجراء التالي في واصف البرامج الثابتة، أو حزم التقارير، أو توقعات محلل المضيف
هذا أكثر فائدة من "جهاز HID لا يعمل". إنه يحوّل مشكلة إدخال غامضة إلى عدم تطابق ملموس في عقد USB.