From 04d1ce944d897fae2be286df97a49beb891cb8f5 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 12 Jun 2019 17:13:29 +0800 Subject: [PATCH] freertos: pass unit tests compilation --- components/freertos/port.c | 5 - components/freertos/queue.c | 5 - components/freertos/tasks.c | 5 - components/freertos/test/test_freertos.c | 229 ------------------ .../freertos/test/test_freertos_eventgroups.c | 6 + .../test/test_freertos_isinisrcontext.c | 1 - .../test/test_freertos_task_delay_until.c | 6 + .../freertos/test/test_freertos_task_delete.c | 1 - .../freertos/test/test_freertos_task_notify.c | 6 + components/freertos/test/test_newlib_reent.c | 1 - components/freertos/test/test_panic.c | 1 - components/freertos/test/test_preemption.c | 1 - components/freertos/test/test_spinlocks.c | 1 - .../freertos/test/test_suspend_scheduler.c | 6 + .../freertos/test/test_task_suspend_resume.c | 5 + components/freertos/xtensa_intr.c | 5 - 16 files changed, 29 insertions(+), 255 deletions(-) delete mode 100644 components/freertos/test/test_freertos.c diff --git a/components/freertos/port.c b/components/freertos/port.c index 35e16c8c7..68c868e5b 100644 --- a/components/freertos/port.c +++ b/components/freertos/port.c @@ -109,11 +109,6 @@ #include "esp_intr_alloc.h" #include "esp_log.h" #include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32 -#include "esp32/rom/ets_sys.h" -#elif CONFIG_IDF_TARGET_ESP32S2BETA -#include "esp32s2beta/rom/ets_sys.h" -#endif /* Defined in portasm.h */ extern void _frxt_tick_timer_init(void); diff --git a/components/freertos/queue.c b/components/freertos/queue.c index 82e7d988e..95de32e59 100644 --- a/components/freertos/queue.c +++ b/components/freertos/queue.c @@ -79,11 +79,6 @@ #include #include #include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32 -#include "esp32/rom/ets_sys.h" -#elif CONFIG_IDF_TARGET_ESP32S2BETA -#include "esp32s2beta/rom/ets_sys.h" -#endif /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining all the API functions to use the MPU wrappers. That should only be done when diff --git a/components/freertos/tasks.c b/components/freertos/tasks.c index 026945880..f8d2f1ed2 100644 --- a/components/freertos/tasks.c +++ b/components/freertos/tasks.c @@ -76,11 +76,6 @@ all the API functions to use the MPU wrappers. That should only be done when task.h is included from an application file. */ #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE -#if CONFIG_IDF_TARGET_ESP32 -#include "esp32/rom/ets_sys.h" -#elif CONFIG_IDF_TARGET_ESP32S2BETA -#include "esp32s2beta/rom/ets_sys.h" -#endif #include "esp_newlib.h" #include "esp_debug_helpers.h" diff --git a/components/freertos/test/test_freertos.c b/components/freertos/test/test_freertos.c deleted file mode 100644 index 5925b6487..000000000 --- a/components/freertos/test/test_freertos.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - Test for multicore FreeRTOS. This test spins up threads, fiddles with queues etc. -*/ - -#include -#include -#include "esp32/rom/ets_sys.h" - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/semphr.h" -#include "freertos/queue.h" -#include "freertos/xtensa_api.h" -#include "unity.h" -#include "soc/uart_periph.h" -#include "soc/dport_reg.h" -#include "driver/gpio.h" - - -void ets_isr_unmask(uint32_t unmask); - -static xQueueHandle myQueue; -static xQueueHandle uartRxQueue; - -int ctr; - -#if 1 -//Idle-loop for delay. Tests involuntary yielding -static void cvTaskDelay(int dummy) -{ - volatile int i; - for (i = 0; i < (1 << 17); i++); -} -#else -//Delay task execution using FreeRTOS methods. Tests voluntary yielding. -#define cvTaskDelay(x) vTaskDelay(x) -#endif - -#if 0 -static void dosegfault3(int i) -{ - volatile char *p = (volatile char *)0; - *p = i; -} - -static void dosegfault2(int i) -{ - if (i > 3) { - dosegfault3(i); - } -} - -static void dosegfault(int i) -{ - if (i < 5) { - dosegfault(i + 1); - } - dosegfault2(i); -} -#endif - -static void queueSender(void *pvParameters) -{ - int myCtr = xPortGetCoreID() * 100000; - while (1) { - printf("Core %d: Send to queue: %d\n", xPortGetCoreID(), myCtr); - xQueueSend(myQueue, (void *)(&myCtr), portMAX_DELAY); - printf("Send to queue done.\n"); - cvTaskDelay(100); - myCtr++; - } -} - -static void queueReceiver(void *pvParameters) -{ - int theCtr; - while (1) { - xQueueReceive(myQueue, &theCtr, portMAX_DELAY); - printf("Core %d: Receive from queue: %d\n", xPortGetCoreID(), theCtr); - } -} - - -static void tskone(void *pvParameters) -{ -// char *p=(char *)0; - while (1) { - ctr++; -// if (ctr>60) dosegfault(3); - printf("Task1, core %d, ctr=%d\n", xPortGetCoreID(), ctr); - cvTaskDelay(500); - } -} - -static void tsktwo(void *pvParameters) -{ - while (1) { - ctr++; - printf("Task2, core %d, ctr=%d\n", xPortGetCoreID(), ctr); - cvTaskDelay(500); - } -} - -static void tskthree(void *pvParameters) -{ - while (1) { - ctr++; - printf("Task3, core %d, ctr=%d\n", xPortGetCoreID(), ctr); - cvTaskDelay(500); - } -} - -static void tskfour(void *pvParameters) -{ - while (1) { - ctr++; - printf("Task4, core %d, ctr=%d\n", xPortGetCoreID(), ctr); - cvTaskDelay(500); - } -} - -static void tskfive(void *pvParameters) -{ - while (1) { - ctr++; - printf("Task5, core %d, ctr=%d\n", xPortGetCoreID(), ctr); - cvTaskDelay(500); - } -} - -static void tskyield(void *pvParameters) -{ - while (1) { - portYIELD(); - } -} - -static void tskUartRecv(void *pvParameters) -{ - char c; - while (1) { - xQueueReceive(uartRxQueue, &c, portMAX_DELAY); - printf("Uart received %c!\n", c); - } -} - - -static void uartIsrHdl(void *arg) -{ - char c; - BaseType_t xHigherPriorityTaskWoken; - SET_PERI_REG_MASK(UART_INT_CLR_REG(0), UART_RXFIFO_FULL_INT_CLR); - while (READ_PERI_REG(UART_STATUS_REG(0)) & (UART_RXFIFO_CNT << UART_RXFIFO_CNT_S)) { - c = READ_PERI_REG(UART_FIFO_REG(0)); - xQueueSendFromISR(uartRxQueue, &c, &xHigherPriorityTaskWoken); - printf("ISR: %c\n", c); - } - if (xHigherPriorityTaskWoken) { - portYIELD_FROM_ISR(); - } -} - -static void uartRxInit(xQueueHandle q) -{ - uint32_t reg_val; - - gpio_pullup_dis(1); - PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_U0RXD_U0RXD); - PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD_U0TXD); - - - PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_U0RXD_U0RXD); - -// reg_val = READ_PERI_REG(UART_CONF1(0)); - reg_val = (1 << UART_RXFIFO_FULL_THRHD_S); - WRITE_PERI_REG(UART_CONF1_REG(0), reg_val); - CLEAR_PERI_REG_MASK(UART_INT_ENA_REG(0), UART_TXFIFO_EMPTY_INT_ENA | UART_RXFIFO_TOUT_INT_ENA); - SET_PERI_REG_MASK(UART_INT_ENA_REG(0), UART_RXFIFO_FULL_INT_ENA); - - printf("Enabling int %d\n", ETS_UART0_INUM); - DPORT_REG_SET_FIELD(DPORT_PRO_UART_INTR_MAP_REG, DPORT_PRO_UART_INTR_MAP, ETS_UART0_INUM); - DPORT_REG_SET_FIELD(DPORT_PRO_UART1_INTR_MAP_REG, DPORT_PRO_UART1_INTR_MAP, ETS_UART0_INUM); - - xt_set_interrupt_handler(ETS_UART0_INUM, uartIsrHdl, NULL); - xt_ints_on(1 << ETS_UART0_INUM); - -} - -// TODO: split this thing into separate orthogonal tests -TEST_CASE("Bunch of FreeRTOS tests", "[freertos][ignore]") -{ - char *tst; - TaskHandle_t th[12]; - int i; - printf("%s\n", __FUNCTION__); - tst = pvPortMalloc(16); - printf("Test malloc returns addr %p\n", tst); - printf("Free heap: %u\n", xPortGetFreeHeapSize()); - myQueue = xQueueCreate(10, sizeof(int)); - uartRxQueue = xQueueCreate(256, sizeof(char)); - printf("Free heap: %u\n", xPortGetFreeHeapSize()); - - printf("Creating tasks\n"); - xTaskCreatePinnedToCore(tskyield , "tskyield1" , 2048, NULL, 3, &th[0], 0); - xTaskCreatePinnedToCore(tskyield , "tskyield2" , 2048, NULL, 3, &th[1], 1); - - xTaskCreatePinnedToCore(tskone , "tskone" , 2048, NULL, 3, &th[2], 0); - xTaskCreatePinnedToCore(tsktwo , "tsktwo" , 2048, NULL, 3, &th[3], 1); - xTaskCreatePinnedToCore(tskthree, "tskthree", 2048, NULL, 3, &th[4], 0); - xTaskCreatePinnedToCore(tskfour , "tskfour" , 2048, NULL, 3, &th[5], tskNO_AFFINITY); - xTaskCreatePinnedToCore(tskfive , "tskfive" , 2048, NULL, 3, &th[6], tskNO_AFFINITY); - xTaskCreatePinnedToCore(queueSender , "qsend1" , 2048, NULL, 3, &th[7], 0); - xTaskCreatePinnedToCore(queueSender , "qsend2" , 2048, NULL, 3, &th[8], 1); - xTaskCreatePinnedToCore(queueReceiver , "qrecv1" , 2048, NULL, 3, &th[9], 1); - xTaskCreatePinnedToCore(queueReceiver , "qrecv2" , 2048, NULL, 3, &th[10], 0); - xTaskCreatePinnedToCore(tskUartRecv , "tskuart" , 2048, NULL, 4, &th[11], 1); - printf("Free heap: %u\n", xPortGetFreeHeapSize()); - uartRxInit(uartRxQueue); - - // Let stuff run for 20s - vTaskDelay(20000 / portTICK_PERIOD_MS); - - //Shut down all the tasks - for (i = 0; i < 12; i++) { - vTaskDelete(th[i]); - } - xt_ints_off(1 << ETS_UART0_INUM); -} - diff --git a/components/freertos/test/test_freertos_eventgroups.c b/components/freertos/test/test_freertos_eventgroups.c index 0a25d3016..edfa32558 100644 --- a/components/freertos/test/test_freertos_eventgroups.c +++ b/components/freertos/test/test_freertos_eventgroups.c @@ -8,6 +8,12 @@ #include "driver/timer.h" #include "unity.h" +#ifdef CONFIG_IDF_TARGET_ESP32S2BETA +#define int_clr_timers int_clr +#define update update.update +#define int_st_timers int_st +#endif + #define BIT_CALL (1 << 0) #define BIT_RESPONSE(TASK) (1 << (TASK+1)) #define ALL_RESPONSE_BITS (((1 << NUM_TASKS) - 1) << 1) diff --git a/components/freertos/test/test_freertos_isinisrcontext.c b/components/freertos/test/test_freertos_isinisrcontext.c index ff8bf27d5..a34e15463 100644 --- a/components/freertos/test/test_freertos_isinisrcontext.c +++ b/components/freertos/test/test_freertos_isinisrcontext.c @@ -4,7 +4,6 @@ #include #include -#include "esp32/rom/ets_sys.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/components/freertos/test/test_freertos_task_delay_until.c b/components/freertos/test/test_freertos_task_delay_until.c index b4cc7d5d6..c725bf22c 100644 --- a/components/freertos/test/test_freertos_task_delay_until.c +++ b/components/freertos/test/test_freertos_task_delay_until.c @@ -27,6 +27,10 @@ static SemaphoreHandle_t task_delete_semphr; +#if CONFIG_IDF_TARGET_ESP32S2BETA +#warning "Test not ported to esp32s2beta" +#else + static void delaying_task(void* arg) { uint64_t ref_prev, ref_current; @@ -72,3 +76,5 @@ TEST_CASE("Test vTaskDelayUntil", "[freertos]") vSemaphoreDelete(task_delete_semphr); ref_clock_deinit(); } + +#endif // CONFIG_IDF_TARGET_ESP32S2BETA diff --git a/components/freertos/test/test_freertos_task_delete.c b/components/freertos/test/test_freertos_task_delete.c index fa40f417a..f82d8f15a 100644 --- a/components/freertos/test/test_freertos_task_delete.c +++ b/components/freertos/test/test_freertos_task_delete.c @@ -17,7 +17,6 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_heap_caps.h" -#include "esp32/rom/ets_sys.h" #include "unity.h" #include "test_utils.h" diff --git a/components/freertos/test/test_freertos_task_notify.c b/components/freertos/test/test_freertos_task_notify.c index 87bc260a0..b090cccfd 100644 --- a/components/freertos/test/test_freertos_task_notify.c +++ b/components/freertos/test/test_freertos_task_notify.c @@ -15,6 +15,12 @@ #include "unity.h" #include "test_utils.h" +#ifdef CONFIG_IDF_TARGET_ESP32S2BETA +#define int_clr_timers int_clr +#define update update.update +#define int_st_timers int_st +#endif + #define NO_OF_NOTIFS 4 #define NO_OF_TASKS 2 //Sender and receiver #define TIMER_DIVIDER 10000 diff --git a/components/freertos/test/test_newlib_reent.c b/components/freertos/test/test_newlib_reent.c index ea723b70a..b4a4f7c14 100644 --- a/components/freertos/test/test_newlib_reent.c +++ b/components/freertos/test/test_newlib_reent.c @@ -5,7 +5,6 @@ #include #include #include -#include "esp32/rom/ets_sys.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/components/freertos/test/test_panic.c b/components/freertos/test/test_panic.c index 295e0486f..20d55e32d 100644 --- a/components/freertos/test/test_panic.c +++ b/components/freertos/test/test_panic.c @@ -4,7 +4,6 @@ #include #include -#include "esp32/rom/ets_sys.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/components/freertos/test/test_preemption.c b/components/freertos/test/test_preemption.c index 80713b2d6..98668abb8 100644 --- a/components/freertos/test/test_preemption.c +++ b/components/freertos/test/test_preemption.c @@ -4,7 +4,6 @@ #include #include -#include "esp32/rom/ets_sys.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/components/freertos/test/test_spinlocks.c b/components/freertos/test/test_spinlocks.c index 58ef37371..3e1288867 100644 --- a/components/freertos/test/test_spinlocks.c +++ b/components/freertos/test/test_spinlocks.c @@ -4,7 +4,6 @@ #include #include -#include "esp32/rom/ets_sys.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/components/freertos/test/test_suspend_scheduler.c b/components/freertos/test/test_suspend_scheduler.c index 9aef2ce7e..633a36408 100644 --- a/components/freertos/test/test_suspend_scheduler.c +++ b/components/freertos/test/test_suspend_scheduler.c @@ -13,6 +13,12 @@ #include "driver/timer.h" #include "sdkconfig.h" +#ifdef CONFIG_IDF_TARGET_ESP32S2BETA +#define int_clr_timers int_clr +#define update update.update +#define int_st_timers int_st +#endif + static SemaphoreHandle_t isr_semaphore; static volatile unsigned isr_count; diff --git a/components/freertos/test/test_task_suspend_resume.c b/components/freertos/test/test_task_suspend_resume.c index 08f83f0b6..878c89a9a 100644 --- a/components/freertos/test/test_task_suspend_resume.c +++ b/components/freertos/test/test_task_suspend_resume.c @@ -18,6 +18,11 @@ #include "esp_freertos_hooks.h" #include "sdkconfig.h" +#ifdef CONFIG_IDF_TARGET_ESP32S2BETA +#define int_clr_timers int_clr +#define update update.update +#define int_st_timers int_st +#endif /* Counter task counts a target variable forever */ static void task_count(void *vp_counter) diff --git a/components/freertos/xtensa_intr.c b/components/freertos/xtensa_intr.c index d3fcea9c7..4a8724044 100644 --- a/components/freertos/xtensa_intr.c +++ b/components/freertos/xtensa_intr.c @@ -34,11 +34,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "freertos/xtensa_api.h" #include "freertos/portable.h" #include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32 -#include "esp32/rom/ets_sys.h" -#elif CONFIG_IDF_TARGET_ESP32S2BETA -#include "esp32s2beta/rom/ets_sys.h" -#endif #if XCHAL_HAVE_EXCEPTIONS