أي محاكيات ARM7 مفتوحة المصدر مناسبة للربط بـ C؟

StackOverflow https://stackoverflow.com/questions/3552469

  •  30-09-2019
  •  | 
  •  

سؤال

لدي محاكي Atari 2600 مفتوح المصدر (Z26) ، وأود أن أضيف دعمًا للخراطيش التي تحتوي على معالج ذراع مضمن (عائلة NXP 21xx). تتمثل الفكرة في محاكاة 6507 حتى تحاول قراءة أو كتابة بايت من الذاكرة (والتي ستفعل كل 841ns). إذا كان 6507 يقوم بكتابة ، فضع العنوان والبيانات على بعض منافذ I/O للذراع واترك رمز الذراع يدير 20 دورة ، وأكد أن الذراع تطفو على ناقل البيانات الخاص به ، واترك الذراع يركض لمدة 38 دورة أخرى. إذا قام 6507 بإجراء قراءة ، فضع العنوان على منافذ I/O للذراع ، ودع الذراع يدير 38 دورة ، والاستيلاء على البيانات من منفذ I/O للذراع (نأمل أن يكون برنامج ARM قد وضعه هناك) ، ودع الذراع تشغيل 20 دورة أخرى.

ARM7 يبدو واضحا جدا لتنفيذ. لست بحاجة إلى محاكاة مجموعة كبيرة من ميزات الأجهزة. أي أفكار؟

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

ربما تستخدم Qemu مثل هذا الشيء داخليًا. نظرًا لأن مضاهاة الذراع سيتم دمجها في محرك مضاهاة موجود بالفعل (لم أكتبه ولا أفهمه تمامًا-فإن الأجزاء الوحيدة من Z26 التي قمت بتصحيحها هي منطق قراءة/كتابة الذاكرة) شيء مع بصمة صغيرة إلى حد ما.

أي فكرة كيف يعمل Qemu في الداخل؟ أي فكرة عن ما يتطلبه ترخيص GPL إذا كنت أستخدم فقط 2 ٪ من الكود في QEMU-سواء كان عليّ أن أحمل الكود لكل شيء ، أو فقط الجزء الذي أستخدمه ، أو ماذا؟

هل كانت مفيدة؟

المحلول

مع بعض الأعمال ، يمكنك جعل المحاكي الخاص بي يفعل ما تريد. تمت كتابته لـ ARM920 ، ولم يتم تتم مجموعة تعليمات الإبهام بعد. لا هي واجهة MMU/Cache. أيضا ، إنه بطيء لأنه مترجم. على الجانب المشرق ، كل شيء مكتوب في C99.

http://code.google.com/p/gp2xemu/

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

نصائح أخرى

محاولة Qemu.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top