تم تصميم هذا المستودع للاستخدام في دروس Gem5. لقد تم إنشاؤه على افتراض أن المستخدمين سيستخدمون Codespaces لتعلم Gem5.
يحتوي المستودع على الدلائل التالية:
ملاحظة: "gem5" و"gem5-resources" عبارة عن وحدات فرعية على الرغم من أن الملف .devcontainer/devcontainer.json يحدد أنه سيتم تنفيذ أمر git module update --init --recursive
عند إنشاء حاوية Codespace Docker.
الحاوية المستخدمة بواسطة Codespaces مبنية على .devcontainer/Dockerfile. أنه يحتوي على:
/usr/local/bin/gem5-x86
/usr/local/bin/gem5-arm
/usr/local/bin/gem5-riscv
/opt/cross-compiler/riscv64-linux/
./opt/cross-compiler/aarch64-linux/
. يمكن استخدام ما يلي داخل حاوية Codespace لتشغيل محاكاة Gem5 الأساسية على الفور:
gem5-arm gem5/configs/example/gem5_library/arm-hello.py
سيؤدي هذا إلى تنفيذ "Hello World!" برنامج داخل نظام ARM مقلد.
في هذا المشروع لدينا وحدتان فرعيتان: "gem5" و"gem5-resources". ويتم الحصول عليها تلقائيًا عند تهيئة مساحات الرموز. في وقت كتابة هذا التقرير، تم سحب دليل 'gem5' إلى الفرع المستقر في الإصدار v22.0.0.1. تم فحص مستودع 'gem5-resources' لمراجعة '871e715'، والتي يجب أن تحتوي على موارد ذات توافق معروف مع الإصدار 22.0 من Gem5.
لتحديث وحدات git الفرعية لتكون متزامنة مع أصولها البعيدة (المستضافة على googlesource الخاص بنا)، قم بتنفيذ الأمر التالي:
git submodule update --remote
قد يتم تحديث هذا المستودع إلى هذه الوحدات الفرعية المتزامنة عن طريق تشغيل ما يلي (وهذا يفترض أن لديك الأذونات الصحيحة للقيام بذلك):
git add gem5 gem5-resources
git commit -m " git submodules updated "
git push
الإستراتيجية الجيدة عند العمل مع Gem5 هي استخدام الفروع. في دليل 'gem5'، يمكنك استخدام الفروع لفصل التطوير الخاص بك. سيكون سير العمل النموذجي على النحو التالي.
git checkout stable
git branch example-1 # Creating a new branch named 'example-1'.
git checkout example- `
echo " Create a test commit " > test.txt
git add test.txt
git commit -m " misc: Adding a test commit "
git checkout stable
git checkout example-1
لرؤية قائمة بجميع الفروع المتاحة يمكنك تنفيذها:
git branch