Ver Fonte

CMSIS-NN: Update UART handling in unit tests

Change-Id: I5b113d14301133921e7c9c4afc2647c05e1824f1
Måns Nilsson há 5 anos atrás
pai
commit
5a55708b4b

+ 3 - 3
CMSIS/NN/Tests/UnitTest/CMakeLists.txt

@@ -24,8 +24,8 @@ set(CMSIS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../.." CACHE PATH "Path to CMS
 set(CMAKE_EXECUTABLE_SUFFIX ".elf")
 
 # External dependencies.
-set(TARGET model CACHE PATH "May be needed for Uart")
-set(UART_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../platform/drivers/uart" CACHE PATH "Path to UART.")
+set(UART0_BASE "0x49303000" CACHE STRING "UART base address.")
+set(UART_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../drivers/uart" CACHE PATH "Path to UART.")
 set(LINK_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../platform/fastmodels/model" CACHE PATH "Linker file.")
 
 set_property(GLOBAL PROPERTY cmsis_nn_unit_test_executables)
@@ -81,7 +81,7 @@ include(Platform/cmsis_device.cmake)
 
 add_library(retarget STATIC
                      Platform/Retarget.c)
-target_link_libraries(retarget INTERFACE uart)
+target_link_libraries(retarget INTERFACE ethosu_uart_pl011)
 
 # Linker file settings.
 if (CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang")

+ 12 - 5
CMSIS/NN/Tests/UnitTest/Platform/Retarget.c

@@ -31,7 +31,14 @@
 
 extern unsigned char UartPutc(unsigned char my_ch);
 extern unsigned char UartGetc(void);
-extern __attribute__((noreturn)) void UartEndSimulation(int code);
+
+__attribute__((noreturn)) void UartEndSimulation(int code)
+{
+    UartPutc((char)0x4);  // End of simulation
+    UartPutc((char)code); // Exit code
+    while (1)
+        ;
+}
 
 void exit(int code)
 {
@@ -221,13 +228,13 @@ __attribute__((weak)) void(_sys_exit)(int return_code) { exit(return_code); }
    Copied from CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/Retarget.c
 */
 
-int _open(const char* path, int flags, ...) { return (-1); }
+int _open(const char *path, int flags, ...) { return (-1); }
 
 int _close(int fd) { return (-1); }
 
 int _lseek(int fd, int ptr, int dir) { return (0); }
 
-int __attribute__((weak)) _fstat(int fd, struct stat* st)
+int __attribute__((weak)) _fstat(int fd, struct stat *st)
 {
     memset(st, 0, sizeof(*st));
     st->st_mode = S_IFCHR;
@@ -236,7 +243,7 @@ int __attribute__((weak)) _fstat(int fd, struct stat* st)
 
 int _isatty(int fd) { return (1); }
 
-int _read(int fd, char* ptr, int len)
+int _read(int fd, char *ptr, int len)
 {
     char c;
     int i;
@@ -252,7 +259,7 @@ int _read(int fd, char* ptr, int len)
     return (len - i);
 }
 
-int _write(int fd, char* ptr, int len)
+int _write(int fd, char *ptr, int len)
 {
     int i;
 

+ 3 - 3
CMSIS/NN/Tests/UnitTest/README.md

@@ -56,12 +56,12 @@ UART and LINK_FILE have default values but you most probably need to replace the
     ```make```
 ```
 
-Some examples using toolchain in Ethos-u-core_software project. See : https://review.mlplatform.org/admin/repos/ml/ethos-u/ethos-u-core-software
+Some examples using Uart and toolchain in Ethos-u-core_software project. See : https://review.mlplatform.org/admin/repos/ml/ethos-u/ethos-u-core-software
 
 
 ```
-    ```cmake .. -DCMAKE_TOOLCHAIN_FILE=~/ethos-u-core-software/cmake/toolchain/arm-none-eabi-gcc.cmake -DCMAKE_SYSTEM_PROCESSOR=cortex-m7 -DUART_PATH=~/platform/drivers/uart -DLINK_FILE=~/platform/fastmodels/model```
-    ```cmake .. -DCMAKE_TOOLCHAIN_FILE=~/ethos-u-core-software/cmake/toolchain/arm-none-eabi-gcc.cmake -DCMAKE_SYSTEM_PROCESSOR=cortex-m55 -DUART_PATH=~/platform/drivers/uart -DLINK_FILE=~/platform/fastmodels/model```
+    ```cmake .. -DCMAKE_TOOLCHAIN_FILE=~/ethos-u-core-software/cmake/toolchain/arm-none-eabi-gcc.cmake -DCMAKE_SYSTEM_PROCESSOR=cortex-m7 -DUART_PATH=~/ethos-u-core-software/drivers/uart -DLINK_FILE=~/platform/fastmodels/model```
+    ```cmake .. -DCMAKE_TOOLCHAIN_FILE=~/ethos-u-core-software/cmake/toolchain/arm-none-eabi-gcc.cmake -DCMAKE_SYSTEM_PROCESSOR=cortex-m55 -DUART_PATH=~/ethos-u-core-software/drivers/uart -DLINK_FILE=~/platform/fastmodels/model```
 ```
 
 ## Generating new test data