ميكروشا. الفصل الأول. تحكم بطاقة SD



كثير من الناس يتذكرون هذا الكمبيوتر الرائع. حصلت على هذا عندما كان عمري 11. لقد استغرق الأمر 28 عامًا ، وقررت الآن عمل جهاز توسع ، والذي افتقرت إليه حقًا في ذلك الوقت ، كهواية.

فكرة


على الشبكة ، رأيت العديد من الخيارات لتنزيلات SD لأجهزة الكمبيوتر هذه ، ولم يعجبني وجود وحدات التحكم الدقيقة فيها ، وأردت استخدام الدوائر "القديمة ، الدافئة DIP" ، ولهذا السبب قررت استخدام "KR1533" في المنطق المحلي.

كإضافة. طبقت RAM أنا UT62256. هذه هي الشريحة الوحيدة المستوردة في المشروع. بالطبع ، كان من الممكن تثبيت KP537RU10 أو KP537RU25A ، ولكن أولاً ، كان يجب تثبيتهما ليس واحدًا ولكن اثنين (خططت 4 كيلوبايت من ذاكرة الوصول العشوائي الإضافية) ، وثانيًا كان لدي UT62256 ، ولكن لم يكن لدي KR537 ، ولم يكن علي أن أطلب أردت أن. لذلك ، سمحت لنفسي بحرية الاستيراد ، ثم ظهرت الفكرة لاستخدام 32 كيلوبايت من ذاكرة الوصول العشوائي الإضافية ، مع تبديل الصفحة.


بالنسبة للروم ، اخترت KR573RF5 ، لم يكن هناك سوى اثنين نظيفين.

مخطط


بعد الجلوس على فنجان من الشاي ، رسمت رسمًا بيانيًا كهذا.



فيما يلي شريحة ذاكرة الوصول العشوائي (RAM) ورقاقة ROM وكتلة PORT. تحتوي كتلة PORT على واجهة متوازية بها 8 مدخلات و 8 مخرجات. عند الكتابة إلى عنوان EFFF ، يتم تعيين الرمز المكتوب عند المخرجات ، وعند القراءة من نفس العنوان ، تتوافق قيمة القراءة مع حالة المدخلات. يتم توصيل ثلاثة من المخرجات وأحد المدخلات ببطاقة SD من خلال محول المستوى.

يتم تمثيل ذاكرة الوصول العشوائي بواسطة رقاقة UT62256 ولها ذاكرة 32 كيلو بايت. نظرًا لأن نطاق عناوين E000-EFFE يبلغ تقريبًا 4 كيلوبايت (4095 بايت) ، نحصل على 8 صفحات يتم تحديدها بواسطة كتلة PORT ، البتات 1 و 2 و 3. تعرض القراءة أيضًا من هذا المنفذ الصفحة المحددة حاليًا (بنفس البتات). الإجمالي ، لدينا 32760 بايت من ذاكرة الوصول العشوائي الإضافية (4095x8str).

رقاقة ROM هي KR573RF5. إنه متصل بمساحة العنوان F000-F7FF ، ويحتوي على رمز BSVV (BIOS) ، ومهمة هذا الرمز هي تهيئة بطاقة SD ، وتحميل نظام التشغيل منها ونقل التحكم إليها.

وفقًا لذلك ، بعد تشغيل جهاز الكمبيوتر ، نكتب في GF000 System Monitor واضغط على VK.

في المستقبل ، هناك فكرة لتعديل ROM الأصلي لشاشة النظام لتمهيد نظام التشغيل تلقائيًا من بطاقة SD ، وسوف ينتقل جهاز الكمبيوتر إلى موجه الشاشة القياسي إذا فشل التنزيل أو تمت مقاطعته ، على سبيل المثال ، عن طريق الضغط على بعض المفاتيح.
سأفكر في الأمر مرة أخرى.

مخطط


