[PDK-9493] UART: Support FreeRTOS on R5 cores
authorDon Dominic <a0486429@ti.com>
Thu, 8 Apr 2021 10:24:25 +0000 (15:54 +0530)
committerAnkur <ankurbaranwal@ti.com>
Thu, 8 Apr 2021 12:09:34 +0000 (07:09 -0500)
- Enable UART FreeRTOS Unit Testapp for J721E/J7200/AM65xx all R5 cores
- Remove SYSBIOS Headers in test source files
- Replace SYBIOS calls with equivalent OSAL API's

- Tested an all mcu cores in j721e/j7200/am65xx
- Also verified tirtos UT on j721e mcu1_0 and mpu1_0

- UART DMA Migration will be followed after checkout of UDMA with FreeRTOS.

Signed-off-by: Don Dominic <a0486429@ti.com>
packages/ti/drv/uart/test/src/main_uart_test.c
packages/ti/drv/uart/uart_component.mk

index f1537b8db54444aa51d35c40d0a53e842c565bd0..af3b84f97a633026849cd816a81ecad526c7efda 100644 (file)
 #include <stdio.h>
 #include <string.h>
 
-#ifdef USE_BIOS
-/* XDCtools Header files */
-#include <xdc/std.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/System.h>
-
-/* BIOS Header files */
-#include <ti/sysbios/BIOS.h>
-#include <ti/sysbios/knl/Task.h>
-#endif /* #ifdef USE_BIOS */
-
 /* CSL Header files */
 #if defined(_TMS320C6X)
 #include <ti/csl/csl_chip.h>
@@ -59,9 +48,7 @@
 /* OSAL Header files */
 #include <ti/osal/osal.h>
 
-#if defined (USE_BIOS) || defined (FREERTOS)
 #include <ti/osal/TaskP.h>
-#endif
 
 /* UART Header files */
 #include <ti/drv/uart/UART.h>
@@ -1029,10 +1016,16 @@ Err:
 }
 
 #if !defined(UART_API2_NOT_SUPPORTED)
-#ifdef USE_BIOS
+#if defined (USE_BIOS) || defined (FREERTOS)
+#if defined (__C7100__)
+#define APP_TSK_STACK_WRITE              (16U * 1024U)
+#else
+#define APP_TSK_STACK_WRITE              (8U * 1024U)
+#endif /* #if defined (__C7100__) */
+static uint8_t  gAppTskStackWrite[APP_TSK_STACK_WRITE] __attribute__((aligned(32)));
 /* Use a global variable to sync the read task and the write task */
 volatile bool taskSyncFlag;
-Void UART_simultaneous_rw_write(UArg a0, UArg a1)
+void UART_simultaneous_rw_write(void *a0, void *a1)
 {
        UART_Handle      uart = (UART_Handle)a0;
        bool             dmaMode = (bool)a1;
@@ -1060,8 +1053,6 @@ Void UART_simultaneous_rw_write(UArg a0, UArg a1)
 
     /* resume the read test task */
     taskSyncFlag = true;
-
-    Task_exit ();
 }
 
 /*
@@ -1086,10 +1077,9 @@ static bool UART_test_simultaneous_rw(bool dmaMode)
     UART_Params      uartParams;
     uintptr_t         addrScanPrompt, addrEchoPrompt;
     UART_Transaction transaction;
-    Task_Handle      writeTask;
-    Task_Params      writeTaskParams;
-    Error_Block      eb;
-    bool             ret = false;
+    TaskP_Handle      writeTask;
+    TaskP_Params      writeTaskParams;
+    bool              ret = false;
 
     /* UART SoC init configuration */
     UART_initConfig(dmaMode);
@@ -1107,17 +1097,12 @@ static bool UART_test_simultaneous_rw(bool dmaMode)
     /* run the write teas when task is created */
     taskSyncFlag = true;
 
-    Error_init(&eb);
-
     /* Initialize the task params */
-    Task_Params_init(&writeTaskParams);
-    writeTaskParams.arg0 = (UArg)uart;
-    writeTaskParams.arg1 = (UArg)dmaMode;
-#if defined (__C7100__)
-    writeTaskParams.stackSize = 1024*16;
-#else
-    writeTaskParams.stackSize = 1024*8;
-#endif
+    TaskP_Params_init(&writeTaskParams);
+    writeTaskParams.arg0 = (void *)uart;
+    writeTaskParams.arg1 = (void *)dmaMode;
+    writeTaskParams.stack = gAppTskStackWrite;
+    writeTaskParams.stacksize = sizeof (gAppTskStackWrite);
     /*
      * Set the write task priority to the default priority (1)
      * lower than the read task priority (2)
@@ -1125,10 +1110,9 @@ static bool UART_test_simultaneous_rw(bool dmaMode)
     writeTaskParams.priority = 1;
 
     /* Create the UART write task */
-    writeTask = Task_create((Task_FuncPtr)UART_simultaneous_rw_write, &writeTaskParams, &eb);
+    writeTask = TaskP_create(UART_simultaneous_rw_write, &writeTaskParams);
     if (writeTask == NULL)
     {
-        System_abort("Task create failed");
         goto Err;
     }
 
@@ -1172,6 +1156,8 @@ static bool UART_test_simultaneous_rw(bool dmaMode)
         Osal_delay(100);
     }
     taskSyncFlag = false;
