mirror of
https://github.com/openmv/openmv.git
synced 2025-09-26 23:09:13 +08:00
tools: Add STEdge AI tools download.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
This commit is contained in:
parent
a896eef9b0
commit
98bcdc5d21
1
.gitignore
vendored
1
.gitignore
vendored
@ -36,3 +36,4 @@ tools/alif/**/*.ds
|
|||||||
tools/alif/**/*.bin
|
tools/alif/**/*.bin
|
||||||
tools/alif/**/*.bin.sign
|
tools/alif/**/*.bin.sign
|
||||||
tools/alif/build/*-map.txt
|
tools/alif/build/*-map.txt
|
||||||
|
tools/st/stedgeai
|
||||||
|
69
tools/ci.sh
69
tools/ci.sh
@ -5,12 +5,6 @@
|
|||||||
GCC_TOOLCHAIN_PATH=${HOME}/cache/gcc
|
GCC_TOOLCHAIN_PATH=${HOME}/cache/gcc
|
||||||
GCC_TOOLCHAIN_URL="https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz"
|
GCC_TOOLCHAIN_URL="https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz"
|
||||||
|
|
||||||
LLVM_TOOLCHAIN_PATH=${HOME}/cache/llvm
|
|
||||||
LLVM_TOOLCHAIN_URL="https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-18.1.3/LLVM-ET-Arm-18.1.3-Linux-x86_64.tar.xz"
|
|
||||||
|
|
||||||
GNU_MAKE_PATH=${HOME}/cache/make
|
|
||||||
GNU_MAKE_URL="https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz"
|
|
||||||
|
|
||||||
ci_install_arm_gcc() {
|
ci_install_arm_gcc() {
|
||||||
mkdir -p ${GCC_TOOLCHAIN_PATH}
|
mkdir -p ${GCC_TOOLCHAIN_PATH}
|
||||||
wget --no-check-certificate -O - ${GCC_TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${GCC_TOOLCHAIN_PATH}
|
wget --no-check-certificate -O - ${GCC_TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${GCC_TOOLCHAIN_PATH}
|
||||||
@ -18,6 +12,11 @@ ci_install_arm_gcc() {
|
|||||||
arm-none-eabi-gcc --version
|
arm-none-eabi-gcc --version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
# Install ARM LLVM.
|
||||||
|
LLVM_TOOLCHAIN_PATH=${HOME}/cache/llvm
|
||||||
|
LLVM_TOOLCHAIN_URL="https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-18.1.3/LLVM-ET-Arm-18.1.3-Linux-x86_64.tar.xz"
|
||||||
|
|
||||||
ci_install_arm_llvm() {
|
ci_install_arm_llvm() {
|
||||||
mkdir -p ${LLVM_TOOLCHAIN_PATH}
|
mkdir -p ${LLVM_TOOLCHAIN_PATH}
|
||||||
wget --no-check-certificate -O - ${LLVM_TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${LLVM_TOOLCHAIN_PATH}
|
wget --no-check-certificate -O - ${LLVM_TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${LLVM_TOOLCHAIN_PATH}
|
||||||
@ -25,6 +24,11 @@ ci_install_arm_llvm() {
|
|||||||
clang --version
|
clang --version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
# Install GNU Make.
|
||||||
|
GNU_MAKE_PATH=${HOME}/cache/make
|
||||||
|
GNU_MAKE_URL="https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz"
|
||||||
|
|
||||||
ci_install_gnu_make() {
|
ci_install_gnu_make() {
|
||||||
mkdir -p ${GNU_MAKE_PATH}
|
mkdir -p ${GNU_MAKE_PATH}
|
||||||
wget --no-check-certificate -O - ${GNU_MAKE_URL} | tar --strip-components=1 -zx -C ${GNU_MAKE_PATH}
|
wget --no-check-certificate -O - ${GNU_MAKE_URL} | tar --strip-components=1 -zx -C ${GNU_MAKE_PATH}
|
||||||
@ -35,7 +39,6 @@ ci_install_gnu_make() {
|
|||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# Update Submodules.
|
# Update Submodules.
|
||||||
|
|
||||||
ci_update_submodules() {
|
ci_update_submodules() {
|
||||||
git submodule update --init --depth=1 --no-single-branch
|
git submodule update --init --depth=1 --no-single-branch
|
||||||
git -C lib/micropython/ submodule update --init --depth=1
|
git -C lib/micropython/ submodule update --init --depth=1
|
||||||
@ -43,7 +46,6 @@ ci_update_submodules() {
|
|||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# Build Targets.
|
# Build Targets.
|
||||||
|
|
||||||
ci_build_target() {
|
ci_build_target() {
|
||||||
export LLVM_PATH=${LLVM_TOOLCHAIN_PATH}/bin
|
export LLVM_PATH=${LLVM_TOOLCHAIN_PATH}/bin
|
||||||
export PATH=${GNU_MAKE_PATH}:${GCC_TOOLCHAIN_PATH}/bin:${PATH}
|
export PATH=${GNU_MAKE_PATH}:${GCC_TOOLCHAIN_PATH}/bin:${PATH}
|
||||||
@ -59,7 +61,6 @@ ci_build_target() {
|
|||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# Prepare Firmware Packages.
|
# Prepare Firmware Packages.
|
||||||
|
|
||||||
ci_package_firmware_release() {
|
ci_package_firmware_release() {
|
||||||
# Add WiFi firmware blobs
|
# Add WiFi firmware blobs
|
||||||
cp -rf drivers/cyw4343/firmware firmware/CYW4343
|
cp -rf drivers/cyw4343/firmware firmware/CYW4343
|
||||||
@ -93,7 +94,6 @@ ci_install_code_format_deps() {
|
|||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# Run code formatter
|
# Run code formatter
|
||||||
|
|
||||||
ci_run_code_format_check() {
|
ci_run_code_format_check() {
|
||||||
export PATH=${CODEFORMAT_PATH}/bin:${PATH}
|
export PATH=${CODEFORMAT_PATH}/bin:${PATH}
|
||||||
UNCRUSTIFY_CONFIG=tools/uncrustify.cfg
|
UNCRUSTIFY_CONFIG=tools/uncrustify.cfg
|
||||||
@ -110,3 +110,52 @@ ci_run_code_format_check() {
|
|||||||
done
|
done
|
||||||
exit $exit_code
|
exit $exit_code
|
||||||
}
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
# Install STEdgeAI tools
|
||||||
|
STEDGEAI_URL="https://upload.openmv.io/stedgeai/STEdgeAI-2.1.0.tar.gz"
|
||||||
|
STEDGEAI_SHA256="888e71715127ff6384e38fcde96eea28f53f8370b2bb9cf0d2f6f939001b350c"
|
||||||
|
STEDGEAI_CACHE="${HOME}/cache/stedgeai"
|
||||||
|
|
||||||
|
ci_install_stedgeai() {
|
||||||
|
STEDGEAI_PATH="${1}"
|
||||||
|
|
||||||
|
# If cached in CI, copy from cache to build.
|
||||||
|
if [ -d "${STEDGEAI_CACHE}" ]; then
|
||||||
|
mkdir -p "${STEDGEAI_PATH}"
|
||||||
|
cp -r "${STEDGEAI_CACHE}/." "${STEDGEAI_PATH}"
|
||||||
|
touch "${STEDGEAI_PATH}/stedgeai.stamp"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download and install to STEDGEAI_PATH
|
||||||
|
echo "Downloading STEdge AI tools..."
|
||||||
|
mkdir -p "${STEDGEAI_PATH}"
|
||||||
|
|
||||||
|
# Create temporary file
|
||||||
|
tmpfile=$(mktemp)
|
||||||
|
trap 'rm -f "$tmpfile"' EXIT
|
||||||
|
|
||||||
|
# Download and verify checksum
|
||||||
|
wget --no-check-certificate -O "$tmpfile" "$STEDGEAI_URL" || {
|
||||||
|
echo "Download failed!"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "${STEDGEAI_SHA256} ${tmpfile}" | sha256sum -c - || {
|
||||||
|
echo "Checksum failed!"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extract the tools
|
||||||
|
echo "Extracting to ${STEDGEAI_PATH}..."
|
||||||
|
tar -xzf "$tmpfile" -C "${STEDGEAI_PATH}" --strip-components=1 || {
|
||||||
|
echo "Extraction failed!"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
touch "${STEDGEAI_PATH}/stedgeai.stamp"
|
||||||
|
|
||||||
|
echo "STEdgeAI installed successfully to ${STEDGEAI_PATH}"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
10
tools/st/scripts/neuralart.json
Normal file
10
tools/st/scripts/neuralart.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"Globals": {
|
||||||
|
},
|
||||||
|
"Profiles": {
|
||||||
|
"default": {
|
||||||
|
"memory_pool": "stm32n6.mpool",
|
||||||
|
"options": "--native-float --mvei --cache-maintenance --Ocache-opt --enable-virtual-mem-pools --Os --optimization 3 --Oauto-sched --all-buffers-info --csv-file network.csv --enable-epoch-controller"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
171
tools/st/scripts/stm32n6.mpool
Executable file
171
tools/st/scripts/stm32n6.mpool
Executable file
@ -0,0 +1,171 @@
|
|||||||
|
{
|
||||||
|
"params": {
|
||||||
|
"param": [
|
||||||
|
{
|
||||||
|
"paramname": "max_onchip_sram_size",
|
||||||
|
"value": "1024",
|
||||||
|
"magnitude": "KBYTES"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"cacheinfo": [
|
||||||
|
{
|
||||||
|
"nlines": 512,
|
||||||
|
"linesize": 64,
|
||||||
|
"associativity": 8,
|
||||||
|
"bypass_enable": 1,
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_WRITE",
|
||||||
|
"throughput": "MID",
|
||||||
|
"latency": "MID",
|
||||||
|
"byteWidth": 8,
|
||||||
|
"freqRatio": 2.50,
|
||||||
|
"read_power": 13.584,
|
||||||
|
"write_power": 12.645
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mem_file_prefix": "atonbuf",
|
||||||
|
"mempools": [
|
||||||
|
{
|
||||||
|
"fname": "AXISRAM3",
|
||||||
|
"name": "npuRAM3",
|
||||||
|
"fformat": "FORMAT_RAW",
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_WRITE",
|
||||||
|
"throughput": "HIGH",
|
||||||
|
"latency": "LOW",
|
||||||
|
"byteWidth": 8,
|
||||||
|
"freqRatio": 1.25,
|
||||||
|
"read_power": 18.531,
|
||||||
|
"write_power": 16.201
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"value": "0x34200000",
|
||||||
|
"magnitude": "BYTES"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": "448",
|
||||||
|
"magnitude": "KBYTES"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fname": "AXISRAM4",
|
||||||
|
"name": "npuRAM4",
|
||||||
|
"fformat": "FORMAT_RAW",
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_WRITE",
|
||||||
|
"throughput": "HIGH",
|
||||||
|
"latency": "LOW",
|
||||||
|
"byteWidth": 8,
|
||||||
|
"freqRatio": 1.25,
|
||||||
|
"read_power": 18.531,
|
||||||
|
"write_power": 16.201
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"value": "0x34270000",
|
||||||
|
"magnitude": "BYTES"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": "448",
|
||||||
|
"magnitude": "KBYTES"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fname": "AXISRAM5",
|
||||||
|
"name": "npuRAM5",
|
||||||
|
"fformat": "FORMAT_RAW",
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_WRITE",
|
||||||
|
"throughput": "HIGH",
|
||||||
|
"latency": "LOW",
|
||||||
|
"byteWidth": 8,
|
||||||
|
"freqRatio": 1.25,
|
||||||
|
"read_power": 18.531,
|
||||||
|
"write_power": 16.201
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"value": "0x342e0000",
|
||||||
|
"magnitude": "BYTES"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": "448",
|
||||||
|
"magnitude": "KBYTES"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fname": "AXISRAM6",
|
||||||
|
"name": "npuRAM6",
|
||||||
|
"fformat": "FORMAT_RAW",
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_WRITE",
|
||||||
|
"throughput": "HIGH",
|
||||||
|
"latency": "LOW",
|
||||||
|
"byteWidth": 8,
|
||||||
|
"freqRatio": 1.25,
|
||||||
|
"read_power": 18.531,
|
||||||
|
"write_power": 16.201
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"value": "0x34350000",
|
||||||
|
"magnitude": "BYTES"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": "448",
|
||||||
|
"magnitude": "KBYTES"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fname": "xSPI1",
|
||||||
|
"name": "hyperRAM",
|
||||||
|
"fformat": "FORMAT_RAW",
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_WRITE",
|
||||||
|
"throughput": "MID",
|
||||||
|
"latency": "HIGH",
|
||||||
|
"byteWidth": 2,
|
||||||
|
"freqRatio": 5.00,
|
||||||
|
"cacheable": "CACHEABLE_ON",
|
||||||
|
"read_power": 380,
|
||||||
|
"write_power": 340.0,
|
||||||
|
"constants_preferred": "true"
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"value": "0x92000000",
|
||||||
|
"magnitude": "BYTES"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": "16",
|
||||||
|
"magnitude": "MBYTES"
|
||||||
|
},
|
||||||
|
"mode": "USEMODE_RELATIVE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fname": "xSPI2",
|
||||||
|
"name": "octoFlash",
|
||||||
|
"fformat": "FORMAT_RAW",
|
||||||
|
"prop": {
|
||||||
|
"rights": "ACC_READ",
|
||||||
|
"throughput": "MID",
|
||||||
|
"latency": "HIGH",
|
||||||
|
"byteWidth": 1,
|
||||||
|
"freqRatio": 6.00,
|
||||||
|
"cacheable": "CACHEABLE_ON",
|
||||||
|
"read_power": 110,
|
||||||
|
"write_power": 400.0,
|
||||||
|
"constants_preferred": "true"
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"value": "0x71000000",
|
||||||
|
"magnitude": "BYTES"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": "16",
|
||||||
|
"magnitude": "MBYTES"
|
||||||
|
},
|
||||||
|
"mode": "USEMODE_RELATIVE"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user