Ce référentiel a été conçu pour être utilisé dans les didacticiels gem5. Il a été construit en partant du principe que les utilisateurs utiliseront les Codespaces pour apprendre gem5.
Le référentiel contient les répertoires suivants :
Remarque : 'gem5' et 'gem5-resources' sont des sous-modules bien que le fichier .devcontainer/devcontainer.json spécifie qu'une commande git module update --init --recursive
est exécutée lors de la création du conteneur Codespace Docker.
Le conteneur utilisé par Codespaces est construit à partir de .devcontainer/Dockerfile. Il contient :
/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/
. Les éléments suivants peuvent être utilisés dans le conteneur Codespace pour exécuter immédiatement une simulation gem5 de base :
gem5-arm gem5/configs/example/gem5_library/arm-hello.py
Cela exécutera un message « Hello world ! » programme dans un système ARM simulé.
Dans ce projet, nous avons deux sous-modules : 'gem5' et 'gem5-resources'. Ceux-ci sont automatiquement obtenus lors de l’initialisation des espaces de codes. Au moment de la rédaction, le répertoire 'gem5' est extrait dans la branche stable v22.0.0.1. Le référentiel 'gem5-resources' est extrait vers la révision '871e715', qui devrait contenir des ressources avec une compatibilité connue avec gem5 v22.0.
Pour mettre à jour les sous-modules git afin qu'ils soient synchronisés avec leurs origines distantes (hébergées sur notre source Google), exécutez la commande suivante :
git submodule update --remote
Ce référentiel peut être mis à jour vers ces sous-modules synchronisés en exécutant ce qui suit (cela suppose que vous disposez des autorisations appropriées pour le faire) :
git add gem5 gem5-resources
git commit -m " git submodules updated "
git push
Une bonne stratégie lorsque vous travaillez avec gem5 consiste à utiliser des branches. Dans le répertoire 'gem5', vous pouvez utiliser des branches pour séparer votre développement. Un flux de travail typique serait le suivant.
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
Pour voir une liste de toutes les branches disponibles, vous pouvez exécuter :
git branch