ethernet: enlarge ethernet task stack size

1. In original driver, the stack size for emac driver task "emacT" is only 2048 Bytes, which also can not be changed by user.
2. Each time when invoking "emac_start" function, it will reset emac registers, the driver should reconfig some important registers again.

Closes https://github.com/espressif/esp-idf/issues/3025
pull/2132/head
morris 2018-09-05 21:43:03 +08:00
rodzic 57118e2f10
commit ed1771c7cc
3 zmienionych plików z 11 dodań i 1 usunięć

Wyświetl plik

@ -42,4 +42,11 @@ config EMAC_TASK_PRIORITY
help
Ethernet MAC task priority.
config EMAC_TASK_STACK_SIZE
int "Stack Size of EMAC Task"
default 3072
range 2000 8000
help
Stack Size of Ethernet MAC task.
endmenu

Wyświetl plik

@ -106,6 +106,7 @@ struct emac_close_cmd {
#define DMA_RX_BUF_NUM CONFIG_DMA_RX_BUF_NUM
#define DMA_TX_BUF_NUM CONFIG_DMA_TX_BUF_NUM
#define EMAC_TASK_PRIORITY CONFIG_EMAC_TASK_PRIORITY
#define EMAC_TASK_STACK_SIZE CONFIG_EMAC_TASK_STACK_SIZE
#define DMA_RX_BUF_SIZE 1600
#define DMA_TX_BUF_SIZE 1600

Wyświetl plik

@ -769,6 +769,7 @@ static void emac_start(void *param)
emac_enable_clk(true);
emac_reset();
emac_dma_init();
emac_set_macaddr_reg();
@ -1101,7 +1102,8 @@ esp_err_t esp_eth_init_internal(eth_config_t *config)
emac_rx_xMutex = xSemaphoreCreateRecursiveMutex();
emac_tx_xMutex = xSemaphoreCreateRecursiveMutex();
emac_xqueue = xQueueCreate(EMAC_EVT_QNUM, sizeof(emac_event_t));
xTaskCreate(emac_task, "emacT", 2048, NULL, EMAC_TASK_PRIORITY, &emac_task_hdl);
xTaskCreate(emac_task, "emacT", EMAC_TASK_STACK_SIZE, NULL,
EMAC_TASK_PRIORITY, &emac_task_hdl);
emac_enable_clk(false);
esp_intr_alloc(ETS_ETH_MAC_INTR_SOURCE, 0, emac_process_intr, NULL, NULL);