diff --git a/dependencies/core-driver b/dependencies/core-driver
index 8565d75..effc7aa 160000
--- a/dependencies/core-driver
+++ b/dependencies/core-driver
@@ -1 +1 @@
-Subproject commit 8565d75b96a2f57f559f12dc0c68438bcfd276c8
+Subproject commit effc7aa8b9272fb20cdd1a7d1097818af70acc93
diff --git a/dependencies/core-software b/dependencies/core-software
index 3a0d3f2..7f3c1c9 160000
--- a/dependencies/core-software
+++ b/dependencies/core-software
@@ -1 +1 @@
-Subproject commit 3a0d3f286be62b4933ba404187aff23cae166a5a
+Subproject commit 7f3c1c92732b611a53968b14e70a2b116e43b980
diff --git a/resources/ad/samples/files.md b/resources/ad/samples/files.md
index 95b1479..e1aed1c 100644
--- a/resources/ad/samples/files.md
+++ b/resources/ad/samples/files.md
@@ -1,6 +1,7 @@
 # Sample wav audio clip
 
-For this use case sample audio clips aren't provided.
+For this use case sample audio clips aren't provided. However, the file
+`random_id_00_000000.wav` is provided as a dummy placeholder.
 
 The data used for this application sample comes from
 [https://zenodo.org/record/3384388\#.X6GILFNKiqA](https://zenodo.org/record/3384388\#.X6GILFNKiqA)
diff --git a/resources/ad/samples/random_id_00_000000.wav b/resources/ad/samples/random_id_00_000000.wav
new file mode 100644
index 0000000..529e652
--- /dev/null
+++ b/resources/ad/samples/random_id_00_000000.wav
Binary files differ
diff --git a/scripts/cmake/subsystem-profiles/simple_platform.cmake b/scripts/cmake/subsystem-profiles/simple_platform.cmake
index c11706d..c5e9d59 100644
--- a/scripts/cmake/subsystem-profiles/simple_platform.cmake
+++ b/scripts/cmake/subsystem-profiles/simple_platform.cmake
@@ -24,7 +24,7 @@
 #                              Application specific config                                        #
 ###################################################################################################
 
-# This parameter is based on the linker/scatter script for internal FVP. Do not change this
+# This parameter is based on the linker/scatter script for simple platform. Do not change this
 # parameter in isolation.
 set(ACTIVATION_BUF_SRAM_SZ "0x00200000"      CACHE STRING "Maximum SRAM size for activation buffers")
 set(DESIGN_NAME            "Simple platform" CACHE STRING "Design name")
diff --git a/scripts/py/gen_audio_cpp.py b/scripts/py/gen_audio_cpp.py
index 54fdb23..e7155c7 100644
--- a/scripts/py/gen_audio_cpp.py
+++ b/scripts/py/gen_audio_cpp.py
@@ -75,7 +75,7 @@
 
 def write_individual_audio_cc_file(clip_dirpath, clip_filename,
                                    cc_filename, header_template_file, array_name,
-                                   sampling_rate_value, mono_value, offset_value, 
+                                   sampling_rate_value, mono_value, offset_value,
                                    duration_value, res_type_value, min_len):
     print(f"++ Converting {clip_filename} to {path.basename(cc_filename)}")
     audio_filepath = path.join(clip_dirpath, clip_filename)
@@ -85,8 +85,8 @@
                                                                 res_type_value, min_len)
 
     # Change from [-1, 1] fp32 range to int16 range.
