CodingBox الوثائق

أخطاء قراءة وكتابة EEPROM على المبرمج

قبل أن يمكن تشخيص وحدة أو ترميزها يجب قراءتها — ثم، غالبًا، كتابتها. وتفشل كلتا الخطوتين بطرق مميزة. تربط هذه الصفحة كل عطل بسببه وبالإعداد أو الإجراء الذي يُصلحه، من عدم رؤية الوحدة إطلاقًا إلى كتابة «تنجح» ثم تختفي بهدوء.

الوحدة غير مكتشَفة

الفحصالسبب
التركيب والحاضنةيجب أن تستقر الوحدة تمامًا في الموصل؛ استخدم المهايئ الخاص بعامل شكلها — فوحدة SFP في حاضنة QSFP لن تُكتشَف
وقت بدء التشغيلتحتاج الوحدات حتى ~2 s (SFP) أو أكثر (CMIS) بعد الإدخال قبل أن يستجيب الناقل الثنائي الأسلاك
إشارة حضور الوحدةيجب أن تُفعَّل MOD_ABS / ModPrsL؛ الدبوس المثني أو الوحدة التي تفتقر إلى الإشارة تبدو غائبة
حالة الطاقة المنخفضة (CMIS)بيانات التعريف قابلة للقراءة في LowPwr، لكن بعض المضيفات/المبرمِجات تتوقع الحالة Ready للوصول الكامل
سرعة الناقلابدأ عند 100 kHz أو أقل؛ بعض الوحدات تُصدر NACK عند 400 kHz
وحدة ميتةلا DDM، ولا بيانات تعريف عند أي سرعة — تأكّد على لوحة ثانية قبل الحكم عليها بالتلف

القراءات تُرجِع FFh أو 00h أو بيانات عشوائية

العَرَضالسببالإصلاح
كل القيم FFhNACK من I²C — لا جهاز عند ذلك العنوان، أو الصفحة غير موجودةتحقّق من العنوان (بيانات تعريف A0h مقابل تشخيص A2h في SFP؛ وA0h واحد بتقسيم صفحات في QSFP/CMIS)
كل القيم 00hالوحدة غير مزوَّدة بالطاقة / في وضع إعادة الضبط؛ أو EEPROM فارغة فعليًاتحقّق من الطاقة إلى الحاضنة، ومن حضور الوحدة؛ فالوحدات الفارغة موجودة فعلًا (مخزون غير مُرمَّز)
الطول صحيح، لكن المحتوى خطأقراءة صفحة مختلفة عن المقصودةاكتب بايت اختيار الصفحة (127) وأعد القراءة؛ وفي CMIS اكتب أيضًا اختيار البنك (126)
بايتات مشوَّشة / منزاحةالناقل سريع جدًا، أو كبل طويل، أو تنازع مع مضيفاخفض السرعة إلى ≤ 100 kHz؛ استخدم أسلاكًا قصيرة؛ اقرأ على منصة الاختبار، لا في مبدّل قيد التشغيل
قراءات A2h تفشل، وA0h سليمةوحدة بلا تشخيص، أو كتلة تشخيص محميةتحقّق من البايت 92 البت 6 في A0h (DDM مُنفَّذ)؛ بعض أنواع الحماية من الكتابة تستجيب لِـA0h فقط
القيم تتغيّر بين قراءة وأخرىقيم مقيسة حيّة — طبيعي؛ أو البيانات غير جاهزةمن المفترض أن تتغيّر بايتات DDM؛ تحقّق من بت جاهزية البيانات قبل الوثوق بلقطة واحدة

فشل الكتابة تمامًا

WRITE FAIL، أو NACK على البيانات، أو قراءة البايت لاحقًا دون تغيير:

السببكيفية التعرّف عليهما العمل
مطلوبة كلمة مرور (متحكم بالبرنامج الثابت)تُرفض الكتابة إلى أن توضع القيمة الصحيحة في عنوان كلمة المرور (SFP A2h 0x7B–0x7E، وQSFP 123–126، وCMIS 122–125)أدخل كلمة مرور الوحدة في الذاكرة المحمية من الكتابة وكلمات المرور؛ وتُطبَّق كلمات مرور الموردين المعروفة من قاعدة البيانات
حماية كتابة عتاديةللقراءة فقط بصرف النظر عن كلمة المرور، وتبقى عبر إعادة تدوير الطاقةيجب أن تتحكم لوحة المبرمج في دبوس WP — البرمجيات وحدها لا تكفي؛ راجع أنواع الحماية من الكتابة
التوقيتأعطال متقطعة، وكتابة جزئية للصفحاتأبطئ الساعة (~1 kHz غالبًا مطلوبة لكتابة EEPROM موثوقة)، واحترم زمن دورة الكتابة (5–10 ms) بين البايتات/الصفحات، وأضف تأخيرات بين الكتل
منطقة للقراءة فقطبايتات معيّنة لا تتغيّر أبدًا (المجاميع الاختبارية، والعتبات في بعض القطع، ومنطقة المورّد)تملك EEPROM منطقة محمية بالتصميم؛ اكتب فقط الحقول التي تسمح بها الوحدة
حالة خطأقد تتطلب وحدات CMIS حالة LowPwr، أو تعطيل مسار البيانات، قبل قبول الكتابةضع الوحدة في الحالة المطلوبة أولًا
الصفحة غير مُختارةكتبتَ إلى الإزاحة الصحيحة لكن على صفحة خطأاضبط البايت 127126) قبل الكتابة، وتحقّق بإعادة قراءة بايت اختيار الصفحة

