이 저장소는 gem5 튜토리얼에서 사용하도록 설계되었습니다. 사용자가 Codespaces를 활용하여 gem5를 학습한다는 가정하에 구축되었습니다.
저장소에는 다음 디렉터리가 포함되어 있습니다.
참고: .devcontainer/devcontainer.json 파일은 Codespace Docker 컨테이너가 생성될 때 git module update --init --recursive
명령이 실행되도록 지정하지만 'gem5' 및 'gem5-resources'는 하위 모듈입니다.
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/
에 있습니다. 기본 gem5 시뮬레이션을 바로 실행하기 위해 Codespace 컨테이너 내에서 다음을 사용할 수 있습니다.
gem5-arm gem5/configs/example/gem5_library/arm-hello.py
그러면 "Hello world!"가 실행됩니다. 시뮬레이션된 ARM 시스템 내부의 프로그램.
이 프로젝트에는 'gem5'와 'gem5-resources'라는 두 개의 하위 모듈이 있습니다. 이는 codespaces가 초기화될 때 자동으로 획득됩니다. 작성 시점에 'gem5' 디렉토리는 v22.0.0.1의 안정 브랜치로 체크아웃되었습니다. 'gem5-resources' 저장소는 gem5 v22.0과 알려진 호환성이 있는 리소스를 포함해야 하는 개정판 '871e715'로 체크아웃됩니다.
git 하위 모듈이 원격 원본(Google 소스에서 호스팅됨)과 동기화되도록 업데이트하려면 다음 명령을 실행합니다.
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