مثل العديد من الأشخاص الآخرين ، لقد استلهمت من سلسلة Ben Eater التي تمشيك من خلال بناء جهاز كمبيوتر 8 بت على ألواح الخبز ، وأردت تكرار عمله (وربما تحسين التصميم مع بعض الأفكار الخاصة بي في المستقبل). ومع ذلك ، عند إنشاء قائمة المكونات التي كنت بحاجة إلى شراؤها ، اكتشفت أن رقائق EEPROM لا يمكن الحصول عليها تقريبًا في أي مكان هذه الأيام ، وبالتالي تساءلت عن كيفية حل هذه المشكلة.
بعد بعض الأبحاث ، اكتشفت أن رقائق فلاش SST39SF010 تشبه إلى حد كبير استخدامات 28C16 EEPROM Chip Ben Eater ، ومع ذلك أيضًا عدد من التحسينات ، مثل سرعة الكتابة/القراءة ، وقت beneater/eeprom-programmer ... بالطبع ، فإن هذا يدعو إلى مبرمج مختلف عن المبرمج الذي كتبه Ben Eleter ، يمكن أن يكون slu4coderSST39SF010-FLASH-Programmer ما أحتاجه. ومع ذلك ، في رأيي ، فقد كتب بأسلوب مختلف تمامًا فيما يتعلق بفكرة التدريس التي كانت وراء مشروع بن.
لذلك قررت أن أكتب مبرمجي خاص بي ، على الرغم من أنه أقل تحسينًا من SLU4Coder ، أعتقد أنه أكثر ملاءمة للمبتدئين الذي يريد التعامل مع برمجة الفلاش دون وجود الكثير من تجربة الترميز. لهذا السبب ، حاولت التعليق على الرمز وأن أكون واضحًا قدر الإمكان في أسلوبي. يعتمد مشروعي أيضًا على Arduino Nano بالاشتراك مع رقائق 74HC595 تمامًا مثل المشروعين المذكورين أعلاه.
قد أقوم بتمديد هذا البرنامج ليكون متوافقًا مع رقائق فلاش عام SST39SF0X0 في المستقبل ؛ على الرغم من أنك قد وصلت إلى هنا وتحتاج إلى فلاش رقائق السعة أعلى ، فمن المحتمل أن تكون قادرًا على توسيع هذا المشروع بنفسك. سائدا
في الكود الخاص بي ، قمت أيضًا بتضمين آلية فحص لوظائف كتابة البيانات ومسحها ، والتي يمكن تمكينها وتكوينها في وقت الترجمة.
يتم تعريف الماكرو WRITE_CHK افتراضيًا على أنه 0 ، ولكن يمكن تغييره إلى 1 لتمكين الشيك. في هذه الحالة ، يتم فحص كل بايت من البيانات المكتوبة إلى الذاكرة تلقائيًا وسيرفع البرنامج خطأً إذا كانت إعادة التعويض مختلفة عن البيانات المتوقعة. لمزيد من المعلومات ، يرجى الرجوع إلى وظيفة writeMem() داخل الكود.
يتم تعريف الماكرو CLR_CHK افتراضيًا على أنه 0 ، ولكن يمكن تغييره إلى رقم موجب لتمكين الشيك. في هذه الحالة ، بعد أمر Clear Chip ، سيكون الرقم المخصص للماكرو هو عدد البايتات العشوائية التي تقرأ من الفلاش وتحققها. إذا كان أي من هذه البايتات يختلف عن 0xFF (القيمة الافتراضية بعد شريحة واضحة) ، فسيرفع البرنامج خطأ. يوجد ماكرو آخر ، يسمى CLR_CHK_MAX ، والذي يحدد أعلى عنوان ممكن قادم من الوظيفة العشوائية ؛ بشكل افتراضي ، يتم تعريفه على أنه 131071 ، وهو (2^17) -1 ، وهو أعلى بايت قابل للعنونة في SST39SF010. ومع ذلك ، أردت أن أعطي إمكانية تكوين هذا الماكرو لأنه في بعض الحالات يتم استخدام ذاكرة الفلاش فقط للبايت القليلة الأولى ، وبالتالي من المفيد التحقق من البايتات التي تم استخدامها فقط في دورة الكتابة السابقة. لمزيد من المعلومات ، يرجى الرجوع إلى وظيفة eraseAll() داخل الكود.