พื้นที่เก็บข้อมูลนี้ได้รับการออกแบบเพื่อใช้ในบทช่วยสอน 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' จะถูกเช็กเอาต์ไปยังสาขาที่เสถียรที่เวอร์ชัน 22.0.0.1 พื้นที่เก็บข้อมูล 'gem5-resources' ได้รับการตรวจสอบเพื่อแก้ไข '871e715' ซึ่งควรมีทรัพยากรที่รู้จักความเข้ากันได้กับ gem5 v22.0
หากต้องการอัปเดตโมดูลย่อย 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