خداع رقاقة STM32L4R5 في إفساد معلومات التحقق من الخطأ لعنوان فلاش معين.
عند القراءة من عنوان فلاش تالف على أجهزة STM32 مع فلاش ECC ، يمكنك الحصول على مقاطعة غير قابلة للاكتشاف ECC. يمكن أن يكون التعامل مع هذه المقاطعة أمرًا مهمًا لبعض التطبيقات ، مثل أي شيء قد يتعرض للإشعاع ، مثل الأقمار الصناعية. ومع ذلك ، فإن اختبار رمز المناولة الخاص بك على الأجهزة أمر صعب ، حيث لا يمكنك إخبار الشريحة مباشرة بإنتاج إدخال فلاش خاطئ عن قصد.
لهذا السبب توفر هذه الأداة طريقة للقيام بذلك بالضبط: على وجه التحديد تدمير معلومات تصحيح الخطأ في عنوان محدد. يقوم بذلك عن طريق البحث الثنائي تلقائيًا في توقيت حيث تتداخل إعادة التعيين مع عملية كتابة الفلاش.
اضبط العنوان في الجزء العلوي من ملف main.rs ، وقم بتوصيل موصل التصحيح الخاص بك للحصول على شريحة STM32L4R5 ، ثم قم بتشغيل make flash .
يجب عليك بعد ذلك رؤية LED الأزرق للرقاقة الوامضة في فترات زمنية تصبح أقصر. هذا هو البحث الثنائي الذي يحاول الحصول على مدى حدوث فساد فلاش. سيصبح الضوء متوقفًا على ما يبدو لعدة ثوانٍ (لأن التوقيت قصير لدرجة أن LED بالكاد لديه فرصة للوصول إلى) ، وبعد ذلك ، سيظهر LED الأخضر أو الأحمر. الأخضر يعني أن العنوان الدقيق قد تم ضربه ، يعني الأحمر أنه قد فاته. في حالة Green ، يمكنك الآن وميض الكود الذي تريد اختباره مقابل مقاطعة ECC (تأكد من عدم الكتابة فوق الصفحة التي تحتوي الآن على الخطأ - سوف تؤدي إلى خطأ في الذهاب) ، وفي حالة ظهور LED الأحمر ، فإنك تحتاج إلى الضغط على زر إعادة التعيين للمحاولة مرة أخرى (أحيانًا ، تساعد دورة القدرة على إعادة إعادة المحاولة أيضًا).
إذا تم تشغيل LED الأخضر ، فقد وصل البرنامج إلى المكان الصحيح. للتحقق من العنوان الدقيق ، يمكنك أيضًا إرفاقه عبر GDB ، ثم قراءة محتوى سجل FLASH_ECCR :
(gdb) x/wx 0x40022018
0x40022018 : 0x80006000 عمل الفساد إذا كان أول رسالة سداسية عشرية هي 8 أو 2 . آخر 20 بت (أو 5 رسائل سداسية) هي عنوان الذاكرة التي تالفة. في هذه الحالة ، تم إعطاء 0x6000 للفساد ، وضرب بالضبط.
في قذيفة واحدة ، قم بالتشغيل
st-utilثم نعلق باستخدام GDB:
arm-none-eabi-gdb -ex " target extended-remote :4242 " target/thumbv7em-none-eabi/release/stm32-flash-corruptorاستخدم هذا الأمر لإظهار محتوى سجل النسخ الاحتياطي:
x /32w 0x40002850 ألقِ نظرة على التعليقات في main.rs لمزيد من المعلومات حول كل سجل.