MLECO-4371 Update dependencies to 23.11 release components

* Updated NPU components and dependencies (core-driver, core-platform,
Vela, CMSIS, TensorFlow Lite Micro) to 23.11 release SHAs.
* Changed Python version to 3.10
* Updated release notes and other documentation
* Added workarounds to scripts in order to address build issues

Signed-off-by: Aron Virginas-Tar <aron.virginas-tar@arm.com>

Change-Id: I0a639b80881b53eebb216085b7e6764e3be8ca67
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91f31f3..fbf3b72 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -84,7 +84,7 @@
 endif()
 
 project(arm_ml_embedded_evaluation_kit
-        VERSION     23.08.0
+        VERSION     23.11.0
         DESCRIPTION "ARM ML Embedded Evaluation Kit"
         LANGUAGES   C CXX ASM)
 
diff --git a/Dockerfile b/Dockerfile
index c98a950..00fe747 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -21,10 +21,12 @@
     apt-get install -y \
     make \
     git \
-    python3.9 \
+    python3.10 \
     python3-pip \
-    python3.9-dev \
-    python3.9-venv \
+    python3.10-dev \
+    python3.10-venv \
+    g++-10 \
+    gcc-10 \
     unzip \
     curl \
     wget \
@@ -33,10 +35,19 @@
     sudo \
     telnet
 
-# Set Python3.9 as default
+# Set Python3.10 as default
 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10 && \
-    update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 20 && \
-    update-alternatives --set python3 /usr/bin/python3.9 && python3 --version
+    update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 20 && \
+    update-alternatives --set python3 /usr/bin/python3.10 && python3 --version
+
+# Update symlinks for gcc
+RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10 && \
+    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 20 && \
+    update-alternatives --set gcc /usr/bin/gcc-10 && gcc --version
+# Update symlinks for g++
+RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10 && \
+    update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 20 && \
+    update-alternatives --set g++ /usr/bin/g++-10 && g++ --version \
 
 # Download and install gcc 13.2
 RUN curl -L 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 -o gcc-arm-none-eabi.tar.xz && \
