| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /* 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.
- ==============================================================================*/
- // 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 <cstdio>
- #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
- }
|