-    clip_data = np.clip((clip_data * (1 << 15)), 
-                        np.iinfo(np.int16).min, 
+    clip_data = np.clip((clip_data * (1 << 15)),
+                        np.iinfo(np.int16).min,
                         np.iinfo(np.int16).max).flatten().astype(np.int16)
 
     header_template = env.get_template(header_template_file)
@@ -117,7 +117,7 @@
     header_filepath = path.join(args.header_folder_path, header_filename)
     common_cc_filepath = path.join(args.source_folder_path, common_cc_filename)
 
-    if os.path.isdir(args.audio_path):  
+    if os.path.isdir(args.audio_path):
         filepaths = sorted(glob.glob(path.join(args.audio_path, '**/*.wav'), recursive=True))
     elif os.path.isfile(args.audio_path):
         filepaths = [args.audio_path]
@@ -125,7 +125,7 @@
         raise OSError("Directory or file does not exist.")
 
     for filepath in filepaths:
-        filename = path.basename(filepath)	
+        filename = path.basename(filepath)
         clip_dirpath = path.dirname(filepath)
         try:
             audioclip_filenames.append(filename)
@@ -145,8 +145,11 @@
             if args.verbosity:
                 print(f"Failed to open {filename} as an audio.")
 
-    write_hpp_file(header_filepath, common_cc_filepath, args.license_template,
-                   audioclip_idx, audioclip_filenames, audioclip_array_names)
+    if len(audioclip_filenames) > 0:
+        write_hpp_file(header_filepath, common_cc_filepath, args.license_template,
+                    audioclip_idx, audioclip_filenames, audioclip_array_names)
+    else:
+        raise FileNotFoundError("No valid audio clip files found.")
 
 
 if __name__ == '__main__':
diff --git a/scripts/py/gen_rgb_cpp.py b/scripts/py/gen_rgb_cpp.py
index 1a2e09b..957d2d0 100644
--- a/scripts/py/gen_rgb_cpp.py
+++ b/scripts/py/gen_rgb_cpp.py
@@ -127,8 +127,12 @@
     header_filepath = os.path.join(args.header_folder_path, header_filename)
     common_cc_filename = "InputFiles.cc"
     common_cc_filepath = os.path.join(args.source_folder_path, common_cc_filename)
-    write_hpp_file(header_filepath, common_cc_filepath, args.license_template,
-                   image_idx, image_filenames, image_array_names, args.image_size)
+
+    if len(image_filenames) > 0:
+        write_hpp_file(header_filepath, common_cc_filepath, args.license_template,
+                    image_idx, image_filenames, image_array_names, args.image_size)
+    else:
+        raise FileNotFoundError("No valid images found.")
 
 
 if __name__ == '__main__':
diff --git a/scripts/py/templates/AudioClips.hpp.template b/scripts/py/templates/AudioClips.hpp.template
index eb0beda..2bcf45c 100644
--- a/scripts/py/templates/AudioClips.hpp.template
+++ b/scripts/py/templates/AudioClips.hpp.template
@@ -23,6 +23,7 @@
 #include <stddef.h>
 
 #define NUMBER_OF_FILES  ({{clips_count}}U)
+
 {% for var_name, size in varname_size %}
 extern const int16_t {{var_name}}[{{size}}];
 {% endfor %}
diff --git a/source/application/hal/hal.c b/source/application/hal/hal.c
index 9c2ce32..2ce2684 100644
--- a/source/application/hal/hal.c
+++ b/source/application/hal/hal.c
@@ -28,6 +28,8 @@
 #include "timing_adapter.h"             /* Arm Ethos-U55 timing adapter driver header */
 #include "timing_adapter_settings.h"    /* Arm Ethos-U55 timing adapter settings */
 
+extern struct ethosu_driver ethosu_drv; /* Default Ethos-U55 device driver */
+
 /**
  * @brief   Initialises the Arm Ethos-U55 NPU
  * @return  0 if successful, error code otherwise
@@ -133,7 +135,7 @@
 static void arm_npu_irq_handler(void)
 {
     /* Call the default interrupt handler from the NPU driver */
-    ethosu_irq_handler();
+    ethosu_irq_handler(&ethosu_drv);
 }
 
 /**
@@ -229,7 +231,8 @@
     /* Initialise Ethos-U55 device */
     const void * ethosu_base_address = (void *)(SEC_ETHOS_U55_BASE);
 
