#!/bin/bash cleanup() { sudo umount build/dev/pts sudo umount build/dev sudo umount build/proc sudo umount build/sys sudo umount build/tmp sudo umount build/run sudo umount build/media } trap cleanup EXIT INT TERM run_as() { sudo chroot build sudo -u $1 bash -c "$2" } echo "Creating Ubuntu 20.04 (Focal) root filesystem..." mkdir build sudo debootstrap --components=main,universe focal build # Create user in chroot run_as root "adduser $USER --uid $(id -u) --gecos none --disabled-password" run_as root "echo '$USER ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/user ; chmod 0440 /etc/sudoers.d/user" echo "Copying ti-firmware-builder tar file..." sudo cp downloads/ti-firmware*.tar.gz build/home/$USER echo "Copying TI Processor SDK..." sudo cp downloads/ti-processor*.bin build/home/$USER echo "Copying patches..." sudo cp patches/0001-vision_apps-gen_linker_mem_map.patch build/home/$USER echo "Checking out ti-bench-firmware..." mkdir -p ti-bench-firmware/ti-dm/am62axx mkdir -p ti-bench-firmware/ti-ipc/am62axx echo "Mounting filesystems..." sudo mount --bind /dev build/dev sudo mount --bind /dev/pts build/dev/pts sudo mount --bind /proc build/proc sudo mount --bind /sys build/sys sudo mount --bind /tmp build/tmp sudo mount --bind /run build/run sudo mount --bind /media build/media echo "Unpacking TI Firmware Builder" run_as $USER 'cd ~ ; tar xf ti-firmware*.tar.gz' echo "Installing TI Processor SDK" run_as $USER 'cd ~ ; ./ti-processor*.bin --prefix ~/ti-processor-sdk-linux-edgeai-am62a-evm-11.01.07.05 --mode unattended' echo "Installing build dependencies" run_as root "apt install -q -y wget unzip build-essential git curl python3-distutils libtinfo5 bison flex swig u-boot-tools libopencv-dev libpng-dev libgles2-mesa-dev libgbm-dev libopenexr-dev autoconf libtool libyaml-cpp-dev libavformat-dev python3-pip mono-runtime cmake ninja-build pkgconf graphviz graphviz-dev python3-pyelftools libncurses5 file python3-setuptools libprotobuf-dev protobuf-compiler libprotoc-dev libopencv-dev libssl-dev libgnutls28-dev" echo "Installing Firmware Builder..." run_as $USER 'cd ~/ti-firmware-builder-am62axx-evm-11_01_00_05 ; export PATH=$PATH:~/.local/bin ; ./sdk_builder/scripts/setup_psdk_rtos.sh' echo "Modifying memory map..." echo " Patching code..." run_as $USER 'cd ~/ti-firmware-builder-am62axx-evm-11_01_00_05 ; patch -p1 < ~/0001-vision_apps-gen_linker_mem_map.patch' echo " Install python stuff..." run_as $USER 'cd ~/ti-firmware-builder-am62axx-evm-11_01_00_05 ; cd vision_apps/tools/PyTI_PSDK_RTOS ; pip3 install -e . --user' echo " putting vision_apps under version control..." run_as $USER 'cd ~/ti-firmware-builder-am62axx-evm-11_01_00_05/ ; git init ; git add . ; git commit -m "initial commit"' echo " Execute memory map script..." run_as $USER 'cd ~/ti-firmware-builder-am62axx-evm-11_01_00_05 ; cd vision_apps/platform/am62a/rtos ; export LINUX_INSTALL_PATH=~/ti-processor-sdk-linux-edgeai-am62a-evm-11.01.07.05 ; export ORG_DTS_PATH=${LINUX_INSTALL_PATH}/board-support/ti-linux-kernel-6.12.35+git-ti/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts ; export EDGEAI_DTS_PATH=${LINUX_INSTALL_PATH}/board-support/ti-linux-kernel-6.12.35+git-ti/arch/arm64/boot/dts/ti/k3-am62a7-sk-edgeai.dtso ; ./gen_linker_mem_map.py' echo "Build firmware..." run_as $USER 'cd ~/ti-firmware-builder-am62axx-evm-11_01_00_05/sdk_builder ; export PATH=$PATH:~/.local/bin ; export LINUX_BOOTFS_STAGE_PATH=~/tivision_apps_bootfs_stage ; export LINUX_FS_STAGE_PATH=~/tivision_apps_targetfs_stage ; make sdk -j ; make linux_fs_stage' echo "Copy firmware files to ti-bench-firmware..." cp build/home/$USER/ti-processor-sdk-linux-edgeai-am62a-evm-11.01.07.05/board-support/prebuilt-images/am62a-evm/ti-dm/am62axx/dm_edgeai_mcu1_0_release_strip.out ti-bench-firmware/ti-dm/am62axx/ cp build/home/$USER/tivision_apps_targetfs_stage/usr/lib/firmware/ti-ipc/am62axx/dsp_edgeai_c7x_1_release_strip.out ti-bench-firmware/ti-ipc/am62axx/ exit 0