Configurable HMpSoC emulation platform targeting the evaluation of HW/SW partitioning and mapping algorithms.
git clone https://github.com/rouxb/emu-HMpSoC ~/emu-HMpSoC
cd ~/emu-HMpSoC; git submodule update --init --recursiveThis is just some clue to help the user during the setup process.
Install C/C++ compiler, cmake and others development tools.
The application graph generator GUI used QT5. You should install QT if you want to build it otherwise you could use one of the graph example provides
If you want to modify the execution framework you should install a arm cross-compilation tool. If you want to change the used linux image or recompile the provided kernel modules you should install petalinux tool from xilinx.
# Create an folder for the out-of-tree compilation
cd ~/emu-HMpSoC; mkdir all-build; cd all-build;
# Initialize the build system
cmake ../ -DSYSTEMC_PREFIX=/{customPath}/systemc-2.3.1 -DPETALINUX_PREFIX=/{customPath}/petalinux-v2016.3-final
# Patch libsystemctlm-soc
cd ~/emu-HMpSoC/all-build/soc-env/;
make patch_libsystemctlm-soc
# Patch qemu-xlnx
cd ~/emu-HMpSoC/all-build/qemu-env/;
make patch_qemu
# Only if you want to use the prebuild package
cd ~/emu-HMpSoC/all-build/qemu-env/;
make load_binaries
cd ~/emu-HMpSoC/all-build/soc-env/; make vp_mainFm
cd ~/emu-HMpSoC/all-build/qemu-env/; make vp_qemuLauncherOpen two terminals, one for qemu instance and another one for systemC
cd ~/emu-HMpSoC/all-build/qemu-env/;
./vp_qemuLauncher ../../config-soc/configXX.jsoncd ~/emu-HMpSoC/all-build/soc-env/;
./vp_mainFm ../../config-soc/configSocXX.json
# Warning: between two run, remove the ipc socket file
rm /tmp/emu-hmpsoc-tmp/nocIpcOnce the emulation platform has start (end of linux boot). You should connect to each cluster with ssh and load the kernel modules. Loox inside the configuration file in json to determine the port number
ssh localhost -p {offset + clusterId} -l root
pwd: root
cd /run/media/mmcblk0; insmod ker_modules/drv_monAlloc.ko; insmod ker_modules/drv_noc.ko; insmod ker_modules/drv_genIp.koThen you should start the application stub (slave and master)
./mutant_exec appsGraph/XX.mgr # master side
./mutant_slave # slave side