+    /* Delete write task */
+    TaskP_delete(writeTask);
 
     UART_transactionInit(&transaction);
     transaction.buf = (void *)(uintptr_t)addrEchoPrompt;
@@ -1201,8 +1187,8 @@ Err:
 
     return (ret);
 }
-#endif
-#endif
+#endif /* #if defined (USE_BIOS) || defined (FREERTOS) */
+#endif /* #if !defined(UART_API2_NOT_SUPPORTED) */
 
 /*
  *  ======== UART read cancel test ========
@@ -3127,7 +3113,7 @@ UART_Tests Uart_tests[] =
     {UART_test_read_write_cancel, true, UART_TEST_ID_DMA_CANCEL, "\r\n UART DMA read write cancel test, enter less than 16 chars"},
 #endif
     {UART_test_read_write_cancel, false, UART_TEST_ID_CANCEL, "\r\n UART non-DMA read write cancel test, enter less than 16 chars"},
-#ifdef USE_BIOS
+#if defined (USE_BIOS) || defined (FREERTOS)
 #if !defined(UART_API2_NOT_SUPPORTED)
 #ifdef UART_DMA_ENABLE
     {UART_test_simultaneous_rw, true, UART_TEST_ID_DMA_RW, "\r\n UART DMA simultaneous read write test "},
index 21248f0d56775aeeed56a5ead336f5e07b02f487..90041565f5a92025e871faf53c584aaa97a50219 100644 (file)
@@ -68,6 +68,7 @@ ifeq ($(uart_component_make_include), )
 
 # under other list
 drvuart_BOARDLIST       = am65xx_evm am65xx_idk j721e_sim j721e_evm j7200_evm am64x_evm tpr12_evm tpr12_qt awr294x_evm
+drvuart_freertos_BOARDLIST = am65xx_evm j721e_evm j7200_evm tpr12_evm
 drvuart_dma_SOCLIST     = tda2xx tda2px dra72x dra75x tda2ex tda3xx dra78x am574x am572x am571x k2h k2k k2l k2e k2g c6678 c6657 omapl137 omapl138 am437x am65xx j721e j7200
 drvuart_SOCLIST         = tda2xx tda2px dra72x dra75x tda2ex tda3xx dra78x am574x am572x am571x k2h k2k k2l k2e k2g c6678 c6657 am437x am335x omapl137 omapl138 am65xx j721e j7200 am64x tpr12 awr294x
 drvuart_tda2xx_CORELIST = ipu1_0
@@ -92,13 +93,17 @@ drvuart_c6657_CORELIST  = c66x
 drvuart_am437x_CORELIST = a9host
 drvuart_am335x_CORELIST = a8host pru_0 pru_1
 drvuart_am65xx_CORELIST = mpu1_0 mcu1_0 mcu1_1
+drvuart_am65xx_FREERTOS_CORELIST = mcu1_0 mcu1_1
 drvuart_j721e_CORELIST = $(DEFAULT_j721e_CORELIST)
 drvuart_j721e_CORELISTARM = mpu1_0 mcu1_0 mcu1_1 mcu2_0 mcu2_1 mcu3_0 mcu3_1
+drvuart_j721e_FREERTOS_CORELIST = mcu1_0 mcu1_1 mcu2_0 mcu2_1 mcu3_0 mcu3_1
 drvuart_j7200_CORELIST = $(DEFAULT_j7200_CORELIST)
 drvuart_j7200_CORELISTARM = mpu1_0 mcu1_0 mcu1_1 mcu2_0 mcu2_1
+drvuart_j7200_FREERTOS_CORELIST = mcu1_0 mcu1_1 mcu2_0 mcu2_1
 drvuart_am64x_CORELIST = $(DEFAULT_am64x_CORELIST)
 drvuart_am64x_CORELISTARM = mpu1_0 mcu1_0 mcu1_1 mcu2_0 mcu2_1
 drvuart_tpr12_CORELIST = mcu1_0 c66xdsp_1
+drvuart_tpr12_FREERTOS_CORELIST = mcu1_0 c66xdsp_1
 drvuart_awr294x_CORELIST = mcu1_0 c66xdsp_1
 
 ############################
@@ -418,11 +423,11 @@ export UART_Freertos_TestApp_CORE_DEPENDENCY = no
 export UART_Freertos_TestApp_MAKEFILE = -f makefile IS_FREERTOS=yes
 UART_Freertos_TestApp_PKG_LIST = UART_Freertos_TestApp
 UART_Freertos_TestApp_INCLUDE = $(UART_Freertos_TestApp_PATH)
-export UART_Freertos_TestApp_BOARDLIST = tpr12_evm
-export UART_Freertos_TestApp_$(SOC)_CORELIST = $(drvuart_$(SOC)_CORELIST)
+export UART_Freertos_TestApp_BOARDLIST = $(drvuart_freertos_BOARDLIST)
+export UART_Freertos_TestApp_$(SOC)_CORELIST = $(drvuart_$(SOC)_FREERTOS_CORELIST)
 export UART_Freertos_TestApp_SBL_APPIMAGEGEN = yes
 
-# UART unit test freertos app
+# UART unit test freertos dma app
 export UART_Freertos_DMA_TestApp_COMP_LIST = UART_Freertos_DMA_TestApp
 UART_Freertos_DMA_TestApp_RELPATH = ti/drv/uart/test
 UART_Freertos_DMA_TestApp_PATH = $(PDK_UART_COMP_PATH)/test