حوالي 2-3 ساعات على الكمبيوتر ، ورسمت الرسم التخطيطي التالي في EAGLE.


تكبير

رسمته على أساس الدوائر المصغرة التي أملكها. من الممكن أن يتم تقليل عدد رقائق المنطق إذا تم استخدام بوابات أخرى ، ولكن كان لدي واحدة فقط. وفي المستقبل ، سأقوم على الأرجح بتحسين الدائرة.

تحليل الدوائر منخفضة المستوى ...

... تمت إزالته تحت المفسد ، أعتقد أن القليل من الناس مهتمون بهذه الغابة.
V3/1, A14 A15 , N3 , .1. V1/2 G, IC2. A B, A12 A13 . , , A14 A15, A12 A13. — 1110,
A15-1; A14-1; A13-1; A12-0. N2. , 5 11, - , , . 1 5, 2 11. , 1C , 2C , .1 5, .0 — 11.

: Exxx =1, «PORT», Exxx C=0, «RAM».

«C» , (A0-A11). xFFF, =1, =0. : «PORT» EFFF, «RAM» E000-EFFE.

«RAM» CS IC3, , , E000-EFFE . E000-EFFE . EFFF IC4, . «PORT» «WR» c V1/5, V1/6 V3/4.

EFFF IC5,
B0-B7.

. « » CS3 CS .

تجميع التخطيط


الآن ليس لدي فرصة لتسمم اللوح في المنزل ، وأنا ، مع أخذ قطعة من ثنائي الفينيل متعدد الكلور على الوجهين المغلفة بالرقائق ، رأيت المستطيل الضروري منه.

تم إدخال هذا المستطيل بإحكام في فتحة "الواجهة الداخلية" للكمبيوتر الشخصي ، ولم يتم تعليقه ولم يتحرك. بعد ذلك ، خدشت الوسائد على الظهر والأمام. واتضح بشكل جيد. ثم الترتيب التقريبي للدوائر الصغيرة واستكشاف الثقوب. على الجانب الأمامي ، قمت بحفرها باستخدام مثقاب كبير بحيث لا تتلامس أطراف الدوائر المصغرة مع الرقاقة الأمامية. على الجانب الخلفي ، قمت بخدش محيط كل صف من جهات الاتصال وقمت بتقسيمه إلى وسادات اتصال.

الخطوة التالية أضع جميع الدوائر المصغرة (والمقبس) واختفت من الخلف. استغرق التثبيت وقتًا طويلاً ، والذي أجريته باستخدام MGTF رفيع. قاد الأسلاك على كلا الجانبين ، ملحومًا من الأمام مباشرة إلى أرجل الدوائر المصغرة ، من الخلف إلى المواقع.



عندما انتهت عملية اللحام ، قررت الانتباه إلى محول مستوى الإشارة. والحقيقة هي أن بطاقة SD تعمل بجهد 3.3 فولت ، ورقائق KR1533AP6 و KR1533IR22 TTL 5v. لذلك ، كان علي أن أصنع وشاح محول صغير ، حيث كانت المستويات تقتصر على الثنائيات زينر.

الإشارة القادمة من بطاقة SD إلى وحدة التحكم التي قمت بسحبها إلى المصدر 3.3v. 10 كيلو المقاوم. كما أظهرت الممارسة ، لا تحتاج إلى تحويل هذه الإشارة.



على الرغم من أنه في النسخة النهائية ، سأقوم على الأرجح بعمل عاكس بناءً على المقارنة.

استخدمت محول microSD إلى SD كحامل للبطاقة.

بشكل عام ، لم تكن هناك مشاكل خاصة في تجميع التخطيط ، على الرغم من أنني كنت أخشى أن بعض الدوائر المصغرة قد تكون معطلة.

اختبارات التخطيط


