tflite micro integrate repo
This commit is contained in:
@@ -18,6 +18,7 @@ int main(void)
|
|||||||
{
|
{
|
||||||
board_init();
|
board_init();
|
||||||
printf("Welcome to TencentOS tiny\r\n");
|
printf("Welcome to TencentOS tiny\r\n");
|
||||||
|
person_detect_init();
|
||||||
osKernelInitialize(); // TOS Tiny kernel initialize
|
osKernelInitialize(); // TOS Tiny kernel initialize
|
||||||
osThreadCreate(osThread(application_entry), NULL); // Create TOS Tiny task
|
osThreadCreate(osThread(application_entry), NULL); // Create TOS Tiny task
|
||||||
osKernelStart(); // Start TOS Tiny
|
osKernelStart(); // Start TOS Tiny
|
||||||
|
@@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
- 使用STM32CubeMX,选择与TOS同版本的固件库重新生成外设初始化代码;
|
- 使用STM32CubeMX,选择与TOS同版本的固件库重新生成外设初始化代码;
|
||||||
- TOS、摄像头和LCD工作都正常工作;
|
- TOS、摄像头和LCD工作都正常工作;
|
||||||
|
- tflite_micro 以component的形式加到工程
|
||||||
|
- retarget.c引入工程,并通过宏进行选择
|
||||||
|
|
||||||
### 3. 未完成的工作:
|
### 3. 未完成的工作:
|
||||||
|
|
||||||
- tflite_micro 以component的形式加到工程
|
|
||||||
- 串口重定向用了TOS的方法,retarget.c还没有引入工程
|
|
||||||
- 变量名、函数名还没有按照TOS的风格完全统一
|
- 变量名、函数名还没有按照TOS的风格完全统一
|
||||||
|
|
||||||
|
@@ -227,7 +227,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Application/MDK-ARM</GroupName>
|
<GroupName>Application/MDK-ARM</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -399,7 +399,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/STM32L4xx_HAL_Driver</GroupName>
|
<GroupName>Drivers/STM32L4xx_HAL_Driver</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1051,7 +1051,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>hal</GroupName>
|
<GroupName>hal</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1119,7 +1119,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>examples</GroupName>
|
<GroupName>examples</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1137,6 +1137,38 @@
|
|||||||
</File>
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
|
<Group>
|
||||||
|
<GroupName>tensorflow</GroupName>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<cbSel>0</cbSel>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>10</GroupNumber>
|
||||||
|
<FileNumber>71</FileNumber>
|
||||||
|
<FileType>4</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\..\..\..\components\tflite_micro\STM32L496-lib\tflm_person_detection.lib</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>tflm_person_detection.lib</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>10</GroupNumber>
|
||||||
|
<FileNumber>72</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\..\..\..\components\tflite_micro\KEIL\regarget.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>regarget.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>::CMSIS</GroupName>
|
<GroupName>::CMSIS</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@@ -10,14 +10,14 @@
|
|||||||
<TargetName>TencentOS_tiny</TargetName>
|
<TargetName>TencentOS_tiny</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pCCUsed>5060750::V5.06 update 6 (build 750)::.\ARMCC</pCCUsed>
|
<pCCUsed>6140000::V6.14::ARMCLANG</pCCUsed>
|
||||||
<uAC6>0</uAC6>
|
<uAC6>1</uAC6>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
<Device>STM32L496ZGTx</Device>
|
<Device>STM32L496ZGTx</Device>
|
||||||
<Vendor>STMicroelectronics</Vendor>
|
<Vendor>STMicroelectronics</Vendor>
|
||||||
<PackID>Keil.STM32L4xx_DFP.2.4.0</PackID>
|
<PackID>Keil.STM32L4xx_DFP.2.5.0</PackID>
|
||||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
<PackURL>https://www.keil.com/pack/</PackURL>
|
||||||
<Cpu>IRAM(0x20000000-0x2004FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
|
<Cpu>IRAM(0x20000000-0x2004FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
|
||||||
<FlashUtilSpec></FlashUtilSpec>
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
<StartupFile></StartupFile>
|
<StartupFile></StartupFile>
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
<hadIRAM2>0</hadIRAM2>
|
<hadIRAM2>0</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<StupSel>8</StupSel>
|
<StupSel>8</StupSel>
|
||||||
<useUlib>1</useUlib>
|
<useUlib>0</useUlib>
|
||||||
<EndSel>0</EndSel>
|
<EndSel>0</EndSel>
|
||||||
<uLtcg>0</uLtcg>
|
<uLtcg>0</uLtcg>
|
||||||
<nSecure>0</nSecure>
|
<nSecure>0</nSecure>
|
||||||
@@ -313,7 +313,7 @@
|
|||||||
</ArmAdsMisc>
|
</ArmAdsMisc>
|
||||||
<Cads>
|
<Cads>
|
||||||
<interw>1</interw>
|
<interw>1</interw>
|
||||||
<Optim>4</Optim>
|
<Optim>7</Optim>
|
||||||
<oTime>0</oTime>
|
<oTime>0</oTime>
|
||||||
<SplitLS>0</SplitLS>
|
<SplitLS>0</SplitLS>
|
||||||
<OneElfS>1</OneElfS>
|
<OneElfS>1</OneElfS>
|
||||||
@@ -322,14 +322,14 @@
|
|||||||
<PlainCh>0</PlainCh>
|
<PlainCh>0</PlainCh>
|
||||||
<Ropi>0</Ropi>
|
<Ropi>0</Ropi>
|
||||||
<Rwpi>0</Rwpi>
|
<Rwpi>0</Rwpi>
|
||||||
<wLevel>2</wLevel>
|
<wLevel>3</wLevel>
|
||||||
<uThumb>0</uThumb>
|
<uThumb>0</uThumb>
|
||||||
<uSurpInc>0</uSurpInc>
|
<uSurpInc>0</uSurpInc>
|
||||||
<uC99>1</uC99>
|
<uC99>1</uC99>
|
||||||
<uGnu>0</uGnu>
|
<uGnu>0</uGnu>
|
||||||
<useXO>0</useXO>
|
<useXO>0</useXO>
|
||||||
<v6Lang>1</v6Lang>
|
<v6Lang>3</v6Lang>
|
||||||
<v6LangP>1</v6LangP>
|
<v6LangP>3</v6LangP>
|
||||||
<vShortEn>1</vShortEn>
|
<vShortEn>1</vShortEn>
|
||||||
<vShortWch>1</vShortWch>
|
<vShortWch>1</vShortWch>
|
||||||
<v6Lto>0</v6Lto>
|
<v6Lto>0</v6Lto>
|
||||||
@@ -337,9 +337,9 @@
|
|||||||
<v6Rtti>0</v6Rtti>
|
<v6Rtti>0</v6Rtti>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define>USE_HAL_DRIVER,STM32L496xx</Define>
|
<Define>USE_HAL_DRIVER,STM32L496xx,NUCLEO_STM32L496ZG</Define>
|
||||||
<Undefine></Undefine>
|
<Undefine></Undefine>
|
||||||
<IncludePath>..\..\BSP\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc\Legacy;..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L4xx\Include;..\..\..\..\platform\vendor_bsp\st\CMSIS\Include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\kernel\core\include;..\..\..\..\kernel\pm\include;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\hello_world;..\..\TOS_CONFIG;..\..\..\..\net\at\include;..\..\..\..\kernel\hal\include;..\..\BSP\Hardware\Inc</IncludePath>
|
<IncludePath>..\..\BSP\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc\Legacy;..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L4xx\Include;..\..\..\..\platform\vendor_bsp\st\CMSIS\Include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\kernel\core\include;..\..\..\..\kernel\pm\include;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\hello_world;..\..\TOS_CONFIG;..\..\..\..\net\at\include;..\..\..\..\kernel\hal\include;..\..\BSP\Hardware\Inc;..\..\..\..\components\tflite_micro\STM32L496-lib;..\..\..\..\components\tflite_micro\STM32L496-lib\third_party\flatbuffers\include;..\..\..\..\components\tflite_micro\STM32L496-lib\third_party\gemmlowp;..\..\..\..\components\tflite_micro\STM32L496-lib\third_party\kissfft;..\..\..\..\components\tflite_micro\STM32L496-lib\third_party\ruy;..\..\..\..\components\tflite_micro\STM32L496-lib\tensorflow\lite\micro\tools\make\downloads</IncludePath>
|
||||||
</VariousControls>
|
</VariousControls>
|
||||||
</Cads>
|
</Cads>
|
||||||
<Aads>
|
<Aads>
|
||||||
@@ -775,6 +775,21 @@
|
|||||||
</File>
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>tensorflow</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>tflm_person_detection.lib</FileName>
|
||||||
|
<FileType>4</FileType>
|
||||||
|
<FilePath>..\..\..\..\components\tflite_micro\STM32L496-lib\tflm_person_detection.lib</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>regarget.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\..\..\..\components\tflite_micro\KEIL\regarget.c</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>::CMSIS</GroupName>
|
<GroupName>::CMSIS</GroupName>
|
||||||
</Group>
|
</Group>
|
||||||
@@ -785,8 +800,8 @@
|
|||||||
<RTE>
|
<RTE>
|
||||||
<apis/>
|
<apis/>
|
||||||
<components>
|
<components>
|
||||||
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
|
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.4.0" condition="ARMv6_7_8-M Device">
|
||||||
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
|
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
|
||||||
<targetInfos>
|
<targetInfos>
|
||||||
<targetInfo name="TencentOS_tiny"/>
|
<targetInfo name="TencentOS_tiny"/>
|
||||||
</targetInfos>
|
</targetInfos>
|
||||||
|
84
components/tflite_micro/KEIL/regarget.c
Normal file
84
components/tflite_micro/KEIL/regarget.c
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/******************************************************************************/
|
||||||
|
/* RETARGET.C: 'Retarget' layer for target-dependent low level functions */
|
||||||
|
/******************************************************************************/
|
||||||
|
/* This file is part of the uVision/ARM development tools. */
|
||||||
|
/* Copyright (c) 2005 Keil Software. All rights reserved. */
|
||||||
|
/* This software may only be used under the terms of a valid, current, */
|
||||||
|
/* end user licence from KEIL for a compatible version of KEIL software */
|
||||||
|
/* development tools. Nothing else gives you the right to use this software. */
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
typedef int FILEHANDLE;
|
||||||
|
__asm(".global __use_no_semihosting_swi");
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef NUCLEO_STM32L496ZG
|
||||||
|
|
||||||
|
#include "mcu_init.h"
|
||||||
|
|
||||||
|
#else
|
||||||
|
int fputc(int ch, FILE *f) {
|
||||||
|
/* Place your implementation of fputc here */
|
||||||
|
/* e.g. readwrite a character to the LPUSART1 and Loop until the end of transmission */
|
||||||
|
}
|
||||||
|
|
||||||
|
int fgetc(FILE *f)
|
||||||
|
{
|
||||||
|
/* Place your implementation of fgetc here */
|
||||||
|
/* e.g. readwrite a character to the LPUSART1 and Loop until the end of transmission */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void _ttywrch(int ch)
|
||||||
|
{
|
||||||
|
ch = ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ferror(FILE *f)
|
||||||
|
{
|
||||||
|
(void)f;
|
||||||
|
return EOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _sys_exit(int return_code)
|
||||||
|
{
|
||||||
|
(void)return_code;
|
||||||
|
while (1) {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
FILEHANDLE _sys_open(const char *name, int openmode)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _sys_close(FILEHANDLE fh)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
|
||||||
|
{
|
||||||
|
//your_device_write(buf, len);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _sys_istty(FILEHANDLE fh)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _sys_seek(FILEHANDLE fh, long pos)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
long _sys_flen(FILEHANDLE fh)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
@@ -34,6 +34,7 @@ limitations under the License.
|
|||||||
// it just returns a static image. For real applications, you should
|
// it just returns a static image. For real applications, you should
|
||||||
// ensure there's a specialized implementation that accesses hardware APIs.
|
// ensure there's a specialized implementation that accesses hardware APIs.
|
||||||
TfLiteStatus GetImage(tflite::ErrorReporter* error_reporter, int image_width,
|
TfLiteStatus GetImage(tflite::ErrorReporter* error_reporter, int image_width,
|
||||||
int image_height, int channels, int8_t* image_data);
|
int image_height, int channels, int8_t* image_data,
|
||||||
|
uint8_t * hardware_input);
|
||||||
|
|
||||||
#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_IMAGE_PROVIDER_H_
|
#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_IMAGE_PROVIDER_H_
|
@@ -15,13 +15,16 @@ limitations under the License.
|
|||||||
|
|
||||||
#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_MAIN_FUNCTIONS_H_
|
#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_MAIN_FUNCTIONS_H_
|
||||||
#define TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_MAIN_FUNCTIONS_H_
|
#define TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_MAIN_FUNCTIONS_H_
|
||||||
|
|
||||||
|
#include "tensorflow/lite/c/common.h"
|
||||||
|
|
||||||
// Initializes all data needed for the example. The name is important, and needs
|
// Initializes all data needed for the example. The name is important, and needs
|
||||||
// to be setup() for Arduino compatibility.
|
// to be setup() for Arduino compatibility.
|
||||||
extern "C" void setup();
|
extern "C" void person_detect_init();
|
||||||
|
|
||||||
// Runs one iteration of data gathering and inference. This should be called
|
// Runs one iteration of data gathering and inference. This should be called
|
||||||
// repeatedly from the application code. The name needs to be loop() for Arduino
|
// repeatedly from the application code. The name needs to be loop() for Arduino
|
||||||
// compatibility.
|
// compatibility.
|
||||||
extern "C" int loop();
|
extern "C" int person_detect(uint8_t * hardware_input);
|
||||||
|
|
||||||
#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_MAIN_FUNCTIONS_H_
|
#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_PERSON_DETECTION_EXPERIMENTAL_MAIN_FUNCTIONS_H_
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user