diff --git a/dependencies/cmsis-nn b/dependencies/cmsis-nn
index 85164a8..bfc54ed 160000
--- a/dependencies/cmsis-nn
+++ b/dependencies/cmsis-nn
@@ -1 +1 @@
-Subproject commit 85164a811917770d7027a12a57ed3b469dac6537
+Subproject commit bfc54edb61e873039ec0857cacc40df36b1d644e
diff --git a/dependencies/core-driver b/dependencies/core-driver
index 90f9df9..0189cd2 160000
--- a/dependencies/core-driver
+++ b/dependencies/core-driver
@@ -1 +1 @@
-Subproject commit 90f9df900acdc0718ecd2dfdc53780664758dec5
+Subproject commit 0189cd2b334b2d88302d13d6003c50a642db0bb5
diff --git a/dependencies/core-platform b/dependencies/core-platform
index 8d3074b..1575e51 160000
--- a/dependencies/core-platform
+++ b/dependencies/core-platform
@@ -1 +1 @@
-Subproject commit 8d3074b0e82ed46e45d13c22a39e40388a9df8c7
+Subproject commit 1575e51075da805e6a85796c007f3c6eb5697d1e
diff --git a/dependencies/tensorflow b/dependencies/tensorflow
index 568d181..0996efe 160000
--- a/dependencies/tensorflow
+++ b/dependencies/tensorflow
@@ -1 +1 @@
-Subproject commit 568d181ccc1f60e49742fd43b7f97141ee8d45fc
+Subproject commit 0996efe9b60fde8efcde5242df1afc6ee24d9ee2
diff --git a/docs/quick_start.md b/docs/quick_start.md
index d9c3712..daef495 100644
--- a/docs/quick_start.md
+++ b/docs/quick_start.md
@@ -37,14 +37,14 @@
     [supported by Vela](https://review.mlplatform.org/plugins/gitiles/ml/ethos-u/ethos-u-vela/+/HEAD/SUPPORTED_OPS.md).
 
     ```commandline
-    python3.9 ./build_default.py
+    python3 ./build_default.py
     ```
 
     > **Note** The preceding command assumes you are using the GNU Arm Embedded toolchain. If you are using the Arm
     > Compiler instead, you can override the default selection by executing:
 
     ```commandline
-    python3.9 ./build_default.py --toolchain arm
+    python3 ./build_default.py --toolchain arm
     ```
 
 5. Launch the project as explained in the following section: [Deployments](sections/deployment.md#deployment). In quick
@@ -71,7 +71,7 @@
 python3 -m venv env
 env/bin/python3 -m pip install --upgrade pip
 env/bin/python3 -m pip install --upgrade setuptools
-env/bin/python3 -m pip install ethos-u-vela==3.9.0
+env/bin/python3 -m pip install ethos-u-vela==3.10.0
 cd ..
 
 curl -L https://github.com/ARM-software/ML-zoo/raw/7c32b097f7d94aae2cd0b98a8ed5a3ba81e66b18/models/anomaly_detection/micronet_medium/tflite_int8/ad_medium_int8.tflite \
diff --git a/docs/sections/building.md b/docs/sections/building.md
index e84acf9..d20e570 100644
--- a/docs/sections/building.md
+++ b/docs/sections/building.md
@@ -90,17 +90,17 @@
 >
 > `export PATH=$(readlink -e resources_downloaded/env/bin):${PATH}`
 
-- Python 3.9 or above is installed. Check your current installed version of Python by running:
+- Python 3.10 or above is installed. Check your current installed version of Python by running:
 
     ```commandline
     python3 --version
     ```
 
     ```log
-    Python 3.9.7
+    Python 3.10.12
     ```
 
-  > **Note:** If you have an older version of Python installed (< 3.9) see the
+  > **Note:** If you have an older version of Python installed (< 3.10) see the
   > [Troubleshooting](./troubleshooting.md#how-to-update-python3-package-to-newer-version)
   > for instruction on how to install and use it.
   > **Note:** This scenario might be true if you are using an Arm Virtual Hardware instance.
@@ -121,7 +121,7 @@
   ```
 
   ```log
-  pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.9)
+  pip 22.0.2 from /usr/lib/python3/dist-packages/pip
   ```
 
 - Make
@@ -357,11 +357,11 @@
 for the default 128 MACs configuration of the Arm® *Ethos™-U55* NPU and for the default 256 MACs configuration of the
 Arm® *Ethos™-U65* NPU.
 
-> **Note:** This script requires Python version 3.9 or higher. Please make sure all [build prerequisites](./building.md#build-prerequisites)
-> are satisfied. If your environment points to system installed Python3 that is an older version than 3.9, choose the
+> **Note:** This script requires Python version 3.10 or higher. Please make sure all [build prerequisites](./building.md#build-prerequisites)
+> are satisfied. If your environment points to system installed Python3 that is an older version than 3.10, choose the
 > required version explicitly after installing it:
 > ```sh
-> python3.9 ./set_up_default_resources.py
+> python3.10 ./set_up_default_resources.py
 > ```
 >
 > **Note:** This script also installs required version of CMake into the virtual environment, which can be used by activating it.
diff --git a/download_dependencies.py b/download_dependencies.py
index 786fa4c..995c7ae 100755
--- a/download_dependencies.py
+++ b/download_dependencies.py
@@ -42,7 +42,7 @@
         temp.seek(0)
         logging.info("Finished downloading %s.", url_file)
         if url_file.endswith(".tar.gz"):
-            untar(temp, to_path)
+            untar(temp.name, to_path)
         else:
             unzip(temp, to_path)
 
diff --git a/release_notes.txt b/release_notes.txt
index 76072d6..e70332b 100644
--- a/release_notes.txt
+++ b/release_notes.txt
@@ -1,3 +1,10 @@
+Changes in 23.11
+    * Support for 23.11 NPU components and dependencies (core-driver, core-platform, Vela 3.10.0, CMSIS, CMSIS-NN and TensorFlow Lite Micro).
+    * Increase minimum requirements of Python to 3.10
+    * Update Python files to conform to Pylint
+    * Adding support for Arm Cortex-M85 with GCC
+    * Updates to documentation
+
 Changes in 23.08
     * Support for 23.08 NPU components and dependencies (core-driver, core-platform, Vela 3.9.0, CMSIS, CMSIS-NN and TensorFlow Lite Micro).
     * Update Python package requirements for compatibility reasons.
diff --git a/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300-debug.ld b/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300-debug.ld
index 6531403..35f59f6 100644
--- a/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300-debug.ld
+++ b/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300-debug.ld
@@ -84,7 +84,8 @@
                    *flatbuffer*.o
                    *Profiler*.obj
                    *lcd*.obj
-                   *timing_adapter.c.obj)
+                   *timing_adapter.c.obj
+                   *s4*.o)
     .text*)
 
     KEEP(*(.init))
@@ -208,6 +209,8 @@
     . = ALIGN(4);
     *Profiler*.obj (*.text*)
     . = ALIGN(4);
+    *s4*.o (*.text*)  /* Temporary solution to move s4 operations to DDR. */
+    . = ALIGN(4);
   } > DDR AT > DDR
 
   /**
diff --git a/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300.sct b/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300.sct
index c9b1c44..2e3646e 100644
--- a/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300.sct
+++ b/scripts/cmake/platforms/mps3/sse-300/mps3-sse-300.sct
@@ -103,6 +103,9 @@
 
         ; activation buffers a.k.a tensor arena when memory mode dedicated sram
         *.o (activation_buf_dram)
+
+        ; Temporary solution to move s4 operations here.
+        *s4*.o (+RO +RW +ZI)
     }
 
     ;-----------------------------------------------------
diff --git a/scripts/cmake/platforms/simple_platform/simple_platform.sct b/scripts/cmake/platforms/simple_platform/simple_platform.sct
index f34170e..b987f5a 100644
--- a/scripts/cmake/platforms/simple_platform/simple_platform.sct
+++ b/scripts/cmake/platforms/simple_platform/simple_platform.sct
@@ -103,6 +103,9 @@
 
         ; activation buffers a.k.a tensor arena when memory mode dedicated sram
         *.o (activation_buf_dram)
+
+        ; Temporary solution to move s4 operations here.
+        *s4*.o (+RO +RW +ZI)
     }
 
     ;-----------------------------------------------------
diff --git a/scripts/cmake/platforms/simple_platform/simple_platform_debug.ld b/scripts/cmake/platforms/simple_platform/simple_platform_debug.ld
index 4bbe6c0..dbedb8e 100644
--- a/scripts/cmake/platforms/simple_platform/simple_platform_debug.ld
+++ b/scripts/cmake/platforms/simple_platform/simple_platform_debug.ld
@@ -77,7 +77,8 @@
                    *flatbuffer*.o
                    *lcd*.obj
                    *Profiler*.obj
-                   *timing_adapter.c.obj)
+                   *timing_adapter.c.obj
+                   *s4*.o)
     .text*)
 
     KEEP(*(.init))
@@ -201,6 +202,8 @@
     . = ALIGN(4);
     *Profiler*.obj (*.text*)
     . = ALIGN(4);
+    *s4*.o (*.text*)  /* Temporary solution to move s4 operations to DDR. */
+    . = ALIGN(4);
   } > DDR AT > DDR
 
   /**
diff --git a/scripts/py/dependency_urls.json b/scripts/py/dependency_urls.json
index 56ea403..316c628 100644
--- a/scripts/py/dependency_urls.json
+++ b/scripts/py/dependency_urls.json
@@ -1,8 +1,8 @@
 {
   "cmsis": "https://github.com/ARM-software/CMSIS_5/archive/a75f01746df18bb5b929dfb8dc6c9407fac3a0f3.zip",
   "cmsis-dsp": "https://github.com/ARM-software/CMSIS-DSP/archive/refs/tags/v1.15.0.zip",
-  "cmsis-nn": "https://github.com/ARM-software/CMSIS-NN/archive/85164a811917770d7027a12a57ed3b469dac6537.zip",
-  "core-driver": "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git/snapshot/ethos-u-core-driver-23.08.tar.gz",
-  "core-platform": "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-platform.git/snapshot/ethos-u-core-platform-23.08.tar.gz",
-  "tensorflow": "https://github.com/tensorflow/tflite-micro/archive/568d181ccc1f60e49742fd43b7f97141ee8d45fc.zip"
+  "cmsis-nn": "https://github.com/ARM-software/CMSIS-NN/archive/bfc54edb61e873039ec0857cacc40df36b1d644e.zip",
+  "core-driver": "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git/snapshot/ethos-u-core-driver-23.11.tar.gz",
+  "core-platform": "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-platform.git/snapshot/ethos-u-core-platform-23.11.tar.gz",
+  "tensorflow": "https://github.com/tensorflow/tflite-micro/archive/0996efe9b60fde8efcde5242df1afc6ee24d9ee2.zip"
 }
diff --git a/set_up_default_resources.py b/set_up_default_resources.py
index a3987bc..f5cd0ac 100755
--- a/set_up_default_resources.py
+++ b/set_up_default_resources.py
@@ -39,8 +39,9 @@
 from scripts.py.check_update_resources_downloaded import get_md5sum_for_file
 
 # Supported version of Python and Vela
-VELA_VERSION = "3.9.0"
-py3_version_minimum = (3, 9)
+
+VELA_VERSION = "3.10.0"
+py3_version_minimum = (3, 10)
 
 # Valid NPU configurations:
 valid_npu_config_names = [