بادئ ذي بدء ، راجعت عملية ذاكرة الوصول العشوائي ، وكتبت أنماط "AA" و "55" و "F0" و "0 F" إلى منطقة E000-EFFE باستخدام توجيه مراقب النظام "F" وفحصتها باستخدام التوجيه "D". كل شيء تبين أنه طبيعي.

علاوة على ذلك ، باستخدام التوجيه "M" ، بدأت في كتابة قيم مختلفة إلى عنوان EFFF ، ومشاهدة التغييرات على أرجل السجل 153322 باستخدام جهاز متعدد ، تتوافق الحالات مع الرموز المسجلة. أيضًا ، عند القراءة من هذا المنفذ ، احتوى الكود على الصفحة المحددة ، وفقًا للخطة ، وحتى عندما تم إغلاق إشارة MISO على الأرض في الجزء المنخفض ، تبين أنها 0 ، وعند فتحها 1.

كان من المشكوك فيه إلى حد ما أن جميع الدوائر المصغرة كانت تعمل وكان التثبيت ناجحًا لا أخطاء.

BSVV


بالطبع ، لم يكن لدي أي أدوات خاصة لكتابة برامج لـ 58080. اضطررت إلى كتابة برنامج في دفتر ملاحظات (المفكرة) ، ثم ترجمته إلى رموز يدويًا.
إنشاء ملف في المحرر تحت DOS "HIEW" وبدأ في ملئه بالرموز. للأساسيات ، أخذت مشروعي تحت AVR ، حيث كان هناك تهيئة قياسية لبطاقة SD. كان المشروع قديمًا ، ولم يستخدم أي نظام ملفات ، مجرد مسجل.

أولاً كتبت وظيفة منخفضة المستوى لواجهة برمجة SPI ، ثم روتين تهيئة بطاقة SD عالي المستوى.

اتضح شيء مثل هذه الخوارزمية ...

... الذي وضع تحت المفسد ، أعتقد أنه معروف للجميع بالفعل.
1. () 90;
2. CS .1 10 FF;
3. CS .0;
4. CMD0;
5. 01, 7;
6. . =0, , 2;
7. CMD8;
8. ACMD41;
9. 00, 11
10. . =0, , 8;
11. CMD58.
12. 2 EFFE.
13. .

تمت قراءة سجل بطاقة OCR أيضًا في روتين التهيئة ، وتم كتابة البايتة الثانية فيه على عنوان EFFE. كان ذلك ضروريًا لتحديد نوع البطاقة.

في حالة SDSC - 80h ، وفي حالة SDHC - C0h.

إذا لم تتم التهيئة ، فعندئذٍ تم عرض رسالة "SD CARD ERROR" ثم خرجت الشاشة بدون إعادة تعيين.

لقد قمت بتحويل BSVV إلى WAV وقمت بتنزيله على جهاز الكمبيوتر عن طريق إدخال الشريط ، ثم تصحيحه ، وتصحيح كود المصدر وتنزيله مرة أخرى.

الجسور


الآن لدي ذاكرة وصول عشوائي إضافية ، بحجم 32،760 بايت ، مقسمة إلى 8 صفحات. لكن كيف تتنقل بين الصفحات؟ كيف يمكن لبرنامج يعمل على الصفحة الأولى أن يستدعي روتينًا موجودًا في الصفحة الرابعة؟

لحل هذه المشكلة ، قدمت جسور البرمجيات. الجسر هو منطقة صغيرة في ROM تتوسط في نقل التحكم.

