diff options
author | Kshitij Sisodia <kshitij.sisodia@arm.com> | 2021-05-19 10:30:06 +0100 |
---|---|---|
committer | Kshitij Sisodia <kshitij.sisodia@arm.com> | 2021-05-19 10:47:59 +0100 |
commit | 659fcd951ac18d1ee7737a6ddf6a3ec162c73ca5 (patch) | |
tree | 091232857b7ce8a52a7656424db4e4536b45cc7b | |
parent | a3d87702b743e4e2d2ef08f0210445b01a86c87c (diff) | |
download | ml-embedded-evaluation-kit-659fcd951ac18d1ee7737a6ddf6a3ec162c73ca5.tar.gz |
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
18 files changed, 81 insertions, 63 deletions
diff --git a/dependencies/core-driver b/dependencies/core-driver -Subproject 8565d75b96a2f57f559f12dc0c68438bcfd276c +Subproject effc7aa8b9272fb20cdd1a7d1097818af70acc9 diff --git a/dependencies/core-software b/dependencies/core-software -Subproject 3a0d3f286be62b4933ba404187aff23cae166a5 +Subproject 7f3c1c92732b611a53968b14e70a2b116e43b98 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 Binary files differnew file mode 100644 index 0000000..529e652 --- /dev/null +++ b/resources/ad/samples/random_id_00_000000.wav 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_hpp_file(header_filepath, cc_filepath, header_template_file, num_audio 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 @@ def write_individual_audio_cc_file(clip_dirpath, clip_filename, 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 @@ def main(args): 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 @@ def main(args): 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 @@ def main(args): 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 @@ def main(args): 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 @@ void hal_platform_release(hal_platform *platform) static void arm_npu_irq_handler(void) { /* Call the default interrupt handler from the NPU driver */ - ethosu_irq_handler(); + ethosu_irq_handler(ðosu_drv); } /** @@ -229,7 +231,8 @@ static int arm_npu_init(void) /* 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( + ðosu_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 @@ static int arm_npu_init(void) /* Get Ethos-U55 version */ struct ethosu_version version; - if (0 != (err = ethosu_get_version(&version))) { + if (0 != (err = ethosu_get_version(ðosu_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 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 @@ void GLCD_Box(unsigned int x, unsigned int y, 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 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 @@ void timer_reset(void); * @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 start_cycle_counter(void); */ 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 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 @@ void GLCD_Image(void *data, const uint32_t width, const uint32_t height, 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 @@ void LED_On(uint32_t num, uint32_t port) { 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 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 @@ void timer_reset(void) 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 @@ bool GetLine (char *lp, unsigned int len) 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 @@ static uint64_t bm_get_npu_axi0_read_cycle_diff(time_counter *st, time_counter * 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 @@ static uint64_t bm_get_npu_axi0_write_cycle_diff(time_counter *st, time_counter 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 @@ static uint64_t bm_get_npu_axi1_read_cycle_diff(time_counter *st, time_counter * 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 @@ static time_counter bm_get_time_counter(void) #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 @@ static time_counter bm_get_time_counter(void) #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 @@ typedef struct bm_time_counter { #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 @@ int system_init(void) } #else /* MPS3_PLATFORM */ - info("ARM model environment ready..\n"); + info("%s: complete\n", __FUNCTION__); return 0; #endif /* MPS3_PLATFORM */ |