MLECO-1933, MLECO-1914, MLECO-1885: Update to 21.05-rc2 components

Core driver and sofware dependencies updated to latest release
candidate revisions. Note: TensorFlow Lite Micro has not been
updated.

Also, gcc warnings for simple_platform target and ad use case have
been fixed.

Change-Id: I455b421f34375a719a941e6e220fe292a57613f5
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 */