على سبيل المثال ، تنفيذ التعليمات البرمجية يجب أن ينقل التحكم إلى الصفحة رقم 3 ، إلى العنوان E4B5. بعد ذلك ، تضع الشفرة التنفيذية 12 بتًا أقل (4B5) في زوج التسجيل للمعالج HL ، وفي البتات الأربع العليا تضع القيمة 3 - رقم الصفحة. الآن في زوج التسجيل HL ، يتم كتابة القيمة 34B5. وينتقل الرمز (JMP) إلى منطقة ROM ، والتي تسمى JMP-Bridge ، إنها ستذهب فقط إلى عنوان ثابت في ROM. يستخرج الرمز في هذه المنطقة رقم الصفحة من البتات العالية لزوج تسجيل HL ويكتبها في سجل كتلة المنفذ على عنوان EFFF. يتم عرض الصفحة الثالثة من ذاكرة الوصول العشوائي الآن في منطقة E000-EFFE. يقوم برنامج JMP-Bridge بإعادة تعيين البتات الأربعة العالية لزوج تسجيل HL ويكتب "E" هناك. الآن في زوج تسجيل HL يوجد بالفعل عنوان فعلي E4B5 ، وهنا ينقل برنامج JMP-Bridge التحكم إليه.

هذا ينقل التحكم بين الصفحات.

هناك CALL-Bridge ، هناك حاجة لاستدعاء روتين فرعي مع رجوع ، ويختلف عن JMP-Bridge عن طريق حفظ الصفحة الحالية على المكدس ، والإجراء العكسي للعودة.

الجسرين التاليين هما STA-Bridge و LDA-Bridge. كما تقترح الأسماء ، يكتب الأول سجل البطارية إلى عنوان منطقي (في HL) ، ويقرأ الثاني البيانات من العنوان المنطقي في هذا السجل.

بفضل هذين الجسرين ، يمكن للبرنامج الذي يتم تنفيذه من صفحة واحدة تخزين البيانات في صفحة أخرى.

تحميل نظام التشغيل


إذا نظرت إلى قطاع التمهيد في بطاقة SD ، يمكنك أن ترى أن النص "خطأ في القرص ، اضغط على أي مفتاح لإعادة التشغيل" موجود في العناوين 1AC-1D4.



نعم ، إنه غريب للغاية كيف يبدو في الصورة ، لأن ترميز الأحرف لـ Mikroshi لا يتزامن مع ASCII.

قررت استخدام هذه المنطقة لوضع البيانات هناك لتنزيل جهاز الكمبيوتر.

بادئ ذي بدء ، أضع الرمز 00 في الموضع 1BA ، وبالتالي قطع الرقم القياسي. الآن ، يجب عرض "خطأ القرص" فقط وهذا كل شيء. البايت المتبقية هي ملكي. المبدأ بسيط ، توقيع 6 بايت MicrOS ، و 4 بايت عنوان على بطاقة SD في بداية الملف مع نظام التشغيل. في BSVV ، كتبت ، بعد استلام قطاع التمهيد من بطاقة SD ، يتم التحقق من التوقيع ، وإذا كان كذلك ، خذ 4 بايت التالية واستخدمه كعنوان القطاع لتحميل نظام التشغيل.

إذا لم يكن هناك توقيع ، يتم عرض الرسالة "OS DOWNLOAD ERROR" ويخرج مراقب النظام دون إعادة تعيين.

مجموع


والآن ، أخيرًا ، يعمل كل شيء. تمت كتابة BSVV ، ولكن ما زلت بحاجة إلى كتابته إلى ROM.



ولهذا ، أحتاج إلى تحرير جميع عناوين مكالمات وروتين فرعي ، لأن هذا المعالج له عنوان مطلق. وكتبت BSVV للمنطقة 6000-67FF للتحميل في ذاكرة الوصول العشوائي. ولكن الآن نحن بحاجة إلى تغيير جميع 6xxx إلى Fxxx.

بالإضافة إلى ذلك ، أنا في ظروف "popanetsky". لدي مبرمج ROM ، ولكنه قديم ، تحت منفذ LPT. وليس هناك كمبيوتر واحد مع LPT. ولكن هناك زوج من Atmega32A ، في حزمة PDIP40 ولوح توصيل. قد تحتاج إلى محاكاة LPT باستخدام AVR. ولكن ربما سينجح كل

ذلك ... هذا كل شيء الآن. شكرا للانتباه! يتبع…

All Articles