-    if (0 != (err = ethosu_init_v3(
+    if (0 != (err = ethosu_init(
+                        &ethosu_drv,            /* Ethos-U55 driver device pointer */
                         ethosu_base_address,    /* Ethos-U55's base address. */
                         NULL,                   /* Pointer to fast mem area - NULL for U55. */
                         0,                      /* Fast mem region size. */
@@ -243,7 +246,7 @@
 
     /* Get Ethos-U55 version */
     struct ethosu_version version;
-    if (0 != (err = ethosu_get_version(&version))) {
+    if (0 != (err = ethosu_get_version(&ethosu_drv, &version))) {
         printf_err("failed to fetch Ethos-U55 version info\n");
         return err;
     }
diff --git a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/stubs_fvp.h b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/stubs_simple_platform.h
similarity index 95%
rename from source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/stubs_fvp.h
rename to source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/stubs_simple_platform.h
index aec0be1..9977cd2 100644
--- a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/stubs_fvp.h
+++ b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/stubs_simple_platform.h
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef BSP_PACK_FASTMODEL_H
-#define BSP_PACK_FASTMODEL_H
+#ifndef STUBS_SIMPLE_PLATFORM_H
+#define STUBS_SIMPLE_PLATFORM_H
 
 #include "cmsis.h"                  /* device specific header file    */
 #include "peripheral_memmap.h"      /* peripheral memory map definitions */
 
 /****************************************************************************/
 /*              Definitions and stub functions for modules currently        */
-/*              unavailable on the model                                    */
+/*              unavailable on this target platform                         */
 /****************************************************************************/
 #define GLCD_WIDTH      320
 #define GLCD_HEIGHT     240
@@ -113,4 +113,4 @@
             unsigned int w, unsigned int h,
             unsigned short color);
 
-#endif /* BSP_PACK_FASTMODEL_H */
+#endif /* STUBS_SIMPLE_PLATFORM_H */
diff --git a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/timer_fvp.h b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/timer_simple_platform.h
similarity index 76%
rename from source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/timer_fvp.h
rename to source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/timer_simple_platform.h
index c07a4eb..320a57a 100644
--- a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/timer_fvp.h
+++ b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/include/timer_simple_platform.h
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef TIMER_FVP_H
-#define TIMER_FVP_H
+#ifndef TIMER_SIMPLE_PLATFORM_H
+#define TIMER_SIMPLE_PLATFORM_H
 
-#include "stubs_fvp.h"
+#include "stubs_simple_platform.h"
 
-/* Container for timestamp for fastmodel. */
-typedef struct _fvp_time_counter {
+/* Container for timestamp for simple platform. */
+typedef struct _generic_time_counter {
     uint64_t    counter_systick;
-} fvp_time_counter;
+} generic_time_counter;
 
 /**
  * @brief   Resets the counters.
@@ -33,13 +33,13 @@
  * @brief   Gets the current counter values.
  * @returns counter struct.
  **/
-fvp_time_counter get_time_counter(void);
+generic_time_counter get_time_counter(void);
 
 /**
  * @brief   Gets the cycle counts elapsed between start and end.
  * @return  difference in counter values as 32 bit unsigned integer.
  */
-uint64_t get_cycle_count_diff(fvp_time_counter *start, fvp_time_counter *end);
+uint64_t get_cycle_count_diff(generic_time_counter *start, generic_time_counter *end);
 
 /**
  * @brief   Enables or triggers cycle counting mechanism, if required
@@ -52,4 +52,4 @@
  */
 void stop_cycle_counter(void);
 
-#endif /* TIMER_FVP_H */
+#endif /* TIMER_SIMPLE_PLATFORM_H */
diff --git a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/stubs_fvp.c b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/stubs_simple_platform.c
similarity index 86%
rename from source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/stubs_fvp.c
rename to source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/stubs_simple_platform.c
index e5b2969..df11adb 100644
--- a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/stubs_fvp.c
+++ b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/stubs_simple_platform.c
@@ -14,10 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "stubs_fvp.h"
+#include "stubs_simple_platform.h"
 
 #include "bsp_core_log.h"
 
+#include <inttypes.h>
+
 uint32_t GetCoreClock(void)
 {
     return 1;
@@ -46,9 +48,10 @@
     UNUSED(height);
     UNUSED(channels);
     UNUSED(downsample_factor);
-    debug("image display: (x, y, w, h) = (%u, %u, %u, %u)\n",
+    debug("image display: (x, y, w, h) = "
+        "(%" PRIu32 ", %" PRIu32 ", %" PRIu32 ", %" PRIu32 ")\n",
         pos_x, pos_y, width, height);
-    debug("image display: channels = %u, downsample factor = %u\n",
+    debug("image display: channels = %" PRIu32 ", downsample factor = %" PRIu32 "\n",
         channels, downsample_factor);
 }
 
@@ -100,12 +103,12 @@
 {
     UNUSED(num);
     UNUSED(port);
-    debug("LED %u ON\n", num);
+    debug("LED %" PRIu32 " ON\n", num);
 }
 
 void LED_Off(uint32_t num, uint32_t port)
 {
     UNUSED(num);
     UNUSED(port);
-    debug("LED %u OFF\n", num);
+    debug("LED %" PRIu32 " OFF\n", num);
 }
diff --git a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/timer_fvp.c b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/timer_simple_platform.c
similarity index 80%
rename from source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/timer_fvp.c
rename to source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/timer_simple_platform.c
index b7a7232..6914209 100644
--- a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/timer_fvp.c
+++ b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/timer_simple_platform.c
@@ -14,17 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "timer_fvp.h"
+#include "timer_simple_platform.h"
 
 #include "irqs.h"
 #include "bsp_core_log.h"
 
-fvp_time_counter get_time_counter(void)
+#include <inttypes.h>
+
+generic_time_counter get_time_counter(void)
 {
-    fvp_time_counter t = {
+    generic_time_counter t = {
         .counter_systick = Get_SysTick_Cycle_Count()
     };
-    debug("counter_systick: %llu\n", t.counter_systick);
+    debug("counter_systick: %" PRIu64 "\n", t.counter_systick);
     return t;
 }
 
@@ -36,8 +38,8 @@
     debug("system tick config ready\n");
 }
 
-uint64_t get_cycle_count_diff(fvp_time_counter *start,
-                              fvp_time_counter *end)
+uint64_t get_cycle_count_diff(generic_time_counter *start,
+                              generic_time_counter *end)
 {
     if (start->counter_systick > end->counter_systick) {
         warn("start > end; counter might have overflown\n");
diff --git a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/uart_pl011.c b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/uart_pl011.c
index 5c1ee06..b2dee14 100644
--- a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/uart_pl011.c
+++ b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/simple_platform/uart_pl011.c
@@ -199,11 +199,12 @@
             case 0:
                 *lp = 0;                       /* ESC - stop editing line.       */
                 return false;
-            case CR:                           /* CR - done, stop editing line.  */
-                *lp = c;
-                lp++;                          /* increment line pointer.        */
-                cnt++;                         /* and count.                     */
+            case CR:                            /* CR - done, stop editing line.  */
+                UartPutc (*lp = c);             /* Echo and store character.      */
+                lp++;                           /* Increment line pointer         */
+                cnt++;                          /* and count.                     */
                 c = LF;
+                break;
             default:
                 UartPutc (*lp = c);            /* echo and store character.      */
                 fflush (stdout);
diff --git a/source/application/hal/platforms/bare-metal/bsp/include/bsp.h b/source/application/hal/platforms/bare-metal/bsp/include/bsp.h
index fbe1ff6..20052ef 100644
--- a/source/application/hal/platforms/bare-metal/bsp/include/bsp.h
+++ b/source/application/hal/platforms/bare-metal/bsp/include/bsp.h
@@ -30,8 +30,8 @@
 
 #else /* MPS3_PLATFORM */
 
-#include "stubs_fvp.h"      /* Stubs for FVP. */
-#include "timer_fvp.h"      /* Timer API for FVP. */
+#include "stubs_simple_platform.h"      /* Stubs for simple_platform. */
+#include "timer_simple_platform.h"      /* Timer API for simple_platform. */
 
 #endif /* MPS3_PLATFORM */
 
diff --git a/source/application/hal/platforms/bare-metal/timer/baremetal_timer.c b/source/application/hal/platforms/bare-metal/timer/baremetal_timer.c
index cd17a60..00028bd 100644
--- a/source/application/hal/platforms/bare-metal/timer/baremetal_timer.c
+++ b/source/application/hal/platforms/bare-metal/timer/baremetal_timer.c
@@ -260,7 +260,7 @@
         printf_err("EthosU PMU axi0 read counter overflow.\n");
         return 0;
     }
-    return (uint64_t)(end->npu_axi0_read_ccnt - st->npu_axi0_read_ccnt);
+    return (uint64_t)(end->npu_axi0_read_beats - st->npu_axi0_read_beats);
 }
 
 static uint64_t bm_get_npu_axi0_write_cycle_diff(time_counter *st, time_counter *end)
@@ -269,7 +269,7 @@
         printf_err("EthosU PMU axi0 write counter overflow.\n");
         return 0;
     }
-    return (uint64_t)(end->npu_axi0_write_ccnt - st->npu_axi0_write_ccnt);
+    return (uint64_t)(end->npu_axi0_write_beats - st->npu_axi0_write_beats);
 }
 
 static uint64_t bm_get_npu_axi1_read_cycle_diff(time_counter *st, time_counter *end)
@@ -278,7 +278,7 @@
         printf_err("EthosU PMU axi1 read counter overflow.\n");
         return 0;
     }
-    return (uint64_t)(end->npu_axi1_read_ccnt - st->npu_axi1_read_ccnt);
+    return (uint64_t)(end->npu_axi1_read_beats - st->npu_axi1_read_beats);
 }
 
 #endif /* defined (ARM_NPU) */
@@ -300,9 +300,9 @@
 #if defined (ARM_NPU)
             .npu_total_ccnt = ETHOSU_PMU_Get_CCNTR(),
             .npu_idle_ccnt = ETHOSU_PMU_Get_EVCNTR(0),
-            .npu_axi0_read_ccnt = ETHOSU_PMU_Get_EVCNTR(1),
-            .npu_axi0_write_ccnt = ETHOSU_PMU_Get_EVCNTR(2),
-            .npu_axi1_read_ccnt = ETHOSU_PMU_Get_EVCNTR(3)
+            .npu_axi0_read_beats = ETHOSU_PMU_Get_EVCNTR(1),
+            .npu_axi0_write_beats = ETHOSU_PMU_Get_EVCNTR(2),
+            .npu_axi1_read_beats = ETHOSU_PMU_Get_EVCNTR(3)
 #endif /* defined (ARM_NPU) */
 
     };
@@ -310,14 +310,14 @@
 #if defined (ARM_NPU)
     debug("NPU total cc: %" PRIu64
         "; NPU idle cc: %" PRIu32
-        "; NPU axi0 read cc: %" PRIu32
-        "; NPU axi0 write cc: %" PRIu32
-        "; NPU axi1 read cc: %" PRIu32 "\n",
+        "; NPU axi0 read beats: %" PRIu32
+        "; NPU axi0 write beats: %" PRIu32
+        "; NPU axi1 read beats: %" PRIu32 "\n",
         t.npu_total_ccnt,
         t.npu_idle_ccnt,
-        t.npu_axi0_read_ccnt,
-        t.npu_axi0_write_ccnt,
-        t.npu_axi1_read_ccnt);
+        t.npu_axi0_read_beats,
+        t.npu_axi0_write_beats,
+        t.npu_axi1_read_beats);
 #endif /* defined (ARM_NPU) */
 
     return t;
diff --git a/source/application/hal/platforms/bare-metal/timer/include/baremetal_timer.h b/source/application/hal/platforms/bare-metal/timer/include/baremetal_timer.h
index 3020dac..0d23a05 100644
--- a/source/application/hal/platforms/bare-metal/timer/include/baremetal_timer.h
+++ b/source/application/hal/platforms/bare-metal/timer/include/baremetal_timer.h
@@ -22,10 +22,10 @@
 
 #if defined (MPS3_PLATFORM)
     #include "timer_mps3.h"
-    typedef mps3_time_counter   base_time_counter;
+    typedef mps3_time_counter       base_time_counter;
 #else /* defined (MPS3_PLATFORM) */
-    #include "timer_fvp.h"
-    typedef fvp_time_counter    base_time_counter;
+    #include "timer_simple_platform.h"
+    typedef generic_time_counter    base_time_counter;
 #endif  /* defined (MPS3_PLATFORM) */
 
 typedef struct bm_time_counter {
@@ -34,9 +34,9 @@
 #if defined (ARM_NPU)
     uint64_t                npu_total_ccnt;
     uint32_t                npu_idle_ccnt;
-    uint32_t                npu_axi0_read_ccnt;
-    uint32_t                npu_axi0_write_ccnt;
-    uint32_t                npu_axi1_read_ccnt;
+    uint32_t                npu_axi0_read_beats;
+    uint32_t                npu_axi0_write_beats;
+    uint32_t                npu_axi1_read_beats;
 #endif /* ARM_NPU */
 
 } time_counter;
diff --git a/source/application/hal/platforms/bare-metal/utils/system_init.c b/source/application/hal/platforms/bare-metal/utils/system_init.c
index f95f214..376f08b 100644
--- a/source/application/hal/platforms/bare-metal/utils/system_init.c
+++ b/source/application/hal/platforms/bare-metal/utils/system_init.c
@@ -96,7 +96,7 @@
     }
 #else /* MPS3_PLATFORM */
 
-    info("ARM model environment ready..\n");
+    info("%s: complete\n", __FUNCTION__);
     return 0;
 #endif /* MPS3_PLATFORM */
 
