/*! \brief create ethernet task, for ethernet management. * * \param uxPriority Input. priority for the task, it should be low * */ void init_ethernet(pcl_freq_param_t *param) { static const gpio_map_t MACB_GPIO_MAP = { {EXTPHY_MACB_MDC_PIN, EXTPHY_MACB_MDC_FUNCTION }, {EXTPHY_MACB_MDIO_PIN, EXTPHY_MACB_MDIO_FUNCTION }, {EXTPHY_MACB_RXD_0_PIN, EXTPHY_MACB_RXD_0_FUNCTION }, {EXTPHY_MACB_TXD_0_PIN, EXTPHY_MACB_TXD_0_FUNCTION }, {EXTPHY_MACB_RXD_1_PIN, EXTPHY_MACB_RXD_1_FUNCTION }, {EXTPHY_MACB_TXD_1_PIN, EXTPHY_MACB_TXD_1_FUNCTION }, {EXTPHY_MACB_TX_EN_PIN, EXTPHY_MACB_TX_EN_FUNCTION }, {EXTPHY_MACB_RX_ER_PIN, EXTPHY_MACB_RX_ER_FUNCTION }, {EXTPHY_MACB_RX_DV_PIN, EXTPHY_MACB_RX_DV_FUNCTION }, {EXTPHY_MACB_TX_CLK_PIN, EXTPHY_MACB_TX_CLK_FUNCTION} }; // Assign GPIO to MACB gpio_enable_module(MACB_GPIO_MAP, sizeof(MACB_GPIO_MAP) / sizeof(MACB_GPIO_MAP[0])); /* Initialize timer for lwIP calls; generates interrupts every 1ms */ init_timer(param->pba_f); /* Initialize lwIP. */ lwip_init(); /* Set hw and IP parameters, initialize MACB too */ prvEthernetConfigureInterface(NULL); #if defined(HTTP_RAW_USED) /* Bring up the web server */ httpd_init(); #endif }
//! Callback executed when the TCP/IP init is done. static void tcpip_init_done(void *arg) { sys_sem_t *sem; sem = (sys_sem_t *)arg; /* Set hw and IP parameters, initialize MACB too */ prvEthernetConfigureInterface(NULL); #if ( (LWIP_VERSION) == ((1U << 24) | (3U << 16) | (2U << 8) | (LWIP_VERSION_RC)) ) sys_sem_signal(*sem); // Signal the waiting thread that the TCP/IP init is done. #else sys_sem_signal(sem); // Signal the waiting thread that the TCP/IP init is done. #endif }