From b43c3c3a68e4b4e2c7fc4daa76c4f9485c7ed47a Mon Sep 17 00:00:00 2001 From: Nat Jeffries Date: Thu, 15 Oct 2020 14:02:39 -0700 Subject: [PATCH] Add logging and timer implementations for hexagon. Update xtensa comments. PiperOrigin-RevId: 337377957 Change-Id: I3c842fa1945c174e435418146b01a66b7805fd40 --- tensorflow/lite/micro/debug_log.cc | 13 ++++- tensorflow/lite/micro/hexagon/micro_time.cc | 28 +++++++++++ .../lite/micro/xtensa_hifimini/debug_log.cc | 50 ------------------- .../lite/micro/xtensa_hifimini/micro_time.cc | 4 +- 4 files changed, 41 insertions(+), 54 deletions(-) create mode 100644 tensorflow/lite/micro/hexagon/micro_time.cc delete mode 100644 tensorflow/lite/micro/xtensa_hifimini/debug_log.cc diff --git a/tensorflow/lite/micro/debug_log.cc b/tensorflow/lite/micro/debug_log.cc index 7ef582bd376..46ca253a6d5 100644 --- a/tensorflow/lite/micro/debug_log.cc +++ b/tensorflow/lite/micro/debug_log.cc @@ -1,4 +1,4 @@ -/* Copyright 2018 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -36,6 +36,15 @@ limitations under the License. #include "tensorflow/lite/micro/debug_log.h" +#ifndef TF_LITE_STRIP_ERROR_STRINGS #include +#endif -extern "C" void DebugLog(const char* s) { fprintf(stderr, "%s", s); } +extern "C" void DebugLog(const char* s) { +#ifndef TF_LITE_STRIP_ERROR_STRINGS + // Reusing TF_LITE_STRIP_ERROR_STRINGS to disable DebugLog completely to get + // maximum reduction in binary size. This is because we have DebugLog calls + // via TF_LITE_CHECK that are not stubbed out by TF_LITE_REPORT_ERROR. + fprintf(stderr, "%s", s); +#endif +} diff --git a/tensorflow/lite/micro/hexagon/micro_time.cc b/tensorflow/lite/micro/hexagon/micro_time.cc new file mode 100644 index 00000000000..9baf77b5653 --- /dev/null +++ b/tensorflow/lite/micro/hexagon/micro_time.cc @@ -0,0 +1,28 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// Hexagon timer implementation. +// To include this with make, add TARGET=hexagon. +#include "tensorflow/lite/micro/micro_time.h" + +#include + +namespace tflite { + +int32_t ticks_per_second() { return CLOCKS_PER_SEC; } + +int32_t GetCurrentTimeTicks() { return clock(); } + +} // namespace tflite diff --git a/tensorflow/lite/micro/xtensa_hifimini/debug_log.cc b/tensorflow/lite/micro/xtensa_hifimini/debug_log.cc deleted file mode 100644 index 45d9317478a..00000000000 --- a/tensorflow/lite/micro/xtensa_hifimini/debug_log.cc +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2018 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -==============================================================================*/ - -// Reference implementation of the DebugLog() function that's required for a -// platform to support the TensorFlow Lite for Microcontrollers library. This is -// the only function that's absolutely required to be available on a target -// device, since it's used for communicating test results back to the host so -// that we can verify the implementation is working correctly. -// It's designed to be as easy as possible to supply an implementation though. -// On platforms that have a POSIX stack or C library, it can be written as a -// single call to `fprintf(stderr, "%s", s)` to output a string to the error -// stream of the console, but if there's no OS or C library available, there's -// almost always an equivalent way to write out a string to some serial -// interface that can be used instead. For example on Arm M-series MCUs, calling -// the `bkpt #0xAB` assembler instruction will output the string in r1 to -// whatever debug serial connection is available. If you're running mbed, you -// can do the same by creating `Serial pc(USBTX, USBRX)` and then calling -// `pc.printf("%s", s)`. -// To add an equivalent function for your own platform, create your own -// implementation file, and place it in a subfolder with named after the OS -// you're targeting. For example, see the Cortex M bare metal version in -// tensorflow/lite/micro/bluepill/debug_log.cc or the mbed one on -// tensorflow/lite/micro/mbed/debug_log.cc. - -#include "tensorflow/lite/micro/debug_log.h" - -#ifndef TF_LITE_STRIP_ERROR_STRINGS -#include -#endif - -extern "C" void DebugLog(const char* s) { -#ifndef TF_LITE_STRIP_ERROR_STRINGS - // Reusing TF_LITE_STRIP_ERROR_STRINGS to disable DebugLog completely to get - // maximum reduction in binary size. This is because we have DebugLog calls - // via TF_LITE_CHECK that are not stubbed out by TF_LITE_REPORT_ERROR. - fprintf(stderr, "%s", s); -#endif -} diff --git a/tensorflow/lite/micro/xtensa_hifimini/micro_time.cc b/tensorflow/lite/micro/xtensa_hifimini/micro_time.cc index 6f3844c1fe3..22880657882 100644 --- a/tensorflow/lite/micro/xtensa_hifimini/micro_time.cc +++ b/tensorflow/lite/micro/xtensa_hifimini/micro_time.cc @@ -13,8 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -// Xtensa implementation of micro_timer. -// To include this with make, add TAGS=xtensa-xpg. +// Xtensa timer implementation. +// To include this with make, add TARGET=xtensa_hifimini. #include "tensorflow/lite/micro/micro_time.h" #include