سؤال

يجب أن يختبر بعض التعليمات البرمجية ذات المستوى المنخفض على بنية الذراع. عادةً ما تكون التجربة معقدة للغاية على اللوحة الحقيقية ، لذلك كنت أفكر في QEMU.

ما أود الحصول عليه هو نوع من معلومات التصحيح مثل printfs أو GDB. أعلم أن هذا بسيط مع Linux لأنه ينفذ كلاً من برنامج تشغيل الجهاز لـ QEMU Integrator وميزة GDB ، لكنني لا أعمل مع Linux. كما أظن أن استخراج هذا النوع من الوظائف من رمز مصدر Linux kernel سيكون معقدًا.

أنا أبحث من بعض بسيط نظام التشغيل الذي ينفذ بالفعل واحدة من هذه الميزات. هل لديك بعض النصائح؟

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

المحلول

لا تحتاج إلى نظام تشغيل مستهدف لتصحيح رمز يعمل داخل QEMU - QEMU تفعل ذلك من أجلك بالفعل.

على وجه التحديد ، تدعم QEMU تصحيح الأخطاء عن بُعد من GDB-يمكنك تشغيل QEMU مع خيارات سطر الأوامر المناسبة وسيقوم بتصدير واجهة يمكن لنسخة من GDB (تشغيل على جهاز المضيف) الاتصال بها. في هذه المرحلة ، يمكنك تصحيح البرنامج في GDB إلى حد كبير كما لو كنت تقوم بتشغيله على الجهاز المضيف.

http://wiki.osdev.org/gdb يبدو أن لديها معلومات أساسية أكثر قليلاً ؛ ربما لا يكفي أن تبدأك تمامًا ، ولكن على الأقل أعطيك الفكرة الأساسية وبعض المصطلحات التي يجب البحث عنها في وثائق QEMU و GDB. تخطي قليلاً عن "تنفيذ Stubs GDB" ، والذي لا ينطبق هنا لأن QEMU لديها واحدة بالفعل ، وتبدأ في القسم على "استخدام Stubs Subs". الشكل القصير هو ببساطة أن تبدأ QEMU مع -s الخيار (تصدير اتصال GDB على LocalHost: 1234) و -S الخيار (انتظر أمر GDB "متابعة" قبل بدء التنفيذ) ، ثم في GDB على مضيفك تقول target remote :1234 بدلاً من run. أيضًا ، بالطبع ، يجب أن تستخدم إصدار ARM من GDB بدلاً من إصدار Native-X86.

(بالإضافة إلى ذلك ، إذا كنت على استعداد لدفع ثمن حل تجاري ، فإن Arm Toolchain من CodeSourcery لديه تكامل IDE لتعيين كل هذا تلقائيًا ، بما في ذلك دعم "printf" للطباعة في وحدة التحكم في التصحيح. ، أيضًا ، إذا كنت قد حصلت على تصحيح أخطاء للأجهزة. إخلاء المسؤولية المعتاد عن كونني موظفًا في CodeSourcery ينطبق - لكنني أجد أنه من السهل جدًا استخدامه.)

تحديث ، 2012: تسمى الآن CodeSourcery Toolchain Mentor Graphics Sourcery Codebench ، ولكن كل ما سبق لا يزال ينطبق.

نصائح أخرى

أدرك أنني أتعامل مع مشكلتك الأصلية هنا بدلاً من الحل المقترح (ربما يكون ذلك أفضل؟) ، ولكن استخدام GDB (أو Insight/GDB) مباشرة على الهدف ، استخدم أداة JTAG منخفضة التكلفة و OpenOcd. مثال على مثل هذا الإعداد وكيفية تنفيذها يمكن العثور عليها هنا.

إذا كان لديك ميزانية أكبر ، فقد يكون مصحح تصحيح JTAG مميزًا مفيدًا ، مثل Abatron BDI3000 مع البرامج الثابتة BDIGDB مما يسمح بتصحيح الأخطاء عن بُعد وبرمجة الأجهزة عبر Ethernet مع GDB وعدم وجود برامج تشغيل خاصة أو وكيل تصحيح مستهدف.

ربما مثل microkernel OKL4 هل تناسب احتياجاتك؟

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