الكتابة «تنجح» لكنها لا تثبت

  • تتراجع بعد إعادة تدوير الطاقة — تخزّن الوحدة الكتابات في ذاكرة مؤقتة وتحتاج أمر حفظ خاصًا بالمورّد؛ فبدونه تعود الصورة القديمة. يُعالَج ذلك بواسطة سكربت برمجة (النوع 4 من الحماية من الكتابة).
  • تتراجع فورًا — يعكس المتحكم محتوى EEPROM من مخزنه الخاص ويستبدل بايتاتك؛ ويتطلب هذا خوارزمية الشركة المصنِّعة (النوع 5).
  • بعض البايتات تثبت وأخرى لا — خريطة محمية جزئيًا؛ اكتب حقلًا حقلًا وتحقّق من كل واحد.

المضيف يرفض الوحدة بعد كتابة ناجحة

السببالإصلاح
المجاميع الاختبارية قديمة — CC_BASE (البايت 63)، وCC_EXT (95)، وCC_DMI (A2h، البايت 95)، وQSFP (191/223)أعد حسابها؛ يقوم CodingBox بذلك تلقائيًا عند الكتابة (خريطة الذاكرة)
بيانات التعريف أصبحت غير متسقة — كتغيير المورّد بينما تشير رموز التوافق أو الطول الموجي إلى عتاد مختلفحافظ على اتساق بيانات التعريف مع الضوئيات الفعلية (السرعة والمعدل، تعارضات الطبقة الفيزيائية)
كتابة إلى مخطط نوع وحدة خطأXFP كُتبت كأنها SFP، أو خلط في صفحات QSFP — استعد من النسخة الاحتياطية

الوحدة ميتة بعد الكتابة

كتابة بيانات عشوائية فوق ثوابت المعايرة أو العتبات أو منطقة المورّد الخاصة (حيث تحتفظ بعض المتحكمات بإعداداتها) قد تُعطِّل الوحدة نهائيًا. مسار الاستعادة: استعد النسخة الاحتياطية التي أخذها CodingBox قبل الكتابة من code database، ثم اكتب فقط الحقول المقصودة.

القواعد الذهبية

  1. اقرأ واحفظ أولًا — يجب أن تسبق كل كتابة قراءة كاملة تصل إلى قاعدة البيانات.
  2. حدِّد نوع الحماية قبل أول محاولة كتابة (أنواع الحماية من الكتابة).
  3. تمهَّل — إذ يحل توقيت الساعة والفاصل بين البايتات معظم الأعطال «العشوائية».
  4. اكتب فقط ما تقصده — حقولًا، لا صفحات كاملة، ما لم تكن تستعيد صورة.
  5. تحقّق بإعادة القراءة بعد إعادة تدوير الطاقة.

في CodingBox

يقرأ CodingBox الوحدات بالعنوان الصحيح وتقسيم الصفحات المناسب لعامل الشكل، ويعرض البايتات الخام والمفكوكة الترميز في EEPROM editor، ويعيد حساب المجاميع الاختبارية عند الكتابة، ويخزّن نسخة احتياطية تلقائيًا، ويدعم إدخال كلمة المرور وسكربتات البرمجة للوحدات المحمية ووحدات أمر الحفظ (كتابة وحدة). إذا اشتُبه في عطل على مستوى اللوحة، راجع استكشاف الأخطاء وإصلاحها الخاص بالمنتج.

آلية عمل الناقل وراء هذه الأعطال — العناوين، واختيار الصفحة، وزمن دورة الكتابة، وإطالة الساعة (clock stretching): واجهة الإدارة الثنائية الأسلاك.

لماذا تستجيب الوحدة بالطريقة التي تستجيب بها — ذاكرة يحاكيها MCU، ونافذة الإقلاع، وإطالة الساعة (clock stretching)، والمناطق المحمية: المتحكم والبرنامج الثابت.


إذا وجدت معلومة غير دقيقة أو خطأً في هذه المادة، فحدِّد المقطع المعني واضغط Ctrl+Enter .