diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index dd8f78379f7aef1414d1dc752b363962e7fd4ee7..288ee80a7ad5c4796b1ca9a3c819abe215a634a5 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -1,11 +1,75 @@ +# Phytium FreeRTOS SDK 2024-04-25 ChangeLog + +Change Log since 2024-04-25 + +## example + +- Refactoring peripheral spi example + +# Phytium FreeRTOS SDK 2024-04-25 ChangeLog + +Change Log since 2024-04-24 + +## example + +- modify qspi example, add no letter shell mode, adapt to auto-test system + +# Phytium FreeRTOS SDK 2024-04-25 ChangeLog + +Change Log since 2024-04-24 + +## example + +- modify gpio example, add no letter shell mode, adapt to auto-test system +- modify openamp readme + +- modify can example, add no letter shell mode, adapt to auto-test system + +# Phytium FreeRTOS SDK 2024-04-24 ChangeLog + +Change Log since 2024-04-10 + +## drivers + +- modify fxmac_os.c to achieve higher iperf bandwidth when executing iperfs test +- delete redundant variable and macro, simplified the xmac code + +## example + +- add lwip iperf example in network +- update all network config (CONFIG_LWIP_RAW_RECVMBOX_SIZE) to solve problem : can not use ping with socket +- update all network config (CONFIG_IP_REASS_MAX_PBUFS) to solve problem : can not ping large packets over 20000 + +## third-party + +- xmac uses counting semaphores to solve ping timeout problem ,sys_countingsem_create added +- delete ethernetif_poll and low_level_input,now ethernetif_input can handle everything +- all example now compile ping app by default + +# Phytium FreeRTOS SDK 2024-04-24 ChangeLog + +Change Log since 2024-04-23 + +## example + +- Refactoring peripheral ddma example + # Phytium FreeRTOS SDK 2024-04-23 ChangeLog -Change Log since 2024-04-13 +Change Log since 2024-04-22 ## example - modify pwm example, add no letter shell mode, adapt to auto-test system +# Phytium FreeRTOS SDK 2024-04-23 ChangeLog + +Change Log since 2024-04-22 + +## example + +- update gdma example, fix some problem + # Phytium FreeRTOS SDK 2024-04-22 ChangeLog Change Log since 2024-04-19 diff --git a/drivers/dma/fddma/fddma_os.h b/drivers/dma/fddma/fddma_os.h index b8eb64b6fb0b298d588eae4d67e7df289b48dc0c..cddb4fe6cb71d28c5f4a95d0280ebd729058cdf1 100644 --- a/drivers/dma/fddma/fddma_os.h +++ b/drivers/dma/fddma/fddma_os.h @@ -44,6 +44,7 @@ extern "C" #define FFREERTOS_DDMA_SEMA_ERR FT_CODE_ERR(ErrModPort, ErrDdma, 1) #define FFREERTOS_DDMA_ALREADY_INIT FT_CODE_ERR(ErrModPort, ErrDdma, 2) #define FFREERTOS_DDMA_EVT_TIMEOUT FT_CODE_ERR(ErrModPort, ErrDdma, 3) +#define FFREERTOS_DDMA_TRANSFER_FAIL FT_CODE_ERR(ErrModPort, ErrDdma, 4) #define FFREERTOS_DDMA_IRQ_PRIORITY IRQ_PRIORITY_VALUE_12 diff --git a/drivers/eth/xmac/fxmac_os.c b/drivers/eth/xmac/fxmac_os.c index b7b93700b3a4231db1c8d0a97b26c18a98fc2271..c2420349dda8f71fb58aa15e1cab356abeb49c91 100644 --- a/drivers/eth/xmac/fxmac_os.c +++ b/drivers/eth/xmac/fxmac_os.c @@ -29,6 +29,7 @@ #include "fcache.h" #include "fxmac_bdring.h" #include "lwip_port.h" +#include "netif/etharp.h" #include "eth_ieee_reg.h" #include "fcpu_info.h" #include "faarch.h" @@ -134,8 +135,9 @@ static u32 IsTxSpaceAvailable(FXmacOs *instance_p) * @return {*} * @param {ethernetif} *ethernetif_p * @param {FXmacBdRing} *txring + * @param {u32} cnt */ -void FXmacProcessSentBds(FXmacOs *instance_p, FXmacBdRing *txring) +void FXmacProcessSentBds(FXmacOs *instance_p, FXmacBdRing *txring, u32 cnt) { FXmacBd *txbdset; FXmacBd *curbdpntr; @@ -146,67 +148,57 @@ void FXmacProcessSentBds(FXmacOs *instance_p, FXmacBdRing *txring) struct pbuf *p; u32 *temp; - while (1) + /* obtain processed BD's */ + n_bds = FXmacBdRingFromHwTx(txring,cnt,&txbdset); + if (n_bds == 0) + { + return; + } + /* free the processed BD's */ + n_pbufs_freed = n_bds; + curbdpntr = txbdset; + while (n_pbufs_freed > 0) { - /* obtain processed BD's */ - n_bds = FXmacBdRingFromHwTx(txring, FXMAX_TX_PBUFS_LENGTH, &txbdset); - if (n_bds == 0) + bdindex = FXMAC_BD_TO_INDEX(txring, curbdpntr); + temp = (u32 *)curbdpntr; + *temp = 0; /* Word 0 */ + temp++; + if (bdindex == (FXMAX_TX_PBUFS_LENGTH - 1)) { - return; + *temp = 0xC0000000; /* Word 1 ,used/Wrap – marks last descriptor in transmit buffer descriptor list.*/ } - /* free the processed BD's */ - n_pbufs_freed = n_bds; - curbdpntr = txbdset; - while (n_pbufs_freed > 0) + else { - bdindex = FXMAC_BD_TO_INDEX(txring, curbdpntr); - temp = (u32 *)curbdpntr; - *temp = 0; /* Word 0 */ - temp++; - if (bdindex == (FXMAX_TX_PBUFS_LENGTH - 1)) - { - *temp = 0xC0000000; /* Word 1 ,used/Wrap – marks last descriptor in transmit buffer descriptor list.*/ - } - else - { - *temp = 0x80000000; /* Word 1 , Used – must be zero for GEM to read data to the transmit buffer.*/ - } - DSB(); - - p = (struct pbuf *)instance_p->buffer.tx_pbufs_storage[bdindex]; - - if (p != NULL) - { - pbuf_free(p); - } - instance_p->buffer.tx_pbufs_storage[bdindex] = (uintptr)NULL; - curbdpntr = FXMAC_BD_RING_NEXT(txring, curbdpntr); - n_pbufs_freed--; - DSB(); + *temp = 0x80000000; /* Word 1 , Used – must be zero for GEM to read data to the transmit buffer.*/ } + DSB(); - status = FXmacBdRingFree(txring, n_bds, txbdset); - if (status != FT_SUCCESS) + p = (struct pbuf *)instance_p->buffer.tx_pbufs_storage[bdindex]; + + if (p != NULL) { - FXMAC_OS_XMAC_PRINT_I("Failure while freeing in Tx Done ISR."); + pbuf_free(p); } + instance_p->buffer.tx_pbufs_storage[bdindex] = (uintptr)NULL; + curbdpntr = FXMAC_BD_RING_NEXT(txring, curbdpntr); + n_pbufs_freed--; + DSB(); + } + + status = FXmacBdRingFree(txring, n_bds, txbdset); + if (status != FT_SUCCESS) + { + FXMAC_OS_XMAC_PRINT_I("Failure while freeing in Tx Done ISR."); } + return; } void FXmacSendHandler(void *arg) { FXmacOs *instance_p; - FXmacBdRing *txringptr; - u32 regval; - instance_p = (FXmacOs *)arg; - txringptr = &(FXMAC_GET_TXRING(instance_p->instance)); - regval = FXMAC_READREG32(instance_p->instance.config.base_address, FXMAC_TXSR_OFFSET); - FXMAC_WRITEREG32(instance_p->instance.config.base_address, FXMAC_TXSR_OFFSET, regval); /* 清除中断状态位来停止中断 */ - - /* If Transmit done interrupt is asserted, process completed BD's */ - FXmacProcessSentBds(instance_p, txringptr); + FXMAC_WRITEREG32(instance_p->instance.config.base_address, FXMAC_IDR_OFFSET, FXMAC_IXR_TXCOMPL_MASK); /* 关闭发送完成中断 */ } FError FXmacSgsend(FXmacOs *instance_p, struct pbuf *p) @@ -218,12 +210,8 @@ FError FXmacSgsend(FXmacOs *instance_p, struct pbuf *p) FError status; FXmacBdRing *txring; u32 bdindex; - u32 lev; u32 max_fr_size; - lev = MFCPSR(); - MTCPSR(lev | 0xC0); /* Mask IRQ and FIQ interrupts in cpsr */ - txring = &(FXMAC_GET_TXRING(instance_p->instance)); /* first count the number of pbufs */ @@ -236,7 +224,6 @@ FError FXmacSgsend(FXmacOs *instance_p, struct pbuf *p) status = FXmacBdRingAlloc(txring, n_pbufs, &txbdset); if (status != FT_SUCCESS) { - MTCPSR(lev); FXMAC_OS_XMAC_PRINT_I("sgsend: Error allocating TxBD."); return ERR_GENERAL; } @@ -247,7 +234,6 @@ FError FXmacSgsend(FXmacOs *instance_p, struct pbuf *p) if (instance_p->buffer.tx_pbufs_storage[bdindex]) { - MTCPSR(lev); FXMAC_OS_XMAC_PRINT_I("txbd %p, txring->base_bd_addr %p", txbd, txring->base_bd_addr); FXMAC_OS_XMAC_PRINT_I("PBUFS not available bdindex is %d ", bdindex); FXMAC_OS_XMAC_PRINT_I("instance_p->buffer.tx_pbufs_storage[bdindex] %p ", instance_p->buffer.tx_pbufs_storage[bdindex]); @@ -306,7 +292,6 @@ FError FXmacSgsend(FXmacOs *instance_p, struct pbuf *p) status = FXmacBdRingToHw(txring, n_pbufs, txbdset); if (status != FT_SUCCESS) { - MTCPSR(lev); FXMAC_OS_XMAC_PRINT_I("sgsend: Error submitting TxBD."); return ERR_GENERAL; } @@ -316,9 +301,6 @@ FError FXmacSgsend(FXmacOs *instance_p, struct pbuf *p) (FXMAC_READREG32(instance_p->instance.config.base_address, FXMAC_NWCTRL_OFFSET) | FXMAC_NWCTRL_STARTTX_MASK)); - - MTCPSR(lev); - return status; } @@ -412,9 +394,19 @@ void FXmacRecvSemaphoreHandler(void *arg) instance_p = (FXmacOs *)arg; xmac_netif_p = (struct LwipPort *)instance_p->stack_pointer; + FXMAC_WRITEREG32(instance_p->instance.config.base_address, FXMAC_IDR_OFFSET, FXMAC_IXR_RXCOMPL_MASK); sys_sem_signal(&(xmac_netif_p->sem_rx_data_available)); - + } + + +/** + * @name: FXmacRecvHandler + * @msg: handle dma packets and put these packets to lwip stack to process + * @note: + * @param {void} *arg +* @return {*} + */ void FXmacRecvHandler(void *arg) { struct pbuf *p; @@ -426,7 +418,7 @@ void FXmacRecvHandler(void *arg) u32 bdindex; u32 regval; u32 index; - u32 gigeversion; + u32 rx_queue_len ; FXmacOs *instance_p; FASSERT(arg != NULL); @@ -488,8 +480,17 @@ void FXmacRecvHandler(void *arg) /* free up the BD's */ FXmacBdRingFree(rxring, bd_processed, rxbdset); SetupRxBds(instance_p, rxring); - } + rx_queue_len = FXmacPqQlength(&instance_p->recv_q); + while (rx_queue_len) + { + /* return one packet from receive q */ + p = (struct pbuf *)FXmacPqDequeue(&instance_p->recv_q); + FXmacOsRx(instance_p,(void *)p); + rx_queue_len--; + } + } + return; } @@ -524,7 +525,6 @@ FError FXmacInitDma(FXmacOs *instance_p) int i; u32 bdindex; volatile uintptr tempaddress; - u32 gigeversion; FXmacBd *bdtxterminate; FXmacBd *bdrxterminate; u32 *temp; @@ -717,7 +717,6 @@ static void FreeTxRxPbufs(FXmacOs *instance_p) static void ResetDma(FXmacOs *instance_p) { u8 txqueuenum; - u32 gigeversion; FXmacBdRing *txringptr = &FXMAC_GET_TXRING(instance_p->instance); FXmacBdRing *rxringptr = &FXMAC_GET_RXRING(instance_p->instance); @@ -794,7 +793,7 @@ void FXmacErrorHandler(void *arg, u8 direction, u32 error_word) if (error_word & FXMAC_RXSR_RXOVR_MASK) { FXMAC_OS_XMAC_PRINT_I("Receive over run."); - FXmacRecvHandler(instance_p); + FXmacRecvHandler(arg); SetupRxBds(instance_p, rxring); } if (error_word & FXMAC_RXSR_BUFFNA_MASK) @@ -828,7 +827,7 @@ void FXmacErrorHandler(void *arg, u8 direction, u32 error_word) if (error_word & FXMAC_TXSR_FRAMERX_MASK) { FXMAC_OS_XMAC_PRINT_I("Transmit collision."); - FXmacProcessSentBds(instance_p, txring); + FXmacProcessSentBds(instance_p, txring, FXMAX_TX_PBUFS_LENGTH); } break; } @@ -1177,11 +1176,6 @@ FError FXmacOsInit(FXmacOs *instance_p) FXmacSetOptions(xmac_p, FXMAC_JUMBO_ENABLE_OPTION, 0); } - if (instance_p->feature & FXMAC_OS_CONFIG_RX_POLL_RECV) - { - xmac_p->mask &= (~FXMAC_IXR_RXCOMPL_MASK); - } - if (instance_p->feature & FXMAC_OS_CONFIG_MULTICAST_ADDRESS_FILITER) { FXmacSetOptions(xmac_p, FXMAC_MULTICAST_OPTION, 0); @@ -1232,25 +1226,61 @@ FError FXmacOsInit(FXmacOs *instance_p) /** * @name: FXmacOsRx - * @msg: void *FXmacOsRx(FXmacOs *instance_p) - * @note: + * @msg: moving packets into lwip stack + * @note: * @param {FXmacOs} *instance_p + * @param {void} *pbuf * @return {*} */ -void *FXmacOsRx(FXmacOs *instance_p) +void FXmacOsRx(FXmacOs *instance_p, void *pbuf) { + FASSERT(instance_p != NULL); + FASSERT(pbuf != NULL); + + struct netif *netif; struct pbuf *p; + struct eth_hdr *ethhdr; + + netif = (struct netif *)instance_p->netif; + p = (struct pbuf *)pbuf; + /* points to packet payload, which starts with an Ethernet header */ + ethhdr = p->payload; - /* see if there is data to process */ - if (FXmacPqQlength(&instance_p->recv_q) == 0) +#if LINK_STATS + lwip_stats.link.recv++; +#endif /* LINK_STATS */ + switch (htons(ethhdr->type)) { - return NULL; + /* IP or ARP packet? */ + case ETHTYPE_IP: + case ETHTYPE_ARP: +#if LWIP_IPV6 + /*IPv6 Packet?*/ + case ETHTYPE_IPV6: +#endif +#if PPPOE_SUPPORT + /* PPPoE packet? */ + case ETHTYPE_PPPOEDISC: + case ETHTYPE_PPPOE: +#endif /* PPPOE_SUPPORT */ + + /* full packet send to tcpip_thread to process */ + if (netif->input(p, netif) != ERR_OK) + { + LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\r\n")); + pbuf_free(p); + p = NULL; + } + break; + + default: + pbuf_free(p); + p = NULL; + break; } - /* return one packet from receive q */ - p = (struct pbuf *)FXmacPqDequeue(&instance_p->recv_q); - return p; + return; } static FError FXmacOsOutput(FXmacOs *instance_p, struct pbuf *p) @@ -1271,34 +1301,24 @@ static FError FXmacOsOutput(FXmacOs *instance_p, struct pbuf *p) return status; } -FError FXmacOsTx(FXmacOs *instance_p, void *tx_buf) +FError FXmacOsTx(FXmacOs *instance_p, void *pbuf) { - u32 freecnt; - FXmacBdRing *txring; - FError ret = FT_SUCCESS; - struct pbuf *p; - FASSERT(instance_p != NULL); - if (tx_buf == NULL) - { - FXMAC_OS_XMAC_PRINT_E("tx_buf is null."); - return FREERTOS_XMAC_PARAM_ERROR; - } - p = tx_buf; + FASSERT(instance_p != NULL); + FASSERT(pbuf != NULL); - /* check if space is available to send */ - freecnt = IsTxSpaceAvailable(instance_p); + FXmacBdRing *txring; + struct pbuf *p; + FError ret = FT_SUCCESS; - if (freecnt <= 5) - { - txring = &(FXMAC_GET_TXRING(instance_p->instance)); - FXmacProcessSentBds(instance_p, txring); - } + p = (struct pbuf *)pbuf; + txring = &(FXMAC_GET_TXRING(instance_p->instance)); + FXmacProcessSentBds(instance_p, txring,FXMAX_TX_PBUFS_LENGTH); + if (IsTxSpaceAvailable(instance_p)) { - FXmacOsOutput(instance_p, p); - ret = FT_SUCCESS; + ret = FXmacOsOutput(instance_p, p); } else { diff --git a/drivers/eth/xmac/fxmac_os.h b/drivers/eth/xmac/fxmac_os.h index 0c685a740d4219fb90afa5921d69a476a48d01eb..927f17e71535b0af0ebc14c02c5ff0c6e70079da 100644 --- a/drivers/eth/xmac/fxmac_os.h +++ b/drivers/eth/xmac/fxmac_os.h @@ -43,8 +43,8 @@ extern "C" { #define FXMAX_RX_BDSPACE_LENGTH 0x20000 /* default set 128KB*/ #define FXMAX_TX_BDSPACE_LENGTH 0x20000 /* default set 128KB*/ -#define FXMAX_TX_PBUFS_LENGTH 128 -#define FXMAX_RX_PBUFS_LENGTH 128 +#define FXMAX_TX_PBUFS_LENGTH 64 +#define FXMAX_RX_PBUFS_LENGTH 64 #define FXMAX_MAX_HARDWARE_ADDRESS_LENGTH 6 @@ -56,7 +56,6 @@ extern "C" { #define FXMAC_OS_CONFIG_MULTICAST_ADDRESS_FILITER BIT(1) /* Allow multicast address filtering */ #define FXMAC_OS_CONFIG_COPY_ALL_FRAMES BIT(2) /* enable copy all frames */ #define FXMAC_OS_CONFIG_CLOSE_FCS_CHECK BIT(3) /* close fcs check */ -#define FXMAC_OS_CONFIG_RX_POLL_RECV BIT(4) /* select poll mode */ /* Phy */ #define FXMAC_PHY_SPEED_10M 10 #define FXMAC_PHY_SPEED_100M 100 @@ -127,13 +126,14 @@ typedef struct struct LwipPort *stack_pointer; /* Docking data stack data structure */ u8 hwaddr[FXMAX_MAX_HARDWARE_ADDRESS_LENGTH]; + void * netif; /* Pointing to the netif */ } FXmacOs; FXmacOs *FXmacOsGetInstancePointer(FXmacPhyControl *config_p); FError FXmacOsInit(FXmacOs *instance_p); FError FXmacOsConfig(FXmacOs *instance_p, int cmd, void *arg); -void *FXmacOsRx(FXmacOs *instance_p); -FError FXmacOsTx(FXmacOs *instance_p, void *tx_buf); +void FXmacOsRx(FXmacOs *instance_p, void *pbuf); +FError FXmacOsTx(FXmacOs *instance_p, void *pbuf); void FXmacOsStop(FXmacOs *instance_p); void FXmacOsStart(FXmacOs *instance_p); void FXmacOsRecvHandler(FXmacOs *instance_p); diff --git a/drivers/gpio/fgpio/fgpio_os.c b/drivers/gpio/fgpio/fgpio_os.c index 96c38781a62f0461625b77acc94e2caf2767b743..4d51d25b2da75e9692be9bfa048c0dd820996700 100644 --- a/drivers/gpio/fgpio/fgpio_os.c +++ b/drivers/gpio/fgpio/fgpio_os.c @@ -20,15 +20,13 @@ * Ver   Who        Date         Changes * ----- ------     --------    -------------------------------------- * 1.0 zhugengyu 2022/7/27 init commit + * 2.0 wangzq 2024/4/22 add no letter shell mode, adapt to auto-test system */ /***************************** Include Files *********************************/ #include #include #include - -#include "finterrupt.h" #include "fdebug.h" -#include "fsleep.h" #include "fcpu_info.h" #include "fgpio_os.h" @@ -72,6 +70,13 @@ static inline void FGpioOsGiveSema(SemaphoreHandle_t locker) return; } +/** + * @name: FGpioOsGetId + * @msg: get gpio ctrl, pin and port by pin index + * @return {*} + * @param {u32} pin_idx, gpio pin id + * @param {FGpioPinId} *pin_id, input pin instance + */ static inline void FGpioOsGetId(u32 pin_idx, FGpioPinId *pin_id) { FASSERT(pin_id); @@ -84,25 +89,23 @@ static inline void FGpioOsGetId(u32 pin_idx, FGpioPinId *pin_id) FGPIO_INFO("is gpio-%d-%d-%d", pin_id->ctrl, pin_id->port, pin_id->pin); } -/* setup gpio ctrl interrupt */ -static void FGpioOsSetupCtrlIRQ(FFreeRTOSFGpio *const instance) +/* setup gpio interrupt */ +static void FGpioOSSetupGpioIRQ(FFreeRTOSFGpio *const instance, FGpioPin *const pin, const FFreeRTOSGpioPinConfig *config) { - FGpio *ctrl = &instance->ctrl; u32 cpu_id; - u32 irq_num = ctrl->config.irq_num[0]; + FGpio *ctrl = &instance->ctrl; + u32 irq_num = ctrl->config.irq_num[pin->index.pin]; GetCpuId(&cpu_id); FGPIO_INFO("cpu_id is cpu_id %d", cpu_id); + InterruptSetTargetCpus(irq_num, cpu_id); /* setup interrupt */ InterruptSetPriority(irq_num, FFREERTOS_GPIO_IRQ_PRIORITY); /* register intr handler */ - InterruptInstall(irq_num, - FGpioInterruptHandler, - ctrl, - NULL); + InterruptInstall(irq_num, FGpioInterruptHandler, ctrl, NULL); InterruptUmask(irq_num); @@ -179,29 +182,6 @@ FError FFreeRTOSGpioDeInit(FFreeRTOSFGpio *const instance) return err; } -/* setup gpio pin interrupt */ -static void FGpioOSSetupPinIRQ(FFreeRTOSFGpio *const instance, FGpioPin *const pin, const FFreeRTOSGpioPinConfig *config) -{ - u32 cpu_id; - FGpio *ctrl = &instance->ctrl; - u32 irq_num = ctrl->config.irq_num[pin->index.pin]; - - GetCpuId(&cpu_id); - FGPIO_INFO("cpu_id is cpu_id %d", cpu_id); - - InterruptSetTargetCpus(irq_num, cpu_id); - - /* setup interrupt */ - InterruptSetPriority(irq_num, FFREERTOS_GPIO_IRQ_PRIORITY); - - /* register intr handler */ - InterruptInstall(irq_num, config->irq_handler, config->irq_args, NULL); - - InterruptUmask(irq_num); - - return; -} - /** * @name: FFreeRTOSSetupPin * @msg: config and setup pin @@ -214,6 +194,7 @@ FError FFreeRTOSSetupPin(FFreeRTOSFGpio *const instance, const FFreeRTOSGpioPinC FASSERT(instance && config); FGpio *ctrl = &instance->ctrl; FGpioPinId pin_id; + FGpioOsGetId(config->pin_idx, &pin_id); /* convert pin id */ u32 ctrl_id = ctrl->config.instance_id; FASSERT_MSG((ctrl_id == pin_id.ctrl), "Invalid instance for pin."); @@ -252,54 +233,20 @@ FError FFreeRTOSSetupPin(FFreeRTOSFGpio *const instance, const FFreeRTOSGpioPinC (FGPIO_PORT_A == pin_id.port) ? 'a' : 'b', pin_id.pin, (FGPIO_DIR_INPUT == config->mode) ? "IN" : "OUT"); - - /* setup input-pin irq */ - if (TRUE == config->en_irq) + if (FGPIO_DIR_INPUT == FGpioGetDirection(pin)) { FGpioSetInterruptMask(pin, FALSE); /* disable pin irq */ - if (FGPIO_IRQ_BY_PIN == FGpioGetPinIrqSourceType(*pin)) /* setup for pin report interrupt */ - { - FGpioOSSetupPinIRQ(instance, pin, config); - } - else if (FGPIO_IRQ_BY_CONTROLLER == FGpioGetPinIrqSourceType(*pin)) /* setup for ctrl report interrupt */ - { - FGpioOsSetupCtrlIRQ(instance); - } - FGpioRegisterInterruptCB(pin, config->irq_handler, config->irq_args, irq_one_time); /* register intr callback */ } - FGpioSetInterruptType(pin, irq_type); -err_exit: - FGpioOsGiveSema(instance->locker); - return err; -} - -/** - * @name: FFreeRTOSSetIRQ - * @msg: enable/disable interrupt of pin - * @return {*} - * @param {FFreeRTOSFGpio} *instance, freertos gpio instance - * @param {u32} pin_idx, index of pin, use FFREERTOS_GPIO_PIN_INDEX - * @param {boolean} en_irq, TRUE: enable interrupt, FALSE: disable - */ -FError FFreeRTOSSetIRQ(FFreeRTOSFGpio *const instance, u32 pin_idx, boolean en_irq) -{ - FASSERT(instance); - FGpioPinId pin_id; - FGpioOsGetId(pin_idx, &pin_id); /* convert pin id */ - FGpio *ctrl = &instance->ctrl; - u32 ctrl_id = ctrl->config.instance_id; - FASSERT_MSG((ctrl_id == pin_id.ctrl), "Invalid instance for pin."); - FGpioPin *const pin = &instance->pins[pin_id.port][pin_id.pin]; - FError err = FT_SUCCESS; - - err = FGpioOsTakeSema(instance->locker); - if (FFREERTOS_GPIO_OK != err) + /* setup input-pin irq */ + if (TRUE == config->en_irq) { - return err; + FGpioOSSetupGpioIRQ(instance, pin, config); + FGpioRegisterInterruptCB(pin, config->irq_handler, config->irq_args, irq_one_time); /* register intr callback */ + FGpioSetInterruptType(pin, irq_type);/*set pin irq type */ + FGpioSetInterruptMask(pin, config->en_irq);/*enable pin irq */ } - FGpioSetInterruptMask(pin, en_irq); - +err_exit: FGpioOsGiveSema(instance->locker); return err; } diff --git a/drivers/gpio/fgpio/fgpio_os.h b/drivers/gpio/fgpio/fgpio_os.h index 0db068c6a347ad22c0d2482c294af9b0f1437153..2fc1ede535d45717ba9962dd164f7ed3424b2271 100644 --- a/drivers/gpio/fgpio/fgpio_os.h +++ b/drivers/gpio/fgpio/fgpio_os.h @@ -100,9 +100,6 @@ FError FFreeRTOSGpioDeInit(FFreeRTOSFGpio *const instance); /* config and setup pin */ FError FFreeRTOSSetupPin(FFreeRTOSFGpio *const instance, const FFreeRTOSGpioPinConfig *config); -/* enable/disable interrupt of pin */ -FError FFreeRTOSSetIRQ(FFreeRTOSFGpio *const instance, u32 pin, boolean en_irq); - /* set output pin value */ FError FFreeRTOSPinWrite(FFreeRTOSFGpio *const instance, u32 pin, u32 value); diff --git a/example/network/lwip_iperf/Kconfig b/example/network/lwip_iperf/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..0e70e041c9cba5366464bc49789091e399ac94dc --- /dev/null +++ b/example/network/lwip_iperf/Kconfig @@ -0,0 +1,3 @@ +mainmenu "Phytium FreeRTOS Configuration" + +source "$(SDK_DIR)/../freertos.kconfig" \ No newline at end of file diff --git a/example/network/lwip_iperf/README.md b/example/network/lwip_iperf/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4c6a770ddd0473246cb6c243885adda76692d398 --- /dev/null +++ b/example/network/lwip_iperf/README.md @@ -0,0 +1,139 @@ +# LWIP IPERF 测试 + +## 1. 例程介绍 + +>介绍例程的用途,使用场景,相关基本概念,描述用户可以使用例程完成哪些工作
+ +本例程示范了MAC控制器在lwip ipv4模式下的初始化流程,同时通过iperf工具,可以对网卡进行收发数据包带宽测试。 + +### 1.1 网卡iperf client测试例程 (lwip_iperf_client_example.c) +- ipv4模式下初始化开发板上所有网口以及对应网卡控制器 +- 为每个网卡配置静态IPv4地址 +- 开启iperf tcp client,向对应的iperf server发出连接请求 +- 通过iperf 工具充当iperf server,可以测出网卡发送数据包速度大小 + +### 1.2 网卡iperf server测试例程 (lwip_iperf_server_example.c) +- ipv4模式下初始化开发板上所有网口以及对应网卡控制器 +- 为每个网卡配置静态IPv4地址 +- 开启iperf tcp server,等待来自iperf client的连接 +- 通过iperf 工具向对应网卡进行连接请求,可以测出网卡接收数据包速度大小 + + +## 2. 如何使用例程 + +>描述开发平台准备,使用例程配置,构建和下载镜像的过程
+ +本例程需要以下硬件, + +- E2000D/Q Demo板,FT2000/4开发板,D2000开发板,PhytiumPi +- 串口线和串口上位机 + +### 2.1 硬件配置方法 + +>哪些硬件平台是支持的,需要哪些外设,例程与开发板哪些IO口相关等(建议附录开发板照片,展示哪些IO口被引出)
+- 为方便测试,一般需要自带路由器设备。 +- 关于路由器配置,请参考网上相关资料自行配置。 + +### 2.2 SDK配置方法 + +>依赖哪些驱动、库和第三方组件,如何完成配置(列出需要使能的关键配置项)
+ +本例程需要: +- LWIP组件,依赖 USE_LWIP +- Letter Shell组件,依赖 USE_LETTER_SHELL + +对应的配置项是, + +- CONFIG_USE_LWIP +- CONFIG_USE_LETTER_SHELL + +- 本例子已经提供好具体的编译指令,以下进行介绍: + + 1. make 将目录下的工程进行编译 + 2. make clean 将目录下的工程进行清理 + 3. make image 将目录下的工程进行编译,并将生成的elf 复制到目标地址 + 4. make list_kconfig 当前工程支持哪些配置文件 + 5. make load_kconfig LOAD_CONFIG_NAME=`` 将预设配置加载至工程中 + 6. make menuconfig 配置目录下的参数变量 + 7. make backup_kconfig 将目录下的sdkconfig 备份到./configs下 +- 具体使用方法为: + + - 在当前目录下 + - 执行以上指令 + +### 2.3 构建和下载 + +>描述构建、烧录下载镜像的过程,列出相关的命令
+ +本文档将以E2000d demo开发板为例,对于其它平台,使用对应的默认配置 + +- 在host端完成配置 +- 选择目标平台 + +``` +make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_lwip_iperf +``` + +- 选择例程需要的配置 + +``` +make menuconfig +``` + +- 进行编译 + +``` +make +``` + +- 将编译出的镜像放置到tftp目录下 + +``` +make image +``` + +- host侧设置重启host侧tftp服务器 + +``` +sudo service tftpd-hpa restart +``` + +- 开发板侧使用bootelf命令跳转 + +``` +setenv ipaddr 192.168.4.20 +setenv serverip 192.168.4.50 +setenv gatewayip 192.168.4.1 +tftpboot 0x90100000 baremetal.elf +bootelf -p 0x90100000 +``` + +### 2.4 输出与实验现象 + +>描述输入输出情况,列出存在哪些输出,对应的输出是什么(建议附录相关现象图片)
+ +#### 2.4.1 网卡iperf client测试例程 (lwip_iperf_client_example.c) + +``` +lwip iperfc +``` + +![iperf_client_example_result](./fig/iperf_client_example.png) +#### 2.4.2 网卡iperf server测试例程 (lwip_iperf_server_example.c) +``` +lwip iperfs +``` + +![iperf_server_example_result](./fig/iperf_server_example.png) + + +## 3. 如何解决问题 + +>主要记录使用例程中可能会遇到的问题,给出相应的解决方案
+ +## 4. 修改历史记录 + +>记录例程的重大修改记录,标明修改发生的版本号
+ + + diff --git a/example/network/lwip_iperf/configs/d2000_aarch32_test_lwip_iperf.config b/example/network/lwip_iperf/configs/d2000_aarch32_test_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..d95dc2d2115fbf5ff1b95da920cccc08e5d70851 --- /dev/null +++ b/example/network/lwip_iperf/configs/d2000_aarch32_test_lwip_iperf.config @@ -0,0 +1,605 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +# CONFIG_ARCH_ARMV8_AARCH64 is not set +CONFIG_ARCH_ARMV8_AARCH32=y + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH32=y +CONFIG_ARCH_EXECUTION_STATE="aarch32" + +# +# Fpu configuration +# +CONFIG_CRYPTO_NEON_FP_ARMV8=y +# CONFIG_VFPV4 is not set +# CONFIG_VFPV4_D16 is not set +# CONFIG_VFPV3 is not set +# CONFIG_VFPV3_D16 is not set +CONFIG_ARM_MFPU="crypto-neon-fp-armv8" +CONFIG_MFLOAT_ABI_HARD=y +# CONFIG_MFLOAT_ABI_SOFTFP is not set +CONFIG_ARM_MFLOAT_ABI="hard" +# end of Fpu configuration +# end of Compiler configuration + +CONFIG_USE_CACHE=y +# CONFIG_USE_L3CACHE is not set +CONFIG_USE_MMU=y +CONFIG_USE_AARCH64_L1_TO_AARCH32=y +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +CONFIG_TARGET_D2000=y +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="d2000" +CONFIG_SOC_CORE_NUM=8 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="test" +CONFIG_D2000_TEST_BOARD=y + +# +# IO mux configuration when board start up +# +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +CONFIG_ENABLE_IOCTRL=y +# CONFIG_ENABLE_IOPAD is not set +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +# CONFIG_ENABLE_FXMAC is not set +CONFIG_ENABLE_FGMAC=y +CONFIG_FGMAC_PHY_COMMON=y +# CONFIG_FGMAC_PHY_AR803X is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_SVC_STACK_SIZE=0x1000 +CONFIG_SYS_STACK_SIZE=0x1000 +CONFIG_IRQ_STACK_SIZE=0x1000 +CONFIG_ABORT_STACK_SIZE=0x1000 +CONFIG_FIQ_STACK_SIZE=0x1000 +CONFIG_UNDEF_STACK_SIZE=0x1000 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +# CONFIG_FREERTOS_USE_XMAC is not set +CONFIG_FREERTOS_USE_GMAC=y +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +# CONFIG_LWIP_FXMAC is not set +CONFIG_LWIP_FGMAC=y +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/d2000_aarch64_test_lwip_iperf.config b/example/network/lwip_iperf/configs/d2000_aarch64_test_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..3f72053fb9cefbe61b18f55f7db2af55a8d56463 --- /dev/null +++ b/example/network/lwip_iperf/configs/d2000_aarch64_test_lwip_iperf.config @@ -0,0 +1,594 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +CONFIG_ARCH_ARMV8_AARCH64=y +# CONFIG_ARCH_ARMV8_AARCH32 is not set + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH64=y +CONFIG_ARCH_EXECUTION_STATE="aarch64" +CONFIG_ARM_NEON=y +CONFIG_ARM_CRC=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_FLOAT_POINT=y +# CONFIG_GCC_CODE_MODEL_TINY is not set +CONFIG_GCC_CODE_MODEL_SMALL=y +# CONFIG_GCC_CODE_MODEL_LARGE is not set +# end of Compiler configuration + +CONFIG_USE_CACHE=y +# CONFIG_USE_L3CACHE is not set +CONFIG_USE_MMU=y +CONFIG_BOOT_WITH_FLUSH_CACHE=y +# CONFIG_MMU_DEBUG_PRINTS is not set +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +CONFIG_TARGET_D2000=y +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="d2000" +CONFIG_SOC_CORE_NUM=8 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="test" +CONFIG_D2000_TEST_BOARD=y + +# +# IO mux configuration when board start up +# +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +CONFIG_ENABLE_IOCTRL=y +# CONFIG_ENABLE_IOPAD is not set +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +# CONFIG_ENABLE_FXMAC is not set +CONFIG_ENABLE_FGMAC=y +CONFIG_FGMAC_PHY_COMMON=y +# CONFIG_FGMAC_PHY_AR803X is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_STACK_SIZE=0x400 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +# CONFIG_FREERTOS_USE_XMAC is not set +CONFIG_FREERTOS_USE_GMAC=y +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +# CONFIG_LWIP_FXMAC is not set +CONFIG_LWIP_FGMAC=y +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/e2000d_aarch32_demo_lwip_iperf.config b/example/network/lwip_iperf/configs/e2000d_aarch32_demo_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..42cb2efb3d56d8270a83eb0676038548908306fc --- /dev/null +++ b/example/network/lwip_iperf/configs/e2000d_aarch32_demo_lwip_iperf.config @@ -0,0 +1,618 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +# CONFIG_ARCH_ARMV8_AARCH64 is not set +CONFIG_ARCH_ARMV8_AARCH32=y + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH32=y +CONFIG_ARCH_EXECUTION_STATE="aarch32" + +# +# Fpu configuration +# +CONFIG_CRYPTO_NEON_FP_ARMV8=y +# CONFIG_VFPV4 is not set +# CONFIG_VFPV4_D16 is not set +# CONFIG_VFPV3 is not set +# CONFIG_VFPV3_D16 is not set +CONFIG_ARM_MFPU="crypto-neon-fp-armv8" +CONFIG_MFLOAT_ABI_HARD=y +# CONFIG_MFLOAT_ABI_SOFTFP is not set +CONFIG_ARM_MFLOAT_ABI="hard" +# end of Fpu configuration +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_USE_AARCH64_L1_TO_AARCH32=y +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +# CONFIG_TARGET_E2000Q is not set +CONFIG_TARGET_E2000D=y +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="e2000" +CONFIG_TARGET_TYPE_NAME="d" +CONFIG_SOC_CORE_NUM=2 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_E2000D_DEMO_BOARD=y +CONFIG_BOARD_NAME="demo" + +# +# IO mux configuration when board start up +# +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_ADC_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_SVC_STACK_SIZE=0x1000 +CONFIG_SYS_STACK_SIZE=0x1000 +CONFIG_IRQ_STACK_SIZE=0x1000 +CONFIG_ABORT_STACK_SIZE=0x1000 +CONFIG_FIQ_STACK_SIZE=0x1000 +CONFIG_UNDEF_STACK_SIZE=0x1000 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/e2000d_aarch64_demo_lwip_iperf.config b/example/network/lwip_iperf/configs/e2000d_aarch64_demo_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..7f642942b1849c1e9c0d51117755a7ac3f70583d --- /dev/null +++ b/example/network/lwip_iperf/configs/e2000d_aarch64_demo_lwip_iperf.config @@ -0,0 +1,607 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +CONFIG_ARCH_ARMV8_AARCH64=y +# CONFIG_ARCH_ARMV8_AARCH32 is not set + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH64=y +CONFIG_ARCH_EXECUTION_STATE="aarch64" +CONFIG_ARM_NEON=y +CONFIG_ARM_CRC=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_FLOAT_POINT=y +# CONFIG_GCC_CODE_MODEL_TINY is not set +CONFIG_GCC_CODE_MODEL_SMALL=y +# CONFIG_GCC_CODE_MODEL_LARGE is not set +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_BOOT_WITH_FLUSH_CACHE=y +# CONFIG_MMU_DEBUG_PRINTS is not set +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +# CONFIG_TARGET_E2000Q is not set +CONFIG_TARGET_E2000D=y +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="e2000" +CONFIG_TARGET_TYPE_NAME="d" +CONFIG_SOC_CORE_NUM=2 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_E2000D_DEMO_BOARD=y +CONFIG_BOARD_NAME="demo" + +# +# IO mux configuration when board start up +# +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_ADC_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_STACK_SIZE=0x400 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/e2000q_aarch32_demo_lwip_iperf.config b/example/network/lwip_iperf/configs/e2000q_aarch32_demo_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..6bf772a865234bb14aceec58ac45f7fc49ae3dc6 --- /dev/null +++ b/example/network/lwip_iperf/configs/e2000q_aarch32_demo_lwip_iperf.config @@ -0,0 +1,617 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +# CONFIG_ARCH_ARMV8_AARCH64 is not set +CONFIG_ARCH_ARMV8_AARCH32=y + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH32=y +CONFIG_ARCH_EXECUTION_STATE="aarch32" + +# +# Fpu configuration +# +CONFIG_CRYPTO_NEON_FP_ARMV8=y +# CONFIG_VFPV4 is not set +# CONFIG_VFPV4_D16 is not set +# CONFIG_VFPV3 is not set +# CONFIG_VFPV3_D16 is not set +CONFIG_ARM_MFPU="crypto-neon-fp-armv8" +CONFIG_MFLOAT_ABI_HARD=y +# CONFIG_MFLOAT_ABI_SOFTFP is not set +CONFIG_ARM_MFLOAT_ABI="hard" +# end of Fpu configuration +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_USE_AARCH64_L1_TO_AARCH32=y +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +CONFIG_TARGET_E2000Q=y +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="e2000" +CONFIG_TARGET_TYPE_NAME="q" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="demo" +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +CONFIG_E2000Q_DEMO_BOARD=y + +# +# IO mux configuration when board start up +# +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_SVC_STACK_SIZE=0x1000 +CONFIG_SYS_STACK_SIZE=0x1000 +CONFIG_IRQ_STACK_SIZE=0x1000 +CONFIG_ABORT_STACK_SIZE=0x1000 +CONFIG_FIQ_STACK_SIZE=0x1000 +CONFIG_UNDEF_STACK_SIZE=0x1000 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/e2000q_aarch64_demo_lwip_iperf.config b/example/network/lwip_iperf/configs/e2000q_aarch64_demo_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..2489ed5ff41eec619d815c1554af396579cf332a --- /dev/null +++ b/example/network/lwip_iperf/configs/e2000q_aarch64_demo_lwip_iperf.config @@ -0,0 +1,606 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +CONFIG_ARCH_ARMV8_AARCH64=y +# CONFIG_ARCH_ARMV8_AARCH32 is not set + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH64=y +CONFIG_ARCH_EXECUTION_STATE="aarch64" +CONFIG_ARM_NEON=y +CONFIG_ARM_CRC=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_FLOAT_POINT=y +# CONFIG_GCC_CODE_MODEL_TINY is not set +CONFIG_GCC_CODE_MODEL_SMALL=y +# CONFIG_GCC_CODE_MODEL_LARGE is not set +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_BOOT_WITH_FLUSH_CACHE=y +# CONFIG_MMU_DEBUG_PRINTS is not set +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +CONFIG_TARGET_E2000Q=y +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="e2000" +CONFIG_TARGET_TYPE_NAME="q" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="demo" +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +CONFIG_E2000Q_DEMO_BOARD=y + +# +# IO mux configuration when board start up +# +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_STACK_SIZE=0x400 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/ft2004_aarch32_dsk_lwip_iperf.config b/example/network/lwip_iperf/configs/ft2004_aarch32_dsk_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..554ddf28c8040cdf1f94d35393edf5ede8c9658f --- /dev/null +++ b/example/network/lwip_iperf/configs/ft2004_aarch32_dsk_lwip_iperf.config @@ -0,0 +1,605 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +# CONFIG_ARCH_ARMV8_AARCH64 is not set +CONFIG_ARCH_ARMV8_AARCH32=y + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH32=y +CONFIG_ARCH_EXECUTION_STATE="aarch32" + +# +# Fpu configuration +# +CONFIG_CRYPTO_NEON_FP_ARMV8=y +# CONFIG_VFPV4 is not set +# CONFIG_VFPV4_D16 is not set +# CONFIG_VFPV3 is not set +# CONFIG_VFPV3_D16 is not set +CONFIG_ARM_MFPU="crypto-neon-fp-armv8" +CONFIG_MFLOAT_ABI_HARD=y +# CONFIG_MFLOAT_ABI_SOFTFP is not set +CONFIG_ARM_MFLOAT_ABI="hard" +# end of Fpu configuration +# end of Compiler configuration + +CONFIG_USE_CACHE=y +# CONFIG_USE_L3CACHE is not set +CONFIG_USE_MMU=y +CONFIG_USE_AARCH64_L1_TO_AARCH32=y +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +CONFIG_TARGET_FT2004=y +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="ft2004" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="dsk" +CONFIG_FT2004_DSK_BOARD=y + +# +# IO mux configuration when board start up +# +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +CONFIG_ENABLE_IOCTRL=y +# CONFIG_ENABLE_IOPAD is not set +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +# CONFIG_ENABLE_FXMAC is not set +CONFIG_ENABLE_FGMAC=y +CONFIG_FGMAC_PHY_COMMON=y +# CONFIG_FGMAC_PHY_AR803X is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_SVC_STACK_SIZE=0x1000 +CONFIG_SYS_STACK_SIZE=0x1000 +CONFIG_IRQ_STACK_SIZE=0x1000 +CONFIG_ABORT_STACK_SIZE=0x1000 +CONFIG_FIQ_STACK_SIZE=0x1000 +CONFIG_UNDEF_STACK_SIZE=0x1000 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +# CONFIG_FREERTOS_USE_XMAC is not set +CONFIG_FREERTOS_USE_GMAC=y +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +# CONFIG_LWIP_FXMAC is not set +CONFIG_LWIP_FGMAC=y +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/ft2004_aarch64_dsk_lwip_iperf.config b/example/network/lwip_iperf/configs/ft2004_aarch64_dsk_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..a51b54d6185bde5d78c9e1da5e3ea074a063176f --- /dev/null +++ b/example/network/lwip_iperf/configs/ft2004_aarch64_dsk_lwip_iperf.config @@ -0,0 +1,594 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +CONFIG_ARCH_ARMV8_AARCH64=y +# CONFIG_ARCH_ARMV8_AARCH32 is not set + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH64=y +CONFIG_ARCH_EXECUTION_STATE="aarch64" +CONFIG_ARM_NEON=y +CONFIG_ARM_CRC=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_FLOAT_POINT=y +# CONFIG_GCC_CODE_MODEL_TINY is not set +CONFIG_GCC_CODE_MODEL_SMALL=y +# CONFIG_GCC_CODE_MODEL_LARGE is not set +# end of Compiler configuration + +CONFIG_USE_CACHE=y +# CONFIG_USE_L3CACHE is not set +CONFIG_USE_MMU=y +CONFIG_BOOT_WITH_FLUSH_CACHE=y +# CONFIG_MMU_DEBUG_PRINTS is not set +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +# CONFIG_TARGET_PHYTIUMPI is not set +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +CONFIG_TARGET_FT2004=y +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="ft2004" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="dsk" +CONFIG_FT2004_DSK_BOARD=y + +# +# IO mux configuration when board start up +# +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +CONFIG_ENABLE_IOCTRL=y +# CONFIG_ENABLE_IOPAD is not set +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +# CONFIG_ENABLE_FXMAC is not set +CONFIG_ENABLE_FGMAC=y +CONFIG_FGMAC_PHY_COMMON=y +# CONFIG_FGMAC_PHY_AR803X is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_STACK_SIZE=0x400 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +# CONFIG_FREERTOS_USE_XMAC is not set +CONFIG_FREERTOS_USE_GMAC=y +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +# CONFIG_LWIP_FXMAC is not set +CONFIG_LWIP_FGMAC=y +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/phytiumpi_aarch32_firefly_lwip_iperf.config b/example/network/lwip_iperf/configs/phytiumpi_aarch32_firefly_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..e069e248d05ffe10eead7a5c67cac83fce365288 --- /dev/null +++ b/example/network/lwip_iperf/configs/phytiumpi_aarch32_firefly_lwip_iperf.config @@ -0,0 +1,616 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +# CONFIG_ARCH_ARMV8_AARCH64 is not set +CONFIG_ARCH_ARMV8_AARCH32=y + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH32=y +CONFIG_ARCH_EXECUTION_STATE="aarch32" + +# +# Fpu configuration +# +CONFIG_CRYPTO_NEON_FP_ARMV8=y +# CONFIG_VFPV4 is not set +# CONFIG_VFPV4_D16 is not set +# CONFIG_VFPV3 is not set +# CONFIG_VFPV3_D16 is not set +CONFIG_ARM_MFPU="crypto-neon-fp-armv8" +CONFIG_MFLOAT_ABI_HARD=y +# CONFIG_MFLOAT_ABI_SOFTFP is not set +CONFIG_ARM_MFLOAT_ABI="hard" +# end of Fpu configuration +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_USE_AARCH64_L1_TO_AARCH32=y +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +CONFIG_TARGET_PHYTIUMPI=y +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="phytiumpi" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="firefly" +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +CONFIG_FIREFLY_DEMO_BOARD=y + +# +# IO mux configuration when board start up +# +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_SVC_STACK_SIZE=0x1000 +CONFIG_SYS_STACK_SIZE=0x1000 +CONFIG_IRQ_STACK_SIZE=0x1000 +CONFIG_ABORT_STACK_SIZE=0x1000 +CONFIG_FIQ_STACK_SIZE=0x1000 +CONFIG_UNDEF_STACK_SIZE=0x1000 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/configs/phytiumpi_aarch64_firefly_lwip_iperf.config b/example/network/lwip_iperf/configs/phytiumpi_aarch64_firefly_lwip_iperf.config new file mode 100644 index 0000000000000000000000000000000000000000..2778ea057bdced5ead45040ec7fc92ed6deaf83f --- /dev/null +++ b/example/network/lwip_iperf/configs/phytiumpi_aarch64_firefly_lwip_iperf.config @@ -0,0 +1,605 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +CONFIG_ARCH_ARMV8_AARCH64=y +# CONFIG_ARCH_ARMV8_AARCH32 is not set + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH64=y +CONFIG_ARCH_EXECUTION_STATE="aarch64" +CONFIG_ARM_NEON=y +CONFIG_ARM_CRC=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_FLOAT_POINT=y +# CONFIG_GCC_CODE_MODEL_TINY is not set +CONFIG_GCC_CODE_MODEL_SMALL=y +# CONFIG_GCC_CODE_MODEL_LARGE is not set +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_BOOT_WITH_FLUSH_CACHE=y +# CONFIG_MMU_DEBUG_PRINTS is not set +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +CONFIG_TARGET_PHYTIUMPI=y +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="phytiumpi" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="firefly" +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +CONFIG_FIREFLY_DEMO_BOARD=y + +# +# IO mux configuration when board start up +# +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_STACK_SIZE=0x400 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/fig/iperf_client_example.png b/example/network/lwip_iperf/fig/iperf_client_example.png new file mode 100644 index 0000000000000000000000000000000000000000..c1183ac8923d8a446a21179d9890456cbfc2b8f9 Binary files /dev/null and b/example/network/lwip_iperf/fig/iperf_client_example.png differ diff --git a/example/network/lwip_iperf/fig/iperf_server_example.png b/example/network/lwip_iperf/fig/iperf_server_example.png new file mode 100644 index 0000000000000000000000000000000000000000..f5fcade1ad054c3d6a3c2323defe67a5df9440c1 Binary files /dev/null and b/example/network/lwip_iperf/fig/iperf_server_example.png differ diff --git a/example/network/lwip_iperf/inc/lwip_iperf_client_example.h b/example/network/lwip_iperf/inc/lwip_iperf_client_example.h new file mode 100644 index 0000000000000000000000000000000000000000..b918db5def9ea53a0301eb89d426ea5d3a66938f --- /dev/null +++ b/example/network/lwip_iperf/inc/lwip_iperf_client_example.h @@ -0,0 +1,52 @@ +/* + * Copyright : (C) 2023 Phytium Information Technology, Inc. + * All Rights Reserved. + * + * This program is OPEN SOURCE software: you can redistribute it and/or modify it + * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd, + * either version 1.0 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the Phytium Public License for more details. + * + * + * FilePath: lwip_iperf_client_example.h + * Created Date: 2023-10-18 14:37:22 + * Last Modified: 2023-10-24 14:23:07 + * Description: This file is for lwip iperf client example function definition. + * + * Modify History: + * Ver Who Date Changes + * ----- ---------- -------- --------------------------------- + * 1.0 liuzhihong 2023/10/18 first release + */ +#ifndef LWIP_IPERF_CLIENT_EXAMPLE_H +#define LWIP_IPERF_CLIENT_EXAMPLE_H + +/***************************** Include Files *********************************/ +#include "ftypes.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/************************** Constant Definitions *****************************/ + +/**************************** Type Definitions *******************************/ + +/************************** Variable Definitions *****************************/ + +/***************** Macros (Inline Functions) Definitions *********************/ + +/************************** Function Prototypes ******************************/ +/* entry function for lwip iperf client example */ +int LwipIperfClientCreate(void); +void LwipIperfClientDeinit(void); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/example/network/lwip_iperf/inc/lwip_iperf_server_example.h b/example/network/lwip_iperf/inc/lwip_iperf_server_example.h new file mode 100644 index 0000000000000000000000000000000000000000..90bf21ce97e8e157831f6ebd31046ce41bbc18a2 --- /dev/null +++ b/example/network/lwip_iperf/inc/lwip_iperf_server_example.h @@ -0,0 +1,53 @@ +/* + * Copyright : (C) 2023 Phytium Information Technology, Inc. + * All Rights Reserved. + * + * This program is OPEN SOURCE software: you can redistribute it and/or modify it + * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd, + * either version 1.0 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the Phytium Public License for more details. + * + * + * FilePath: lwip_iperf_example.h + * Created Date: 2023-10-16 15:16:18 + * Last Modified: 2023-10-23 16:46:19 + * Description: This file is for lwip iperf server example function definition. + * + * Modify History: + * Ver Who Date Changes + * ----- ---------- -------- --------------------------------- + * 1.0 liuzhihong 2023/10/16 first release + */ + +#ifndef LWIP_IPERF_SERVER_EXAMPLE_H +#define LWIP_IPERF_SERVER_EXAMPLE_H + +/***************************** Include Files *********************************/ +#include "ftypes.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/************************** Constant Definitions *****************************/ + +/**************************** Type Definitions *******************************/ + +/************************** Variable Definitions *****************************/ + +/***************** Macros (Inline Functions) Definitions *********************/ + +/************************** Function Prototypes ******************************/ +/* entry function for lwip iperf server example */ +int LwipIperfServerCreate(void); +void LwipIperfServerDeinit(void); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/example/network/lwip_iperf/main.c b/example/network/lwip_iperf/main.c new file mode 100644 index 0000000000000000000000000000000000000000..88e4a8078b3ebb578e133ddf1b412483e715b381 --- /dev/null +++ b/example/network/lwip_iperf/main.c @@ -0,0 +1,49 @@ +/* + * Copyright : (C) 2023 Phytium Information Technology, Inc. + * All Rights Reserved. + * + * This program is OPEN SOURCE software: you can redistribute it and/or modify it + * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd, + * either version 1.0 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the Phytium Public License for more details. + * + * + * FilePath: main.c + * Created Date: 2023-12-29 14:06:16 + * Last Modified: 2024-03-28 11:18:40 + * Description: This file is for lwip iperf example main functions. + * + * Modify History: + * Ver Who Date Changes + * ----- ---------- -------- --------------------------------- + * 1.0 liuzhihong 2024/3/28 first release + */ + + +#include +#include "FreeRTOS.h" +#include "task.h" +#include "shell_port.h" +#include "lwip/tcpip.h" +int main() +{ + BaseType_t ret = pdPASS; + + ret = LSUserShellTask(); + if (ret != pdPASS) + { + goto FAIL_EXIT; + } + + tcpip_init(NULL, NULL); + vTaskStartScheduler(); /* 启动任务,开启调度 */ + while (1); /* 正常不会执行到这里 */ + +FAIL_EXIT: + printf("Failed 0x%x.\r\n", ret); + + return 0; +} \ No newline at end of file diff --git a/example/network/lwip_iperf/makefile b/example/network/lwip_iperf/makefile new file mode 100644 index 0000000000000000000000000000000000000000..4b4feb160633c9a06bba13a1232ee35038121adc --- /dev/null +++ b/example/network/lwip_iperf/makefile @@ -0,0 +1,28 @@ +PROJECT_DIR = $(CURDIR) +FREERTOS_SDK_DIR = $(CURDIR)/../../../ + +# # 设置启动镜像名 +BOOT_IMG_NAME ?= freertos + +USER_CSRC := main.c +USER_CSRC += $(wildcard src/*.c) + +USER_INCLUDE := $(PROJECT_DIR) \ + $(PROJECT_DIR)/inc + +include $(FREERTOS_SDK_DIR)/tools/makeall.mk + +# 用户定义的编译目标文件上传路径 +ifeq ($(OS),Windows_NT) +USR_BOOT_DIR ?= /d/tftboot +else +USR_BOOT_DIR ?= /mnt/d/tftboot +endif + +image: + $(MAKE) all -j + @cp ./$(IMAGE_OUT_NAME).elf $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).elf +ifdef CONFIG_OUTPUT_BINARY + @cp ./$(IMAGE_OUT_NAME).bin $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).bin +endif + @ls $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).* -l diff --git a/example/network/lwip_iperf/sdkconfig b/example/network/lwip_iperf/sdkconfig new file mode 100644 index 0000000000000000000000000000000000000000..2778ea057bdced5ead45040ec7fc92ed6deaf83f --- /dev/null +++ b/example/network/lwip_iperf/sdkconfig @@ -0,0 +1,605 @@ +CONFIG_USE_FREERTOS=y + +# +# Arch configuration +# +CONFIG_TARGET_ARMv8=y +CONFIG_ARCH_NAME="armv8" + +# +# Arm architecture configuration +# +CONFIG_ARCH_ARMV8_AARCH64=y +# CONFIG_ARCH_ARMV8_AARCH32 is not set + +# +# Compiler configuration +# +CONFIG_ARM_GCC_SELECT=y +# CONFIG_ARM_CLANG_SELECT is not set +CONFIG_TOOLCHAIN_NAME="gcc" +CONFIG_TARGET_ARMV8_AARCH64=y +CONFIG_ARCH_EXECUTION_STATE="aarch64" +CONFIG_ARM_NEON=y +CONFIG_ARM_CRC=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_FLOAT_POINT=y +# CONFIG_GCC_CODE_MODEL_TINY is not set +CONFIG_GCC_CODE_MODEL_SMALL=y +# CONFIG_GCC_CODE_MODEL_LARGE is not set +# end of Compiler configuration + +CONFIG_USE_CACHE=y +CONFIG_USE_MMU=y +CONFIG_BOOT_WITH_FLUSH_CACHE=y +# CONFIG_MMU_DEBUG_PRINTS is not set +# end of Arm architecture configuration +# end of Arch configuration + +# +# Soc configuration +# +CONFIG_TARGET_PHYTIUMPI=y +# CONFIG_TARGET_E2000Q is not set +# CONFIG_TARGET_E2000D is not set +# CONFIG_TARGET_E2000S is not set +# CONFIG_TARGET_FT2004 is not set +# CONFIG_TARGET_D2000 is not set +# CONFIG_TARGET_PD2308 is not set +CONFIG_SOC_NAME="phytiumpi" +CONFIG_SOC_CORE_NUM=4 +CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 +CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 +CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 +CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 +CONFIG_TARGET_E2000=y +CONFIG_DEFAULT_DEBUG_PRINT_UART1=y +# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set +# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set +# end of Soc configuration + +# +# Board Configuration +# +CONFIG_BOARD_NAME="firefly" +# CONFIG_USE_SPI_IOPAD is not set +# CONFIG_USE_GPIO_IOPAD is not set +# CONFIG_USE_CAN_IOPAD is not set +# CONFIG_USE_QSPI_IOPAD is not set +# CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_MIO_IOPAD is not set +# CONFIG_USE_TACHO_IOPAD is not set +# CONFIG_USE_UART_IOPAD is not set +# CONFIG_USE_THIRD_PARTY_IOPAD is not set +CONFIG_FIREFLY_DEMO_BOARD=y + +# +# IO mux configuration when board start up +# +# end of IO mux configuration when board start up + +# CONFIG_CUS_DEMO_BOARD is not set + +# +# Build project name +# +CONFIG_TARGET_NAME="lwip_iperf" +# end of Build project name +# end of Board Configuration + +# +# Sdk common configuration +# +# CONFIG_LOG_VERBOS is not set +# CONFIG_LOG_DEBUG is not set +# CONFIG_LOG_INFO is not set +# CONFIG_LOG_WARN is not set +CONFIG_LOG_ERROR=y +# CONFIG_LOG_NONE is not set +# CONFIG_LOG_EXTRA_INFO is not set +# CONFIG_LOG_DISPALY_CORE_NUM is not set +# CONFIG_BOOTUP_DEBUG_PRINTS is not set +CONFIG_USE_DEFAULT_INTERRUPT_CONFIG=y +CONFIG_INTERRUPT_ROLE_MASTER=y +# CONFIG_INTERRUPT_ROLE_SLAVE is not set +# end of Sdk common configuration + +# +# Image information configuration +# +# CONFIG_IMAGE_INFO is not set +# end of Image information configuration + +# +# Drivers configuration +# +CONFIG_USE_IOMUX=y +# CONFIG_ENABLE_IOCTRL is not set +CONFIG_ENABLE_IOPAD=y +# CONFIG_USE_SPI is not set +# CONFIG_USE_QSPI is not set +CONFIG_USE_SERIAL=y + +# +# Usart Configuration +# +CONFIG_ENABLE_Pl011_UART=y +# end of Usart Configuration + +# CONFIG_USE_GPIO is not set +CONFIG_USE_ETH=y + +# +# Eth Configuration +# +CONFIG_ENABLE_FXMAC=y +# CONFIG_ENABLE_FGMAC is not set +CONFIG_FXMAC_PHY_COMMON=y +# CONFIG_FXMAC_PHY_YT is not set +# end of Eth Configuration + +# CONFIG_USE_CAN is not set +# CONFIG_USE_I2C is not set +# CONFIG_USE_TIMER is not set +# CONFIG_USE_MIO is not set +# CONFIG_USE_SDMMC is not set +# CONFIG_USE_PCIE is not set +# CONFIG_USE_WDT is not set +# CONFIG_USE_DMA is not set +# CONFIG_USE_NAND is not set +# CONFIG_USE_RTC is not set +# CONFIG_USE_SATA is not set +# CONFIG_USE_USB is not set +# CONFIG_USE_ADC is not set +# CONFIG_USE_PWM is not set +# CONFIG_USE_IPC is not set +# CONFIG_USE_MEDIA is not set +# CONFIG_USE_SCMI_MHU is not set +# CONFIG_USE_I2S is not set +# CONFIG_USE_I3C is not set +# end of Drivers configuration + +# +# Build setup +# +CONFIG_CHECK_DEPS=y +CONFIG_OUTPUT_BINARY=y + +# +# Optimization options +# +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y +CONFIG_DEBUG_LINK_MAP=y +# CONFIG_CCACHE is not set +# CONFIG_ARCH_COVERAGE is not set +# CONFIG_LTO_FULL is not set +# end of Optimization options + +# +# Debug options +# +# CONFIG_DEBUG_ENABLE_ALL_WARNING is not set +# CONFIG_WALL_WARNING_ERROR is not set +# CONFIG_STRICT_PROTOTYPES is not set +# CONFIG_DEBUG_SYMBOLS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_OUTPUT_ASM_DIS=y +# CONFIG_ENABLE_WSHADOW is not set +# CONFIG_ENABLE_WUNDEF is not set +CONFIG_DOWNGRADE_DIAG_WARNING=y +# end of Debug options + +# +# Lib +# +CONFIG_USE_COMPILE_CHAIN=y +# CONFIG_USE_NEWLIB is not set +# CONFIG_USE_USER_DEFINED is not set +# end of Lib + +# CONFIG_ENABLE_CXX is not set + +# +# Linker Options +# +CONFIG_DEFAULT_LINKER_SCRIPT=y +# CONFIG_USER_DEFINED_LD is not set +CONFIG_IMAGE_LOAD_ADDRESS=0x80100000 +CONFIG_IMAGE_MAX_LENGTH=0x1000000 +CONFIG_HEAP_SIZE=1 +CONFIG_STACK_SIZE=0x400 +# end of Linker Options +# end of Build setup + +# +# Component Configuration +# + +# +# Freertos Uart Drivers +# +CONFIG_FREERTOS_USE_UART=y +# end of Freertos Uart Drivers + +# +# Freertos Pwm Drivers +# +# CONFIG_FREERTOS_USE_PWM is not set +# end of Freertos Pwm Drivers + +# +# Freertos Qspi Drivers +# +# CONFIG_FREERTOS_USE_QSPI is not set +# end of Freertos Qspi Drivers + +# +# Freertos Wdt Drivers +# +# CONFIG_FREERTOS_USE_WDT is not set +# end of Freertos Wdt Drivers + +# +# Freertos Eth Drivers +# +CONFIG_FREERTOS_USE_XMAC=y +# CONFIG_FREERTOS_USE_GMAC is not set +# end of Freertos Eth Drivers + +# +# Freertos Gpio Drivers +# +# CONFIG_FREERTOS_USE_GPIO is not set +# end of Freertos Gpio Drivers + +# +# Freertos Spim Drivers +# +# CONFIG_FREERTOS_USE_FSPIM is not set +# end of Freertos Spim Drivers + +# +# Freertos DMA Drivers +# +# CONFIG_FREERTOS_USE_FDDMA is not set +# CONFIG_FREERTOS_USE_FGDMA is not set +# end of Freertos DMA Drivers + +# +# Freertos Adc Drivers +# +# CONFIG_FREERTOS_USE_ADC is not set +# end of Freertos Adc Drivers + +# +# Freertos Can Drivers +# +# CONFIG_FREERTOS_USE_CAN is not set +# end of Freertos Can Drivers + +# +# Freertos I2c Drivers +# +# CONFIG_FREERTOS_USE_I2C is not set +# end of Freertos I2c Drivers + +# +# Freertos Mio Drivers +# +# CONFIG_FREERTOS_USE_MIO is not set +# end of Freertos Mio Drivers + +# +# Freertos Timer Drivers +# +# CONFIG_FREERTOS_USE_TIMER is not set +# end of Freertos Timer Drivers + +# +# Freertos Media Drivers +# +# CONFIG_FREERTOS_USE_MEDIA is not set +# end of Freertos Media Drivers + +# +# Freertos I2s Drivers +# +# CONFIG_FREERTOS_USE_I2S is not set +# end of Freertos I2s Drivers +# end of Component Configuration + +# +# Third-party configuration +# +CONFIG_USE_LWIP=y + +# +# LWIP Freertos Port Configuration +# + +# +# LWIP Configuration +# + +# +# LWIP Port Configuration +# +CONFIG_LWIP_FXMAC=y +# CONFIG_LWIP_FGMAC is not set +# CONFIG_LWIP_FSDIF is not set +# end of LWIP Port Configuration + +# CONFIG_LWIP_NO_SYS is not set +CONFIG_LWIP_LOCAL_HOSTNAME="phytium" + +# +# LWIP_APP +# +CONFIG_USE_LWIP_APP_LWIPERF=y +# CONFIG_USE_LWIP_APP_TFTP is not set +# end of LWIP_APP + +# +# Memory configuration +# +# CONFIG_LWIP_USE_MEM_POOL is not set +CONFIG_LWIP_USE_MEM_HEAP=y +# CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set +CONFIG_MEM_SIZE=1 +CONFIG_MEM_ALIGNMENT=64 +# end of Memory configuration + +# +# Pbuf options +# +CONFIG_PBUF_POOL_BUFSIZE=2 +CONFIG_PBUF_POOL_SIZE=1 +# end of Pbuf options + +# +# ARP +# +CONFIG_ARP_QUEUEING_EN=y +# end of ARP + +# +# IPV4 +# +# CONFIG_USE_IPV4_ONLY is not set +CONFIG_LWIP_IP4_REASSEMBLY=y +CONFIG_LWIP_IP4_FRAG=y +# CONFIG_LWIP_IP_FORWARD is not set +CONFIG_IP_REASS_MAX_PBUFS=32 +# end of IPV4 + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_RAW_API_EN=y +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 +# end of LWIP RAW API + +# +# DHCP +# +CONFIG_LWIP_DHCP_ENABLE=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# end of DHCP + +# +# AUTOIP +# +# CONFIG_LWIP_AUTOIP is not set +# end of AUTOIP + +# +# IGMP +# +# CONFIG_LWIP_IGMP_EN is not set +# end of IGMP + +# +# DNS +# +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# end of DNS + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# CONFIG_LWIP_NETBUF_RECVINFO is not set +# end of UDP + +# +# TCP +# +CONFIG_LWIP_TCP_WND_DEFAULT=60000 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_MSS=1460 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=60000 +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +# CONFIG_LWIP_WND_SCALE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +# end of TCP + +# +# Network_Interface +# +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +# end of Network_Interface + +# +# LOOPIF +# +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +# end of LOOPIF + +# +# SLIPIF +# +# CONFIG_LWIP_SLIP_SUPPORT is not set +# end of SLIPIF + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y + +# +# Socket +# +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# end of Socket + +# CONFIG_LWIP_STATS is not set + +# +# PPP +# +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# end of PPP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +# +# IPV6 +# +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# end of IPV6 + +CONFIG_LWIP_DEBUG=y +# CONFIG_LWIP_DEBUG_ESP_LOG is not set +CONFIG_LWIP_NETIF_DEBUG=y +# CONFIG_LWIP_PBUF_DEBUG is not set +# CONFIG_LWIP_ETHARP_DEBUG is not set +# CONFIG_LWIP_API_LIB_DEBUG is not set +# CONFIG_LWIP_SOCKETS_DEBUG is not set +# CONFIG_LWIP_IP_DEBUG is not set +# CONFIG_LWIP_ICMP_DEBUG is not set +# CONFIG_LWIP_DHCP_STATE_DEBUG is not set +# CONFIG_LWIP_DHCP_DEBUG is not set +# CONFIG_LWIP_IP6_DEBUG is not set +# CONFIG_LWIP_ICMP6_DEBUG is not set +# CONFIG_LWIP_TCP_DEBUG is not set +# CONFIG_LWIP_UDP_DEBUG is not set +# CONFIG_LWIP_SNTP_DEBUG is not set +# CONFIG_LWIP_DNS_DEBUG is not set +# end of LWIP Configuration + +# +# Tcp/ip task resource configuration +# +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_PRIO=6 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +# end of Tcp/ip task resource configuration + +# +# lwip port thread Configuration +# +CONFIG_LWIP_PORT_USE_RECEIVE_THREAD=y +CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE=2048 +CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY=5 +CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD=y +CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE=2048 +CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY=5 +CONFIG_LWIP_PORT_DHCP_THREAD=y +CONFIG_LWIP_PORT_DHCP_STACKSIZE=4096 +CONFIG_LWIP_PORT_DHCP_PRIORITY=5 +# end of lwip port thread Configuration +# end of LWIP Freertos Port Configuration + +CONFIG_USE_LETTER_SHELL=y + +# +# Letter Shell Configuration +# +CONFIG_LS_PL011_UART=y +CONFIG_DEFAULT_LETTER_SHELL_USE_UART1=y +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set +# CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set +# end of Letter Shell Configuration + +# CONFIG_USE_AMP is not set +# CONFIG_USE_YMODEM is not set +# CONFIG_USE_SFUD is not set +CONFIG_USE_BACKTRACE=y +# CONFIG_USE_FATFS_0_1_4 is not set +CONFIG_USE_TLSF=y +# CONFIG_USE_SPIFFS is not set +# CONFIG_USE_LITTLE_FS is not set +# CONFIG_USE_LVGL is not set +# CONFIG_USE_FREEMODBUS is not set +# CONFIG_USE_CHERRY_USB is not set +# CONFIG_USE_FSL_SDMMC is not set +# CONFIG_USE_FSL_WIFI is not set +# end of Third-party configuration + +# +# FreeRTOS Kernel Configuration +# +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_MAX_PRIORITIES=32 +CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES=13 +CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES=11 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=32 +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_FREERTOS_USE_TRACE_FACILITY=y +CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set +CONFIG_FREERTOS_TOTAL_HEAP_SIZE=10240 +CONFIG_FREERTOS_TASK_FPU_SUPPORT=1 +# CONFIG_FREERTOS_USE_POSIX is not set +# end of FreeRTOS Kernel Configuration diff --git a/example/network/lwip_iperf/sdkconfig.h b/example/network/lwip_iperf/sdkconfig.h new file mode 100644 index 0000000000000000000000000000000000000000..e873219a4488e63bb98e0c83dc879e78b7ff614e --- /dev/null +++ b/example/network/lwip_iperf/sdkconfig.h @@ -0,0 +1,535 @@ +#ifndef SDK_CONFIG_H__ +#define SDK_CONFIG_H__ + +#define CONFIG_USE_FREERTOS + +/* Arch configuration */ + +#define CONFIG_TARGET_ARMv8 +#define CONFIG_ARCH_NAME "armv8" + +/* Arm architecture configuration */ + +#define CONFIG_ARCH_ARMV8_AARCH64 +/* CONFIG_ARCH_ARMV8_AARCH32 is not set */ + +/* Compiler configuration */ + +#define CONFIG_ARM_GCC_SELECT +/* CONFIG_ARM_CLANG_SELECT is not set */ +#define CONFIG_TOOLCHAIN_NAME "gcc" +#define CONFIG_TARGET_ARMV8_AARCH64 +#define CONFIG_ARCH_EXECUTION_STATE "aarch64" +#define CONFIG_ARM_NEON +#define CONFIG_ARM_CRC +#define CONFIG_ARM_CRYPTO +#define CONFIG_ARM_FLOAT_POINT +/* CONFIG_GCC_CODE_MODEL_TINY is not set */ +#define CONFIG_GCC_CODE_MODEL_SMALL +/* CONFIG_GCC_CODE_MODEL_LARGE is not set */ +/* end of Compiler configuration */ +#define CONFIG_USE_CACHE +#define CONFIG_USE_MMU +#define CONFIG_BOOT_WITH_FLUSH_CACHE +/* CONFIG_MMU_DEBUG_PRINTS is not set */ +/* end of Arm architecture configuration */ +/* end of Arch configuration */ + +/* Soc configuration */ + +#define CONFIG_TARGET_PHYTIUMPI +/* CONFIG_TARGET_E2000Q is not set */ +/* CONFIG_TARGET_E2000D is not set */ +/* CONFIG_TARGET_E2000S is not set */ +/* CONFIG_TARGET_FT2004 is not set */ +/* CONFIG_TARGET_D2000 is not set */ +/* CONFIG_TARGET_PD2308 is not set */ +#define CONFIG_SOC_NAME "phytiumpi" +#define CONFIG_SOC_CORE_NUM 4 +#define CONFIG_F32BIT_MEMORY_ADDRESS 0x80000000 +#define CONFIG_F32BIT_MEMORY_LENGTH 0x80000000 +#define CONFIG_F64BIT_MEMORY_ADDRESS 0x2000000000 +#define CONFIG_F64BIT_MEMORY_LENGTH 0x800000000 +#define CONFIG_TARGET_E2000 +#define CONFIG_DEFAULT_DEBUG_PRINT_UART1 +/* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */ +/* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */ +/* end of Soc configuration */ + +/* Board Configuration */ + +#define CONFIG_BOARD_NAME "firefly" +/* CONFIG_USE_SPI_IOPAD is not set */ +/* CONFIG_USE_GPIO_IOPAD is not set */ +/* CONFIG_USE_CAN_IOPAD is not set */ +/* CONFIG_USE_QSPI_IOPAD is not set */ +/* CONFIG_USE_PWM_IOPAD is not set */ +/* CONFIG_USE_MIO_IOPAD is not set */ +/* CONFIG_USE_TACHO_IOPAD is not set */ +/* CONFIG_USE_UART_IOPAD is not set */ +/* CONFIG_USE_THIRD_PARTY_IOPAD is not set */ +#define CONFIG_FIREFLY_DEMO_BOARD + +/* IO mux configuration when board start up */ + +/* end of IO mux configuration when board start up */ +/* CONFIG_CUS_DEMO_BOARD is not set */ + +/* Build project name */ + +#define CONFIG_TARGET_NAME "lwip_iperf" +/* end of Build project name */ +/* end of Board Configuration */ + +/* Sdk common configuration */ + +/* CONFIG_LOG_VERBOS is not set */ +/* CONFIG_LOG_DEBUG is not set */ +/* CONFIG_LOG_INFO is not set */ +/* CONFIG_LOG_WARN is not set */ +#define CONFIG_LOG_ERROR +/* CONFIG_LOG_NONE is not set */ +/* CONFIG_LOG_EXTRA_INFO is not set */ +/* CONFIG_LOG_DISPALY_CORE_NUM is not set */ +/* CONFIG_BOOTUP_DEBUG_PRINTS is not set */ +#define CONFIG_USE_DEFAULT_INTERRUPT_CONFIG +#define CONFIG_INTERRUPT_ROLE_MASTER +/* CONFIG_INTERRUPT_ROLE_SLAVE is not set */ +/* end of Sdk common configuration */ + +/* Image information configuration */ + +/* CONFIG_IMAGE_INFO is not set */ +/* end of Image information configuration */ + +/* Drivers configuration */ + +#define CONFIG_USE_IOMUX +/* CONFIG_ENABLE_IOCTRL is not set */ +#define CONFIG_ENABLE_IOPAD +/* CONFIG_USE_SPI is not set */ +/* CONFIG_USE_QSPI is not set */ +#define CONFIG_USE_SERIAL + +/* Usart Configuration */ + +#define CONFIG_ENABLE_Pl011_UART +/* end of Usart Configuration */ +/* CONFIG_USE_GPIO is not set */ +#define CONFIG_USE_ETH + +/* Eth Configuration */ + +#define CONFIG_ENABLE_FXMAC +/* CONFIG_ENABLE_FGMAC is not set */ +#define CONFIG_FXMAC_PHY_COMMON +/* CONFIG_FXMAC_PHY_YT is not set */ +/* end of Eth Configuration */ +/* CONFIG_USE_CAN is not set */ +/* CONFIG_USE_I2C is not set */ +/* CONFIG_USE_TIMER is not set */ +/* CONFIG_USE_MIO is not set */ +/* CONFIG_USE_SDMMC is not set */ +/* CONFIG_USE_PCIE is not set */ +/* CONFIG_USE_WDT is not set */ +/* CONFIG_USE_DMA is not set */ +/* CONFIG_USE_NAND is not set */ +/* CONFIG_USE_RTC is not set */ +/* CONFIG_USE_SATA is not set */ +/* CONFIG_USE_USB is not set */ +/* CONFIG_USE_ADC is not set */ +/* CONFIG_USE_PWM is not set */ +/* CONFIG_USE_IPC is not set */ +/* CONFIG_USE_MEDIA is not set */ +/* CONFIG_USE_SCMI_MHU is not set */ +/* CONFIG_USE_I2S is not set */ +/* CONFIG_USE_I3C is not set */ +/* end of Drivers configuration */ + +/* Build setup */ + +#define CONFIG_CHECK_DEPS +#define CONFIG_OUTPUT_BINARY + +/* Optimization options */ + +/* CONFIG_DEBUG_NOOPT is not set */ +/* CONFIG_DEBUG_CUSTOMOPT is not set */ +#define CONFIG_DEBUG_FULLOPT +#define CONFIG_DEBUG_OPT_UNUSED_SECTIONS +#define CONFIG_DEBUG_LINK_MAP +/* CONFIG_CCACHE is not set */ +/* CONFIG_ARCH_COVERAGE is not set */ +/* CONFIG_LTO_FULL is not set */ +/* end of Optimization options */ + +/* Debug options */ + +/* CONFIG_DEBUG_ENABLE_ALL_WARNING is not set */ +/* CONFIG_WALL_WARNING_ERROR is not set */ +/* CONFIG_STRICT_PROTOTYPES is not set */ +/* CONFIG_DEBUG_SYMBOLS is not set */ +/* CONFIG_FRAME_POINTER is not set */ +#define CONFIG_OUTPUT_ASM_DIS +/* CONFIG_ENABLE_WSHADOW is not set */ +/* CONFIG_ENABLE_WUNDEF is not set */ +#define CONFIG_DOWNGRADE_DIAG_WARNING +/* end of Debug options */ + +/* Lib */ + +#define CONFIG_USE_COMPILE_CHAIN +/* CONFIG_USE_NEWLIB is not set */ +/* CONFIG_USE_USER_DEFINED is not set */ +/* end of Lib */ +/* CONFIG_ENABLE_CXX is not set */ + +/* Linker Options */ + +#define CONFIG_DEFAULT_LINKER_SCRIPT +/* CONFIG_USER_DEFINED_LD is not set */ +#define CONFIG_IMAGE_LOAD_ADDRESS 0x80100000 +#define CONFIG_IMAGE_MAX_LENGTH 0x1000000 +#define CONFIG_HEAP_SIZE 1 +#define CONFIG_STACK_SIZE 0x400 +/* end of Linker Options */ +/* end of Build setup */ + +/* Component Configuration */ + +/* Freertos Uart Drivers */ + +#define CONFIG_FREERTOS_USE_UART +/* end of Freertos Uart Drivers */ + +/* Freertos Pwm Drivers */ + +/* CONFIG_FREERTOS_USE_PWM is not set */ +/* end of Freertos Pwm Drivers */ + +/* Freertos Qspi Drivers */ + +/* CONFIG_FREERTOS_USE_QSPI is not set */ +/* end of Freertos Qspi Drivers */ + +/* Freertos Wdt Drivers */ + +/* CONFIG_FREERTOS_USE_WDT is not set */ +/* end of Freertos Wdt Drivers */ + +/* Freertos Eth Drivers */ + +#define CONFIG_FREERTOS_USE_XMAC +/* CONFIG_FREERTOS_USE_GMAC is not set */ +/* end of Freertos Eth Drivers */ + +/* Freertos Gpio Drivers */ + +/* CONFIG_FREERTOS_USE_GPIO is not set */ +/* end of Freertos Gpio Drivers */ + +/* Freertos Spim Drivers */ + +/* CONFIG_FREERTOS_USE_FSPIM is not set */ +/* end of Freertos Spim Drivers */ + +/* Freertos DMA Drivers */ + +/* CONFIG_FREERTOS_USE_FDDMA is not set */ +/* CONFIG_FREERTOS_USE_FGDMA is not set */ +/* end of Freertos DMA Drivers */ + +/* Freertos Adc Drivers */ + +/* CONFIG_FREERTOS_USE_ADC is not set */ +/* end of Freertos Adc Drivers */ + +/* Freertos Can Drivers */ + +/* CONFIG_FREERTOS_USE_CAN is not set */ +/* end of Freertos Can Drivers */ + +/* Freertos I2c Drivers */ + +/* CONFIG_FREERTOS_USE_I2C is not set */ +/* end of Freertos I2c Drivers */ + +/* Freertos Mio Drivers */ + +/* CONFIG_FREERTOS_USE_MIO is not set */ +/* end of Freertos Mio Drivers */ + +/* Freertos Timer Drivers */ + +/* CONFIG_FREERTOS_USE_TIMER is not set */ +/* end of Freertos Timer Drivers */ + +/* Freertos Media Drivers */ + +/* CONFIG_FREERTOS_USE_MEDIA is not set */ +/* end of Freertos Media Drivers */ + +/* Freertos I2s Drivers */ + +/* CONFIG_FREERTOS_USE_I2S is not set */ +/* end of Freertos I2s Drivers */ +/* end of Component Configuration */ + +/* Third-party configuration */ + +#define CONFIG_USE_LWIP + +/* LWIP Freertos Port Configuration */ + +/* LWIP Configuration */ + +/* LWIP Port Configuration */ + +#define CONFIG_LWIP_FXMAC +/* CONFIG_LWIP_FGMAC is not set */ +/* CONFIG_LWIP_FSDIF is not set */ +/* end of LWIP Port Configuration */ +/* CONFIG_LWIP_NO_SYS is not set */ +#define CONFIG_LWIP_LOCAL_HOSTNAME "phytium" + +/* LWIP_APP */ + +#define CONFIG_USE_LWIP_APP_LWIPERF +/* CONFIG_USE_LWIP_APP_TFTP is not set */ +/* end of LWIP_APP */ + +/* Memory configuration */ + +/* CONFIG_LWIP_USE_MEM_POOL is not set */ +#define CONFIG_LWIP_USE_MEM_HEAP +/* CONFIG_LWIP_USE_MEM_HEAP_DEBUG is not set */ +#define CONFIG_MEM_SIZE 1 +#define CONFIG_MEM_ALIGNMENT 64 +/* end of Memory configuration */ + +/* Pbuf options */ + +#define CONFIG_PBUF_POOL_BUFSIZE 2 +#define CONFIG_PBUF_POOL_SIZE 1 +/* end of Pbuf options */ + +/* ARP */ + +#define CONFIG_ARP_QUEUEING_EN +/* end of ARP */ + +/* IPV4 */ + +/* CONFIG_USE_IPV4_ONLY is not set */ +#define CONFIG_LWIP_IP4_REASSEMBLY +#define CONFIG_LWIP_IP4_FRAG +/* CONFIG_LWIP_IP_FORWARD is not set */ +#define CONFIG_IP_REASS_MAX_PBUFS 32 +/* end of IPV4 */ + +/* ICMP */ + +#define CONFIG_LWIP_ICMP +#define CONFIG_LWIP_MULTICAST_PING +#define CONFIG_LWIP_BROADCAST_PING +/* end of ICMP */ + +/* LWIP RAW API */ + +#define CONFIG_LWIP_RAW_API_EN +#define CONFIG_LWIP_MAX_RAW_PCBS 16 +#define CONFIG_LWIP_RAW_RECVMBOX_SIZE 6 +/* end of LWIP RAW API */ + +/* DHCP */ + +#define CONFIG_LWIP_DHCP_ENABLE +/* CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set */ +/* CONFIG_LWIP_DHCP_GET_NTP_SRV is not set */ +/* CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set */ +/* CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set */ +#define CONFIG_LWIP_DHCP_OPTIONS_LEN 68 +#define CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID +/* end of DHCP */ + +/* AUTOIP */ + +/* CONFIG_LWIP_AUTOIP is not set */ +/* end of AUTOIP */ + +/* IGMP */ + +/* CONFIG_LWIP_IGMP_EN is not set */ +/* end of IGMP */ + +/* DNS */ + +#define CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES +/* end of DNS */ + +/* UDP */ + +#define CONFIG_LWIP_MAX_UDP_PCBS 16 +#define CONFIG_LWIP_UDP_RECVMBOX_SIZE 6 +/* CONFIG_LWIP_NETBUF_RECVINFO is not set */ +/* end of UDP */ + +/* TCP */ + +#define CONFIG_LWIP_TCP_WND_DEFAULT 60000 +#define CONFIG_LWIP_TCP_MAXRTX 12 +#define CONFIG_LWIP_TCP_SYNMAXRTX 12 +#define CONFIG_LWIP_TCP_QUEUE_OOSEQ +/* CONFIG_LWIP_TCP_SACK_OUT is not set */ +#define CONFIG_LWIP_TCP_MSS 1460 +#define CONFIG_LWIP_TCP_SND_BUF_DEFAULT 60000 +#define CONFIG_LWIP_TCP_OVERSIZE_MSS +/* CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set */ +/* CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set */ +#define CONFIG_LWIP_TCP_TMR_INTERVAL 250 +#define CONFIG_LWIP_TCP_MSL 60000 +/* CONFIG_LWIP_WND_SCALE is not set */ +#define CONFIG_LWIP_TCP_RTO_TIME 1500 +#define CONFIG_LWIP_MAX_ACTIVE_TCP 16 +#define CONFIG_LWIP_MAX_LISTENING_TCP 16 +#define CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION +#define CONFIG_LWIP_TCP_RECVMBOX_SIZE 6 +/* end of TCP */ + +/* Network_Interface */ + +/* CONFIG_LWIP_NETIF_API is not set */ +/* CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set */ +/* end of Network_Interface */ + +/* LOOPIF */ + +#define CONFIG_LWIP_NETIF_LOOPBACK +#define CONFIG_LWIP_LOOPBACK_MAX_PBUFS 8 +/* end of LOOPIF */ + +/* SLIPIF */ + +/* CONFIG_LWIP_SLIP_SUPPORT is not set */ +/* end of SLIPIF */ +#define CONFIG_LWIP_TCPIP_CORE_LOCKING + +/* Socket */ + +#define CONFIG_LWIP_MAX_SOCKETS 10 +/* CONFIG_LWIP_SO_LINGER is not set */ +#define CONFIG_LWIP_SO_REUSE +#define CONFIG_LWIP_SO_REUSE_RXTOALL +/* end of Socket */ +/* CONFIG_LWIP_STATS is not set */ + +/* PPP */ + +/* CONFIG_LWIP_PPP_SUPPORT is not set */ +#define CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE 3 +#define CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS 5 +/* end of PPP */ + +/* Checksums */ + +/* CONFIG_LWIP_CHECKSUM_CHECK_IP is not set */ +/* CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set */ +#define CONFIG_LWIP_CHECKSUM_CHECK_ICMP +/* end of Checksums */ + +/* IPV6 */ + +#define CONFIG_LWIP_IPV6 +/* CONFIG_LWIP_IPV6_AUTOCONFIG is not set */ +#define CONFIG_LWIP_IPV6_NUM_ADDRESSES 3 +/* CONFIG_LWIP_IPV6_FORWARD is not set */ +#define CONFIG_LWIP_IP6_FRAG +/* CONFIG_LWIP_IP6_REASSEMBLY is not set */ +/* end of IPV6 */ +#define CONFIG_LWIP_DEBUG +/* CONFIG_LWIP_DEBUG_ESP_LOG is not set */ +#define CONFIG_LWIP_NETIF_DEBUG +/* CONFIG_LWIP_PBUF_DEBUG is not set */ +/* CONFIG_LWIP_ETHARP_DEBUG is not set */ +/* CONFIG_LWIP_API_LIB_DEBUG is not set */ +/* CONFIG_LWIP_SOCKETS_DEBUG is not set */ +/* CONFIG_LWIP_IP_DEBUG is not set */ +/* CONFIG_LWIP_ICMP_DEBUG is not set */ +/* CONFIG_LWIP_DHCP_STATE_DEBUG is not set */ +/* CONFIG_LWIP_DHCP_DEBUG is not set */ +/* CONFIG_LWIP_IP6_DEBUG is not set */ +/* CONFIG_LWIP_ICMP6_DEBUG is not set */ +/* CONFIG_LWIP_TCP_DEBUG is not set */ +/* CONFIG_LWIP_UDP_DEBUG is not set */ +/* CONFIG_LWIP_SNTP_DEBUG is not set */ +/* CONFIG_LWIP_DNS_DEBUG is not set */ +/* end of LWIP Configuration */ + +/* Tcp/ip task resource configuration */ + +#define CONFIG_LWIP_TCPIP_TASK_STACK_SIZE 3072 +#define CONFIG_LWIP_TCPIP_TASK_PRIO 6 +#define CONFIG_LWIP_TCPIP_RECVMBOX_SIZE 32 +/* end of Tcp/ip task resource configuration */ + +/* lwip port thread Configuration */ + +#define CONFIG_LWIP_PORT_USE_RECEIVE_THREAD +#define CONFIG_LWIP_PORT_RECEIVE_THREAD_STACKSIZE 2048 +#define CONFIG_LWIP_PORT_RECEIVE_THREAD_PRIORITY 5 +#define CONFIG_LWIP_PORT_USE_LINK_DETECT_THREAD +#define CONFIG_LWIP_PORT_LINK_DETECT_STACKSIZE 2048 +#define CONFIG_LWIP_PORT_LINK_DETECT_PRIORITY 5 +#define CONFIG_LWIP_PORT_DHCP_THREAD +#define CONFIG_LWIP_PORT_DHCP_STACKSIZE 4096 +#define CONFIG_LWIP_PORT_DHCP_PRIORITY 5 +/* end of lwip port thread Configuration */ +/* end of LWIP Freertos Port Configuration */ +#define CONFIG_USE_LETTER_SHELL + +/* Letter Shell Configuration */ + +#define CONFIG_LS_PL011_UART +#define CONFIG_DEFAULT_LETTER_SHELL_USE_UART1 +/* CONFIG_DEFAULT_LETTER_SHELL_USE_UART0 is not set */ +/* CONFIG_DEFAULT_LETTER_SHELL_USE_UART2 is not set */ +/* end of Letter Shell Configuration */ +/* CONFIG_USE_AMP is not set */ +/* CONFIG_USE_YMODEM is not set */ +/* CONFIG_USE_SFUD is not set */ +#define CONFIG_USE_BACKTRACE +/* CONFIG_USE_FATFS_0_1_4 is not set */ +#define CONFIG_USE_TLSF +/* CONFIG_USE_SPIFFS is not set */ +/* CONFIG_USE_LITTLE_FS is not set */ +/* CONFIG_USE_LVGL is not set */ +/* CONFIG_USE_FREEMODBUS is not set */ +/* CONFIG_USE_CHERRY_USB is not set */ +/* CONFIG_USE_FSL_SDMMC is not set */ +/* CONFIG_USE_FSL_WIFI is not set */ +/* end of Third-party configuration */ + +/* FreeRTOS Kernel Configuration */ + +#define CONFIG_FREERTOS_OPTIMIZED_SCHEDULER +#define CONFIG_FREERTOS_HZ 1000 +#define CONFIG_FREERTOS_MAX_PRIORITIES 32 +#define CONFIG_FREERTOS_KERNEL_INTERRUPT_PRIORITIES 13 +#define CONFIG_FREERTOS_MAX_API_CALL_INTERRUPT_PRIORITIES 11 +#define CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS 1 +#define CONFIG_FREERTOS_MINIMAL_TASK_STACKSIZE 1024 +#define CONFIG_FREERTOS_MAX_TASK_NAME_LEN 32 +#define CONFIG_FREERTOS_TIMER_TASK_PRIORITY 1 +#define CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH 2048 +#define CONFIG_FREERTOS_TIMER_QUEUE_LENGTH 10 +#define CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE 0 +#define CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS +#define CONFIG_FREERTOS_USE_TRACE_FACILITY +#define CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS +/* CONFIG_FREERTOS_USE_TICKLESS_IDLE is not set */ +#define CONFIG_FREERTOS_TOTAL_HEAP_SIZE 10240 +#define CONFIG_FREERTOS_TASK_FPU_SUPPORT 1 +/* CONFIG_FREERTOS_USE_POSIX is not set */ +/* end of FreeRTOS Kernel Configuration */ + +#endif diff --git a/example/network/lwip_iperf/src/cmd_lwip_iperf.c b/example/network/lwip_iperf/src/cmd_lwip_iperf.c new file mode 100644 index 0000000000000000000000000000000000000000..00005e5f9e95211dc71e260824237a4515081520 --- /dev/null +++ b/example/network/lwip_iperf/src/cmd_lwip_iperf.c @@ -0,0 +1,111 @@ +/* + * Copyright : (C) 2023 Phytium Information Technology, Inc. + * All Rights Reserved. + * + * This program is OPEN SOURCE software: you can redistribute it and/or modify it + * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd, + * either version 1.0 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the Phytium Public License for more details. + * + * + * FilePath: cmd_lwip_iperf.c + * Created Date: 2023-10-16 15:16:18 + * Last Modified: 2024-04-10 17:34:09 + * Description: This file is for lwip iperf example cmd catalogue. + * + * Modify History: + * Ver Who Date Changes + * ----- ---------- -------- --------------------------------- + * 1.0 liuzhihong 2023/10/16 first release + */ + +#include +#include + +#include "sdkconfig.h" +#ifndef SDK_CONFIG_H__ + #warning "Please include sdkconfig.h" +#endif + +#ifdef CONFIG_USE_LETTER_SHELL +#include "shell.h" +#include "strto.h" + +#include "lwip_iperf_client_example.h" +#include "lwip_iperf_server_example.h" + + + + +#define EXAMPLE_IDLE 0 +#define CLIENT_EXAMPLE_RUNNING 1 +#define SERVER_EXAMPLE_RUNNING 2 + + +static u32 init_flag_mask = EXAMPLE_IDLE; + + +static void LwipIperfExampleCheckState(void) +{ + switch(init_flag_mask) + { + case CLIENT_EXAMPLE_RUNNING: + printf("Lwip iperf client example is running, we need to deinitialize it first! \r\n"); + LwipIperfClientDeinit(); + init_flag_mask=EXAMPLE_IDLE; + break; + case SERVER_EXAMPLE_RUNNING: + printf("Lwip iperf server example is running, we need to deinitialize it first! \r\n"); + LwipIperfServerDeinit(); + init_flag_mask=EXAMPLE_IDLE; + break; + default: + break; + } +} + +/* usage info function for lwip iperf example */ +static void LwipIperfExampleUsage(void) +{ + printf("Usage:\r\n"); + printf("lwip iperfc \r\n"); + printf("-- run lwip ipv4 mode example to initialize mac controller and run iperf client test\r\n"); + printf("lwip iperfs \r\n"); + printf("-- run lwip ipv4 mode example to initialize mac controller and run iperf server test\r\n"); +} + +/* entry function for lwip iperf example */ +static int LwipIperfExampleEntry(int argc, char *argv[]) +{ + int ret = 0; + + /* check input args of example, exit if invaild */ + if (argc < 2) + { + LwipIperfExampleUsage(); + return -1; + } + + /* parser example input args and run example */ + if (!strcmp(argv[1], "iperfc")) + { + LwipIperfExampleCheckState(); + ret = LwipIperfClientCreate(); + init_flag_mask = CLIENT_EXAMPLE_RUNNING; + } + else if (!strcmp(argv[1], "iperfs")) + { + LwipIperfExampleCheckState(); + ret = LwipIperfServerCreate(); + init_flag_mask = SERVER_EXAMPLE_RUNNING; + } + + return ret; +} + +/* register command for lwip iperf example */ +SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), lwip, LwipIperfExampleEntry, lwip iperf example); +#endif \ No newline at end of file diff --git a/example/network/lwip_iperf/src/lwip_iperf_client_example.c b/example/network/lwip_iperf/src/lwip_iperf_client_example.c new file mode 100644 index 0000000000000000000000000000000000000000..417e82b94cb53e3bc7515ac21854b2e45c001f73 --- /dev/null +++ b/example/network/lwip_iperf/src/lwip_iperf_client_example.c @@ -0,0 +1,211 @@ +/* + * Copyright : (C) 2023 Phytium Information Technology, Inc. + * All Rights Reserved. + * + * This program is OPEN SOURCE software: you can redistribute it and/or modify it + * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd, + * either version 1.0 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the Phytium Public License for more details. + * + * + * FilePath: lwip_iperf_client_example.c + * Created Date: 2023-10-18 14:30:04 + * Last Modified: 2023-12-29 14:31:20 + * Description: This file is for lwip iperf client example function implementation. + * + * Modify History: + * Ver Who Date Changes + * ----- ---------- -------- --------------------------------- + * 1.0 liuzhihong 2023/10/18 first release + */ +#include +#include +#include "strto.h" +#include "sdkconfig.h" +#include "ftypes.h" +#include "fassert.h" +#include "fparameters.h" +#include "eth_board.h" +#ifndef SDK_CONFIG_H__ + #error "Please include sdkconfig.h first" +#endif + + +#include "lwip_port.h" +#include "lwip/ip4_addr.h" +#include "lwip/init.h" +#include "netif/ethernet.h" +#include "lwip/netif.h" +#include "lwip/tcpip.h" +#include "lwip/inet.h" +#include "lwiperf.h" + +#define LWIPERF_TCP_PORT_REMOTE 5001 +const ip_addr_t remote= IPADDR4_INIT_BYTES(192,168,4,50); + +#define ETH_NAME_PREFIX 'e' + +#define CONFIG_DEFAULT_INIT(config,driver_config,instance_id,interface_type) \ + .config.magic_code = LWIP_PORT_CONFIG_MAGIC_CODE, \ + .config.driver_type = driver_config, \ + .config.mac_instance = instance_id, \ + .config.mii_interface = interface_type, \ + .config.autonegotiation = 1, \ + .config.phy_speed = LWIP_PORT_SPEED_1000M, \ + .config.phy_duplex = LWIP_PORT_FULL_DUPLEX, \ + .config.capability = LWIP_PORT_MODE_NAIVE, + + + +typedef struct +{ + UserConfig lwip_mac_config; + u32 dhcp_en; + char* ipaddr; + char* netmask; + char* gw; + unsigned char mac_address[6]; + struct netif netif; +} BoardMacConfig; + +static BoardMacConfig board_mac_config[MAC_NUM] = + { + #if defined(MAC_NUM0) + { + CONFIG_DEFAULT_INIT(lwip_mac_config,MAC_NUM0_LWIP_PORT_TYPE,MAC_NUM0_CONTROLLER,MAC_NUM0_MII_INTERFACE) + .dhcp_en=0, + .ipaddr="192.168.4.10", + .gw="192.168.4.1", + .netmask="255.255.255.0", + .mac_address={0x98, 0x0e, 0x24, 0x00, 0x11, 0x0}, + }, + #endif + #if defined(MAC_NUM1) + { + CONFIG_DEFAULT_INIT(lwip_mac_config,MAC_NUM1_LWIP_PORT_TYPE,MAC_NUM1_CONTROLLER,MAC_NUM1_MII_INTERFACE) + .dhcp_en=0, + .ipaddr="192.168.4.11", + .gw="192.168.4.1", + .netmask="255.255.255.0", + .mac_address={0x98, 0x0e, 0x24, 0x00, 0x11, 0x1}, + }, + #endif +}; + + + +static void SetIP(ip_addr_t* ipaddr,ip_addr_t* gw,ip_addr_t* netmask,u32 mac_id) +{ + + if(inet_aton(board_mac_config[mac_id].ipaddr,ipaddr)==0) + printf("The addr of ipaddr is wrong\r\n"); + if(inet_aton(board_mac_config[mac_id].gw,gw)==0) + printf("The addr of gw is wrong\r\n"); + if(inet_aton(board_mac_config[mac_id].netmask,netmask)==0) + printf("The addr of netmask is wrong\r\n"); + +} + +int LwipIperfClientInitTask(void) +{ + FError ret = FT_SUCCESS; + /* mac init */ + for (int i = 0; i < MAC_NUM; i++) + { + + struct netif *netif_p = NULL; + ip_addr_t ipaddr,netmask, gw; + board_mac_config[i].lwip_mac_config.name[0] = ETH_NAME_PREFIX; + itoa(board_mac_config[i].lwip_mac_config.mac_instance, &(board_mac_config[i].lwip_mac_config.name[1]), 10); + + /* mac ip addr set: char* -> ip_addr_t */ + SetIP(&ipaddr,&gw,&netmask,i); + /* ******************************************************************* */ + + netif_p= &board_mac_config[i].netif; + /* Add network interface to the netif_list, and set it as default */ + if (!LwipPortAdd(netif_p, &ipaddr, &netmask, &gw, board_mac_config[i].mac_address, (UserConfig *)&board_mac_config[i])) + { + printf("Error adding N/W interface %d.\n\r",board_mac_config[i].lwip_mac_config.mac_instance); + return ERR_GENERAL; + } + printf("LwipPortAdd mac_instance %d is over.\n\r",board_mac_config[i].lwip_mac_config.mac_instance); + + netif_set_default(netif_p); + + if (netif_is_link_up(netif_p)) + { + /* 当netif完全配置好时,必须调用该函数 */ + netif_set_up(netif_p); + if (board_mac_config[i].dhcp_en == 1) + { + LwipPortDhcpSet(netif_p, TRUE); + } + } + else + { + /* 当netif链接关闭时,必须调用该函数 */ + netif_set_down(netif_p); + } + + + } + printf("Network setup complete.\n"); + + printf("Now start iperf client test\r\n"); + if(lwiperf_start_tcp_client(&remote, LWIPERF_TCP_PORT_REMOTE, LWIPERF_CLIENT, + NULL, NULL)) + { + printf("Start iperf client test success !!! \r\n"); + } + else + { + printf("Start iperf client test failed !!! \r\n"); + return ERR_GENERAL; + } + + + if (ret == FT_SUCCESS) + { + printf("%s@%d: Lwip iperf example success !!! \r\n", __func__, __LINE__); + printf("[system_example_pass]\r\n"); + } + else + { + printf("%s@%d: Lwip iperf example failed !!!, ret = %d \r\n", __func__, __LINE__, ret); + } + + vTaskDelete(NULL); + return 0; +} + + +void LwipIperfClientCreate(void) +{ + BaseType_t ret; + ret = xTaskCreate((TaskFunction_t)LwipIperfClientInitTask, /* 任务入口函数 */ + (const char *)"LwipIperfClientInitTask", /* 任务名字 */ + (uint16_t)2048, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ + NULL); /* 任务控制块指针 */ + + FASSERT_MSG(ret == pdPASS, "LwipTestCreate Task creation is failed"); +} + +void LwipIperfClientDeinit(void) +{ + printf("Now reset all active iperf session. \r\n"); + lwiperf_reset(); + printf("Reset all active iperf session complete! \r\n"); + for (int i = 0; i < MAC_NUM; i++) + { + struct netif *netif_p = NULL; + netif_p=&board_mac_config[i].netif; + LwipPortStop(netif_p,board_mac_config[i].dhcp_en); + } + +} \ No newline at end of file diff --git a/example/network/lwip_iperf/src/lwip_iperf_server_example.c b/example/network/lwip_iperf/src/lwip_iperf_server_example.c new file mode 100644 index 0000000000000000000000000000000000000000..45f517550e86c1f3d404dbf76a9ccb5e07e84fa7 --- /dev/null +++ b/example/network/lwip_iperf/src/lwip_iperf_server_example.c @@ -0,0 +1,209 @@ +/* + * Copyright : (C) 2023 Phytium Information Technology, Inc. + * All Rights Reserved. + * + * This program is OPEN SOURCE software: you can redistribute it and/or modify it + * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd, + * either version 1.0 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the Phytium Public License for more details. + * + * + * FilePath: lwip_iperf_server_example.c + * Created Date: 2023-10-16 15:16:18 + * Last Modified: 2023-12-29 14:48:25 + * Description: This file is for lwip iperf server example function implementation. + * + * Modify History: + * Ver Who Date Changes + * ----- ---------- -------- --------------------------------- + * 1.0 liuzhihong 2023/10/16 first release + */ + + +#include +#include +#include "strto.h" +#include "sdkconfig.h" +#include "ftypes.h" +#include "fassert.h" +#include "fparameters.h" +#include "eth_board.h" +#ifndef SDK_CONFIG_H__ + #error "Please include sdkconfig.h first" +#endif + + +#include "lwip_port.h" +#include "lwip/ip4_addr.h" +#include "lwip/init.h" +#include "netif/ethernet.h" +#include "lwip/netif.h" +#include "lwip/tcpip.h" +#include "lwip/inet.h" +#include "lwiperf.h" + +#define LWIPERF_TCP_LISTEN_PORT 5001 + +#define ETH_NAME_PREFIX 'e' + +#define CONFIG_DEFAULT_INIT(config,driver_config,instance_id,interface_type) \ + .config.magic_code = LWIP_PORT_CONFIG_MAGIC_CODE, \ + .config.driver_type = driver_config, \ + .config.mac_instance = instance_id, \ + .config.mii_interface = interface_type, \ + .config.autonegotiation = 1, \ + .config.phy_speed = LWIP_PORT_SPEED_1000M, \ + .config.phy_duplex = LWIP_PORT_FULL_DUPLEX, \ + .config.capability = LWIP_PORT_MODE_NAIVE, + + + +typedef struct +{ + UserConfig lwip_mac_config; + u32 dhcp_en; + char* ipaddr; + char* netmask; + char* gw; + unsigned char mac_address[6]; + struct netif netif; +} BoardMacConfig; + +static BoardMacConfig board_mac_config[MAC_NUM] = + { + #if defined(MAC_NUM0) + { + CONFIG_DEFAULT_INIT(lwip_mac_config,MAC_NUM0_LWIP_PORT_TYPE,MAC_NUM0_CONTROLLER,MAC_NUM0_MII_INTERFACE) + .dhcp_en=0, + .ipaddr="192.168.4.10", + .gw="192.168.4.1", + .netmask="255.255.255.0", + .mac_address={0x98, 0x0e, 0x24, 0x00, 0x11, 0x0}, + }, + #endif + #if defined(MAC_NUM1) + { + CONFIG_DEFAULT_INIT(lwip_mac_config,MAC_NUM1_LWIP_PORT_TYPE,MAC_NUM1_CONTROLLER,MAC_NUM1_MII_INTERFACE) + .dhcp_en=0, + .ipaddr="192.168.4.11", + .gw="192.168.4.1", + .netmask="255.255.255.0", + .mac_address={0x98, 0x0e, 0x24, 0x00, 0x11, 0x1}, + }, + #endif +}; + + + +static void SetIP(ip_addr_t* ipaddr,ip_addr_t* gw,ip_addr_t* netmask,u32 mac_id) +{ + + if(inet_aton(board_mac_config[mac_id].ipaddr,ipaddr)==0) + printf("The addr of ipaddr is wrong\r\n"); + if(inet_aton(board_mac_config[mac_id].gw,gw)==0) + printf("The addr of gw is wrong\r\n"); + if(inet_aton(board_mac_config[mac_id].netmask,netmask)==0) + printf("The addr of netmask is wrong\r\n"); + +} + +int LwipIperfServerInitTask(void) +{ + FError ret = FT_SUCCESS; + /* mac init */ + for (int i = 0; i < MAC_NUM; i++) + { + + struct netif *netif_p = NULL; + ip_addr_t ipaddr,netmask, gw; + board_mac_config[i].lwip_mac_config.name[0] = ETH_NAME_PREFIX; + itoa(board_mac_config[i].lwip_mac_config.mac_instance, &(board_mac_config[i].lwip_mac_config.name[1]), 10); + + /* mac ip addr set: char* -> ip_addr_t */ + SetIP(&ipaddr,&gw,&netmask,i); + /* ******************************************************************* */ + + netif_p= &board_mac_config[i].netif; + /* Add network interface to the netif_list, and set it as default */ + if (!LwipPortAdd(netif_p, &ipaddr, &netmask, &gw, board_mac_config[i].mac_address, (UserConfig *)&board_mac_config[i])) + { + printf("Error adding N/W interface %d.\n\r",board_mac_config[i].lwip_mac_config.mac_instance); + return ERR_GENERAL; + } + printf("LwipPortAdd mac_instance %d is over.\n\r",board_mac_config[i].lwip_mac_config.mac_instance); + + netif_set_default(netif_p); + + if (netif_is_link_up(netif_p)) + { + /* 当netif完全配置好时,必须调用该函数 */ + netif_set_up(netif_p); + if (board_mac_config[i].dhcp_en == 1) + { + LwipPortDhcpSet(netif_p, TRUE); + } + } + else + { + /* 当netif链接关闭时,必须调用该函数 */ + netif_set_down(netif_p); + } + + } + printf("Network setup complete.\n"); + + printf("Now start iperf sever \r\n"); + if(lwiperf_start_tcp_server(IP_ADDR_ANY, LWIPERF_TCP_LISTEN_PORT, + NULL, NULL)) + { + printf("Start iperf server success !!! \r\n"); + } + else + { + printf("Start iperf server failed !!! \r\n"); + return ERR_GENERAL; + } + + if (ret == FT_SUCCESS) + { + printf("%s@%d: Lwip iperf example success !!! \r\n", __func__, __LINE__); + printf("[system_example_pass]\r\n"); + } + else + { + printf("%s@%d: Lwip iperf example failed !!!, ret = %d \r\n", __func__, __LINE__, ret); + } + + vTaskDelete(NULL); + return 0; +} + +void LwipIperfServerCreate(void) +{ + BaseType_t ret; + ret = xTaskCreate((TaskFunction_t)LwipIperfServerInitTask, /* 任务入口函数 */ + (const char *)"LwipIperfServerInitTask", /* 任务名字 */ + (uint16_t)2048, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ + NULL); /* 任务控制块指针 */ + + FASSERT_MSG(ret == pdPASS, "LwipTestCreate Task creation is failed"); +} + +void LwipIperfServerDeinit(void) +{ + printf("Now reset all active iperf session. \r\n"); + lwiperf_reset(); + printf("Reset all active iperf session complete! \r\n"); + for (int i = 0; i < MAC_NUM; i++) + { + struct netif *netif_p = NULL; + netif_p=&board_mac_config[i].netif; + LwipPortStop(netif_p,board_mac_config[i].dhcp_en); + } + +} diff --git a/example/network/lwip_startup/configs/d2000_aarch32_test_lwip_startup.config b/example/network/lwip_startup/configs/d2000_aarch32_test_lwip_startup.config index f1135bb1e446f25b87f7ce12277208f155f9199b..44f3bd601ffffde3ac264cf43e6dab2bfa88f66e 100644 --- a/example/network/lwip_startup/configs/d2000_aarch32_test_lwip_startup.config +++ b/example/network/lwip_startup/configs/d2000_aarch32_test_lwip_startup.config @@ -59,7 +59,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -331,7 +330,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -341,7 +339,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -375,7 +372,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -391,6 +388,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/d2000_aarch64_test_lwip_startup.config b/example/network/lwip_startup/configs/d2000_aarch64_test_lwip_startup.config index 435517859752836c482e754cdcc465da059b467f..4f85ac4c3720ad73bf0fe1c3338aad137febf0cd 100644 --- a/example/network/lwip_startup/configs/d2000_aarch64_test_lwip_startup.config +++ b/example/network/lwip_startup/configs/d2000_aarch64_test_lwip_startup.config @@ -53,7 +53,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -320,7 +319,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -330,7 +328,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -364,7 +361,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -380,6 +377,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/e2000d_aarch32_demo_lwip_startup.config b/example/network/lwip_startup/configs/e2000d_aarch32_demo_lwip_startup.config index 6eca68c927983377d3e5b42774f9122b9902b8ce..cf93a965277628e5238769022376a73cfa7d9926 100644 --- a/example/network/lwip_startup/configs/e2000d_aarch32_demo_lwip_startup.config +++ b/example/network/lwip_startup/configs/e2000d_aarch32_demo_lwip_startup.config @@ -60,7 +60,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -344,7 +343,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -354,7 +352,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -388,7 +385,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -404,6 +401,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/e2000d_aarch64_demo_lwip_startup.config b/example/network/lwip_startup/configs/e2000d_aarch64_demo_lwip_startup.config index 7488607dc7da7d6acdefc72c738ddf8135f7d205..703a95cfffdfb0c87d94c1dfe6e0ce1c5577d110 100644 --- a/example/network/lwip_startup/configs/e2000d_aarch64_demo_lwip_startup.config +++ b/example/network/lwip_startup/configs/e2000d_aarch64_demo_lwip_startup.config @@ -54,7 +54,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -333,7 +332,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -343,7 +341,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -377,7 +374,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -393,6 +390,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/e2000q_aarch32_demo_lwip_startup.config b/example/network/lwip_startup/configs/e2000q_aarch32_demo_lwip_startup.config index 5fa7265160f358f5508761333a2c63fb8dfb479b..058485daf0bbe13f6e53a6f32cb44e525a1602e6 100644 --- a/example/network/lwip_startup/configs/e2000q_aarch32_demo_lwip_startup.config +++ b/example/network/lwip_startup/configs/e2000q_aarch32_demo_lwip_startup.config @@ -60,7 +60,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -343,7 +342,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -353,7 +351,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -387,7 +384,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -403,6 +400,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/e2000q_aarch64_demo_lwip_startup.config b/example/network/lwip_startup/configs/e2000q_aarch64_demo_lwip_startup.config index bea5b26e54567fb542ab1ef82d673d89971abea2..75834b0e95310abf6bd624156c1ac97414d8ee22 100644 --- a/example/network/lwip_startup/configs/e2000q_aarch64_demo_lwip_startup.config +++ b/example/network/lwip_startup/configs/e2000q_aarch64_demo_lwip_startup.config @@ -54,7 +54,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -332,7 +331,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -342,7 +340,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -376,7 +373,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -392,6 +389,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/ft2004_aarch32_dsk_lwip_startup.config b/example/network/lwip_startup/configs/ft2004_aarch32_dsk_lwip_startup.config index 40f6d7e40267b05d1501b8d9eee4f4d226062045..e69adbfa88185d47ea352fe3d4341726e0636055 100644 --- a/example/network/lwip_startup/configs/ft2004_aarch32_dsk_lwip_startup.config +++ b/example/network/lwip_startup/configs/ft2004_aarch32_dsk_lwip_startup.config @@ -59,7 +59,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -331,7 +330,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -341,7 +339,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -375,7 +372,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -391,6 +388,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/ft2004_aarch64_dsk_lwip_startup.config b/example/network/lwip_startup/configs/ft2004_aarch64_dsk_lwip_startup.config index 26198843cb257817facd9796e4e05ea570d5957a..3145ebb01b52f075e814dd9d4abffa79dab9a394 100644 --- a/example/network/lwip_startup/configs/ft2004_aarch64_dsk_lwip_startup.config +++ b/example/network/lwip_startup/configs/ft2004_aarch64_dsk_lwip_startup.config @@ -53,7 +53,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -320,7 +319,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -330,7 +328,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -364,7 +361,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -380,6 +377,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/phytiumpi_aarch32_firefly_lwip_startup.config b/example/network/lwip_startup/configs/phytiumpi_aarch32_firefly_lwip_startup.config index 9fcadc6bdbda05fee66cf59b09b119e5034800c6..72c8bc607650914d846d606fc970210d8a709acc 100644 --- a/example/network/lwip_startup/configs/phytiumpi_aarch32_firefly_lwip_startup.config +++ b/example/network/lwip_startup/configs/phytiumpi_aarch32_firefly_lwip_startup.config @@ -59,7 +59,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -342,7 +341,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -352,7 +350,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -386,7 +383,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -402,6 +399,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/configs/phytiumpi_aarch64_firefly_lwip_startup.config b/example/network/lwip_startup/configs/phytiumpi_aarch64_firefly_lwip_startup.config index 20a17900066d228d7baa67ca57c9bf769da0d0fa..2ad8d5cd584b4a03cf7357d8e5483704195fd430 100644 --- a/example/network/lwip_startup/configs/phytiumpi_aarch64_firefly_lwip_startup.config +++ b/example/network/lwip_startup/configs/phytiumpi_aarch64_firefly_lwip_startup.config @@ -53,7 +53,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -331,7 +330,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -341,7 +339,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -375,7 +372,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -391,6 +388,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/sdkconfig b/example/network/lwip_startup/sdkconfig index 20a17900066d228d7baa67ca57c9bf769da0d0fa..2ad8d5cd584b4a03cf7357d8e5483704195fd430 100644 --- a/example/network/lwip_startup/sdkconfig +++ b/example/network/lwip_startup/sdkconfig @@ -53,7 +53,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -331,7 +330,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -341,7 +339,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -375,7 +372,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -391,6 +388,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/lwip_startup/sdkconfig.h b/example/network/lwip_startup/sdkconfig.h index 0e56dba5b8851bb20079680d17c952a210893c2b..16d2fc4a241f300dc75f67d5f8ae16a48ac4d283 100644 --- a/example/network/lwip_startup/sdkconfig.h +++ b/example/network/lwip_startup/sdkconfig.h @@ -51,7 +51,6 @@ #define CONFIG_F64BIT_MEMORY_ADDRESS 0x2000000000 #define CONFIG_F64BIT_MEMORY_LENGTH 0x800000000 #define CONFIG_TARGET_E2000 -/* CONFIG_USE_SPINLOCK is not set */ #define CONFIG_DEFAULT_DEBUG_PRINT_UART1 /* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */ /* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */ @@ -289,7 +288,6 @@ #define CONFIG_LWIP_FXMAC /* CONFIG_LWIP_FGMAC is not set */ /* CONFIG_LWIP_FSDIF is not set */ -/* CONFIG_LWIP_RX_POLL is not set */ /* end of LWIP Port Configuration */ /* CONFIG_LWIP_NO_SYS is not set */ #define CONFIG_LWIP_LOCAL_HOSTNAME "phytium" @@ -297,7 +295,6 @@ /* LWIP_APP */ /* CONFIG_USE_LWIP_APP_LWIPERF is not set */ -/* CONFIG_USE_LWIP_APP_PING is not set */ /* CONFIG_USE_LWIP_APP_TFTP is not set */ /* end of LWIP_APP */ @@ -327,7 +324,7 @@ #define CONFIG_LWIP_IP4_REASSEMBLY #define CONFIG_LWIP_IP4_FRAG /* CONFIG_LWIP_IP_FORWARD is not set */ -#define CONFIG_IP_REASS_MAX_PBUFS 16 +#define CONFIG_IP_REASS_MAX_PBUFS 32 /* end of IPV4 */ /* ICMP */ @@ -341,6 +338,7 @@ #define CONFIG_LWIP_RAW_API_EN #define CONFIG_LWIP_MAX_RAW_PCBS 16 +#define CONFIG_LWIP_RAW_RECVMBOX_SIZE 6 /* end of LWIP RAW API */ /* DHCP */ diff --git a/example/network/lwip_startup/src/cmd_lwip_startup.c b/example/network/lwip_startup/src/cmd_lwip_startup.c index d04cac5da90167a14c5bacb9d6d33d15dab977a4..c3ccb0262b93cecc108ccbe9a0cf52fd030779c0 100644 --- a/example/network/lwip_startup/src/cmd_lwip_startup.c +++ b/example/network/lwip_startup/src/cmd_lwip_startup.c @@ -13,7 +13,7 @@ * * FilePath: cmd_lwip_startup.c * Created Date: 2023-11-21 11:06:40 - * Last Modified: 2023-12-28 15:11:06 + * Last Modified: 2024-04-03 15:42:24 * Description: This file is for lwip startup example cmd catalogue. * * Modify History: @@ -52,7 +52,7 @@ static void LwipStartupExampleCheckState(void) switch(init_flag_mask) { case IPV4_EXAMPLE_RUNNING: - printf("Lwip ipv4 example is running, we need to deinitialize it first! \r\n "); + printf("Lwip ipv4 example is running, we need to deinitialize it first! \r\n"); LwipIpv4TestDeinit(); init_flag_mask=EXAMPLE_IDLE; break; diff --git a/example/network/sockets/udp_multicast/configs/d2000_aarch32_test_udp_multicast.config b/example/network/sockets/udp_multicast/configs/d2000_aarch32_test_udp_multicast.config index 78066d31622b2f764f360bf5d3741260d81e9ba5..3f2f8ce0240057d3d145d1838be405732d7d6c80 100644 --- a/example/network/sockets/udp_multicast/configs/d2000_aarch32_test_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/d2000_aarch32_test_udp_multicast.config @@ -76,7 +76,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -348,7 +347,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -358,7 +356,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -408,6 +405,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/d2000_aarch64_test_udp_multicast.config b/example/network/sockets/udp_multicast/configs/d2000_aarch64_test_udp_multicast.config index 5f4b40bf2ef8b63881b7efb6205145796269b30a..c38296d2a9ce1b111d6d907ddb2558c468667dda 100644 --- a/example/network/sockets/udp_multicast/configs/d2000_aarch64_test_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/d2000_aarch64_test_udp_multicast.config @@ -70,7 +70,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -337,7 +336,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -347,7 +345,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -397,6 +394,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/e2000d_aarch32_demo_udp_multicast.config b/example/network/sockets/udp_multicast/configs/e2000d_aarch32_demo_udp_multicast.config index 47fb96fca531dbee61d854ce1414937d4dd6278b..3eb07a6cc4f996597ca5fec033135729685f6ab9 100644 --- a/example/network/sockets/udp_multicast/configs/e2000d_aarch32_demo_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/e2000d_aarch32_demo_udp_multicast.config @@ -77,7 +77,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -361,7 +360,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -371,7 +369,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -421,6 +418,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/e2000d_aarch64_demo_udp_multicast.config b/example/network/sockets/udp_multicast/configs/e2000d_aarch64_demo_udp_multicast.config index 6e8f7a0775f39a0152925b2d1a826ba2b2b55fe2..c4fa017311fb8341c6c7b79c80fcf1cd89e3842a 100644 --- a/example/network/sockets/udp_multicast/configs/e2000d_aarch64_demo_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/e2000d_aarch64_demo_udp_multicast.config @@ -71,7 +71,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -350,7 +349,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -360,7 +358,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -410,6 +407,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/e2000q_aarch32_demo_udp_multicast.config b/example/network/sockets/udp_multicast/configs/e2000q_aarch32_demo_udp_multicast.config index f77a3390daa9b429e7fcdf990cfc8b4c43925017..f378784a1e9be75880f44821793b83acdfe26f7b 100644 --- a/example/network/sockets/udp_multicast/configs/e2000q_aarch32_demo_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/e2000q_aarch32_demo_udp_multicast.config @@ -77,7 +77,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -360,7 +359,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -370,7 +368,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -420,6 +417,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/e2000q_aarch64_demo_udp_multicast.config b/example/network/sockets/udp_multicast/configs/e2000q_aarch64_demo_udp_multicast.config index c778f1040681f931d06ce395e9484b1bc6a76738..879f1637489848e409302a42b4bd843fe79fc160 100644 --- a/example/network/sockets/udp_multicast/configs/e2000q_aarch64_demo_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/e2000q_aarch64_demo_udp_multicast.config @@ -71,7 +71,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -349,7 +348,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -359,7 +357,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -409,6 +406,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/ft2004_aarch32_dsk_udp_multicast.config b/example/network/sockets/udp_multicast/configs/ft2004_aarch32_dsk_udp_multicast.config index d9803998d1e50760419a8ebd7880a9f6d31ee780..657ecf4eae421955de074f5a4448216c937da073 100644 --- a/example/network/sockets/udp_multicast/configs/ft2004_aarch32_dsk_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/ft2004_aarch32_dsk_udp_multicast.config @@ -76,7 +76,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -348,7 +347,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -358,7 +356,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -408,6 +405,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/ft2004_aarch64_dsk_udp_multicast.config b/example/network/sockets/udp_multicast/configs/ft2004_aarch64_dsk_udp_multicast.config index 44251b5bc38b80c54bda5ef77f87a93a3581a308..026dc1cb061c5600bc03fa6f7fd0adcf2f15f00b 100644 --- a/example/network/sockets/udp_multicast/configs/ft2004_aarch64_dsk_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/ft2004_aarch64_dsk_udp_multicast.config @@ -70,7 +70,6 @@ CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -337,7 +336,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set CONFIG_LWIP_FGMAC=y # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -347,7 +345,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -397,6 +394,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/phytiumpi_aarch32_firefly_udp_multicast.config b/example/network/sockets/udp_multicast/configs/phytiumpi_aarch32_firefly_udp_multicast.config index 847883106d48e5c04a324e7537cafe56b6dce4f3..dd540a1c5245fcae5683b17f38e9cd45dc0ef470 100644 --- a/example/network/sockets/udp_multicast/configs/phytiumpi_aarch32_firefly_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/phytiumpi_aarch32_firefly_udp_multicast.config @@ -76,7 +76,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -359,7 +358,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -369,7 +367,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -419,6 +416,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/configs/phytiumpi_aarch64_firefly_udp_multicast.config b/example/network/sockets/udp_multicast/configs/phytiumpi_aarch64_firefly_udp_multicast.config index edb8bc803de929b526056543400d95771c440ed7..55c21e68bff39cd4a26b630ac42d150e5003b3a1 100644 --- a/example/network/sockets/udp_multicast/configs/phytiumpi_aarch64_firefly_udp_multicast.config +++ b/example/network/sockets/udp_multicast/configs/phytiumpi_aarch64_firefly_udp_multicast.config @@ -70,7 +70,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -348,7 +347,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -358,7 +356,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -408,6 +405,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/sdkconfig b/example/network/sockets/udp_multicast/sdkconfig index edb8bc803de929b526056543400d95771c440ed7..55c21e68bff39cd4a26b630ac42d150e5003b3a1 100644 --- a/example/network/sockets/udp_multicast/sdkconfig +++ b/example/network/sockets/udp_multicast/sdkconfig @@ -70,7 +70,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -348,7 +347,6 @@ CONFIG_USE_LWIP=y CONFIG_LWIP_FXMAC=y # CONFIG_LWIP_FGMAC is not set # CONFIG_LWIP_FSDIF is not set -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -358,7 +356,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # # CONFIG_USE_LWIP_APP_LWIPERF is not set -# CONFIG_USE_LWIP_APP_PING is not set # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -408,6 +405,7 @@ CONFIG_LWIP_MULTICAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/sockets/udp_multicast/sdkconfig.h b/example/network/sockets/udp_multicast/sdkconfig.h index 98afe34cb0caa925a21056ca76cb013738c54cd5..1dfcb4720a480a17b6a575d7493ec8229623b27d 100644 --- a/example/network/sockets/udp_multicast/sdkconfig.h +++ b/example/network/sockets/udp_multicast/sdkconfig.h @@ -65,7 +65,6 @@ #define CONFIG_F64BIT_MEMORY_ADDRESS 0x2000000000 #define CONFIG_F64BIT_MEMORY_LENGTH 0x800000000 #define CONFIG_TARGET_E2000 -/* CONFIG_USE_SPINLOCK is not set */ #define CONFIG_DEFAULT_DEBUG_PRINT_UART1 /* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */ /* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */ @@ -303,7 +302,6 @@ #define CONFIG_LWIP_FXMAC /* CONFIG_LWIP_FGMAC is not set */ /* CONFIG_LWIP_FSDIF is not set */ -/* CONFIG_LWIP_RX_POLL is not set */ /* end of LWIP Port Configuration */ /* CONFIG_LWIP_NO_SYS is not set */ #define CONFIG_LWIP_LOCAL_HOSTNAME "phytium" @@ -311,7 +309,6 @@ /* LWIP_APP */ /* CONFIG_USE_LWIP_APP_LWIPERF is not set */ -/* CONFIG_USE_LWIP_APP_PING is not set */ /* CONFIG_USE_LWIP_APP_TFTP is not set */ /* end of LWIP_APP */ @@ -355,6 +352,7 @@ #define CONFIG_LWIP_RAW_API_EN #define CONFIG_LWIP_MAX_RAW_PCBS 16 +#define CONFIG_LWIP_RAW_RECVMBOX_SIZE 6 /* end of LWIP RAW API */ /* DHCP */ diff --git a/example/network/wlan/configs/e2000d_aarch32_demo_wlan.config b/example/network/wlan/configs/e2000d_aarch32_demo_wlan.config index 5335daa898c5cfe6875c830c85efc46cb61bae84..92bed7229c697b208aeafeb238a3960cc04365b7 100644 --- a/example/network/wlan/configs/e2000d_aarch32_demo_wlan.config +++ b/example/network/wlan/configs/e2000d_aarch32_demo_wlan.config @@ -60,7 +60,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -337,7 +336,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set # CONFIG_LWIP_FGMAC is not set CONFIG_LWIP_FSDIF=y -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -347,7 +345,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # CONFIG_USE_LWIP_APP_LWIPERF=y -CONFIG_USE_LWIP_APP_PING=y # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -381,7 +378,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -397,6 +394,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/wlan/configs/e2000d_aarch64_demo_wlan.config b/example/network/wlan/configs/e2000d_aarch64_demo_wlan.config index 8076bb0f72ecff23bd457b049948a6a9afd8da50..bad5b3c74b25263b4e1e690828f636bb4a4299ce 100644 --- a/example/network/wlan/configs/e2000d_aarch64_demo_wlan.config +++ b/example/network/wlan/configs/e2000d_aarch64_demo_wlan.config @@ -54,7 +54,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -326,7 +325,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set # CONFIG_LWIP_FGMAC is not set CONFIG_LWIP_FSDIF=y -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -336,7 +334,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # CONFIG_USE_LWIP_APP_LWIPERF=y -CONFIG_USE_LWIP_APP_PING=y # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -370,7 +367,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -386,6 +383,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/wlan/configs/e2000q_aarch32_demo_wlan.config b/example/network/wlan/configs/e2000q_aarch32_demo_wlan.config index f12b2f4fe4bb4b64628eefa6f13cd4f3b8467809..c299d5355da42be508501af5c9d1571fd84a32e7 100644 --- a/example/network/wlan/configs/e2000q_aarch32_demo_wlan.config +++ b/example/network/wlan/configs/e2000q_aarch32_demo_wlan.config @@ -60,7 +60,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -336,7 +335,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set # CONFIG_LWIP_FGMAC is not set CONFIG_LWIP_FSDIF=y -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -346,7 +344,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # CONFIG_USE_LWIP_APP_LWIPERF=y -CONFIG_USE_LWIP_APP_PING=y # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -380,7 +377,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -396,6 +393,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/wlan/configs/e2000q_aarch64_demo_wlan.config b/example/network/wlan/configs/e2000q_aarch64_demo_wlan.config index b356aea90d037e37e768a6edd64d84182252a3d5..d2b051c3257f84bde67d47185ad41b9058deb8a3 100644 --- a/example/network/wlan/configs/e2000q_aarch64_demo_wlan.config +++ b/example/network/wlan/configs/e2000q_aarch64_demo_wlan.config @@ -54,7 +54,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -325,7 +324,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set # CONFIG_LWIP_FGMAC is not set CONFIG_LWIP_FSDIF=y -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -335,7 +333,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # CONFIG_USE_LWIP_APP_LWIPERF=y -CONFIG_USE_LWIP_APP_PING=y # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -369,7 +366,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -385,6 +382,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/wlan/sdkconfig b/example/network/wlan/sdkconfig index b356aea90d037e37e768a6edd64d84182252a3d5..d2b051c3257f84bde67d47185ad41b9058deb8a3 100644 --- a/example/network/wlan/sdkconfig +++ b/example/network/wlan/sdkconfig @@ -54,7 +54,6 @@ CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 CONFIG_F64BIT_MEMORY_LENGTH=0x800000000 CONFIG_TARGET_E2000=y -# CONFIG_USE_SPINLOCK is not set CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set # CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set @@ -325,7 +324,6 @@ CONFIG_USE_LWIP=y # CONFIG_LWIP_FXMAC is not set # CONFIG_LWIP_FGMAC is not set CONFIG_LWIP_FSDIF=y -# CONFIG_LWIP_RX_POLL is not set # end of LWIP Port Configuration # CONFIG_LWIP_NO_SYS is not set @@ -335,7 +333,6 @@ CONFIG_LWIP_LOCAL_HOSTNAME="phytium" # LWIP_APP # CONFIG_USE_LWIP_APP_LWIPERF=y -CONFIG_USE_LWIP_APP_PING=y # CONFIG_USE_LWIP_APP_TFTP is not set # end of LWIP_APP @@ -369,7 +366,7 @@ CONFIG_ARP_QUEUEING_EN=y CONFIG_LWIP_IP4_REASSEMBLY=y CONFIG_LWIP_IP4_FRAG=y # CONFIG_LWIP_IP_FORWARD is not set -CONFIG_IP_REASS_MAX_PBUFS=16 +CONFIG_IP_REASS_MAX_PBUFS=32 # end of IPV4 # @@ -385,6 +382,7 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_LWIP_RAW_API_EN=y CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_RAW_RECVMBOX_SIZE=6 # end of LWIP RAW API # diff --git a/example/network/wlan/sdkconfig.h b/example/network/wlan/sdkconfig.h index f93193019e985bb6cf12076c4c58ed720ad38bbc..1e6e37a62b5c6e0d5951af498e17a8acdf239763 100644 --- a/example/network/wlan/sdkconfig.h +++ b/example/network/wlan/sdkconfig.h @@ -52,7 +52,6 @@ #define CONFIG_F64BIT_MEMORY_ADDRESS 0x2000000000 #define CONFIG_F64BIT_MEMORY_LENGTH 0x800000000 #define CONFIG_TARGET_E2000 -/* CONFIG_USE_SPINLOCK is not set */ #define CONFIG_DEFAULT_DEBUG_PRINT_UART1 /* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */ /* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */ @@ -285,7 +284,6 @@ /* CONFIG_LWIP_FXMAC is not set */ /* CONFIG_LWIP_FGMAC is not set */ #define CONFIG_LWIP_FSDIF -/* CONFIG_LWIP_RX_POLL is not set */ /* end of LWIP Port Configuration */ /* CONFIG_LWIP_NO_SYS is not set */ #define CONFIG_LWIP_LOCAL_HOSTNAME "phytium" @@ -293,7 +291,6 @@ /* LWIP_APP */ #define CONFIG_USE_LWIP_APP_LWIPERF -#define CONFIG_USE_LWIP_APP_PING /* CONFIG_USE_LWIP_APP_TFTP is not set */ /* end of LWIP_APP */ @@ -323,7 +320,7 @@ #define CONFIG_LWIP_IP4_REASSEMBLY #define CONFIG_LWIP_IP4_FRAG /* CONFIG_LWIP_IP_FORWARD is not set */ -#define CONFIG_IP_REASS_MAX_PBUFS 16 +#define CONFIG_IP_REASS_MAX_PBUFS 32 /* end of IPV4 */ /* ICMP */ @@ -337,6 +334,7 @@ #define CONFIG_LWIP_RAW_API_EN #define CONFIG_LWIP_MAX_RAW_PCBS 16 +#define CONFIG_LWIP_RAW_RECVMBOX_SIZE 6 /* end of LWIP RAW API */ /* DHCP */ diff --git a/example/peripheral/can/can/README.md b/example/peripheral/can/can/README.md index 0b481378fc54be24f96be6e12b675aa785ea37af..4070de28a9d070d978395ae1fffb773f4b45d4ed 100644 --- a/example/peripheral/can/can/README.md +++ b/example/peripheral/can/can/README.md @@ -123,28 +123,19 @@ bootelf -p 0x90100000 - 输入 ``can intr``,启动can中断模式发送接收测试例子,测试完标准帧和扩展帧后自动删除任务 -![intr_stid](./figs/intr_stid.png) -...... -![intr_exid](./figs/intr_exid.png) +![intr_stid](./figs/can_intr.png) - 输入 ``can polled``,启动can轮询模式发送接收测试例子,测试完标准帧和扩展帧后自动删除任务 -![polled_stid](./figs/polled_stid.png) -...... -![polled_exid](./figs/polled_exid.png) +![polled_stid](./figs/can_polled.png) - 输入 ``can filter``,启动can id滤波功能测试例子,测试1只接收id=0x0F的帧,测试2接收帧id&mask(mask=0x03,结果为0表示比较,为1表示忽略),比较接收id和接收id&maskid(maskid=0x0F)的结果。全部匹配则接收否则滤除。 -滤波测试例子1 -![filter1](./figs/filter1.png) -...... -![filter1_success](./figs/filter1_success.png) -滤波测试例子2 -![filter2](./figs/filter2.png) -...... -![filter2_success](./figs/filter2_success.png) + +![filter1](./figs/can_filter.png) ## 3. 如何解决问题 - 使用can0和can1进行回环测试时,需要将can0和can1的H和L信号线分别进行短接 +- ft2004和d2000不支持id过滤功能的描述 ## 4. 修改历史记录 diff --git a/example/peripheral/can/can/figs/can_filter.png b/example/peripheral/can/can/figs/can_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..12697e2d8cb4f4238b298e2041ba5e86b28b3805 Binary files /dev/null and b/example/peripheral/can/can/figs/can_filter.png differ diff --git a/example/peripheral/can/can/figs/can_intr.png b/example/peripheral/can/can/figs/can_intr.png new file mode 100644 index 0000000000000000000000000000000000000000..1750688da1ac734c2b877d5d72f44d53530fb0c2 Binary files /dev/null and b/example/peripheral/can/can/figs/can_intr.png differ diff --git a/example/peripheral/can/can/figs/can_polled.png b/example/peripheral/can/can/figs/can_polled.png new file mode 100644 index 0000000000000000000000000000000000000000..8a01d35dff8a5e9d8ddcfc9112cc7aef57e82fca Binary files /dev/null and b/example/peripheral/can/can/figs/can_polled.png differ diff --git a/example/peripheral/can/can/main.c b/example/peripheral/can/can/main.c index b49c7dc2040ac413ff323f76fee169992c88bcfa..773a4d31c68738526f3dd1487cc340fa0c293581 100644 --- a/example/peripheral/can/can/main.c +++ b/example/peripheral/can/can/main.c @@ -22,25 +22,57 @@ * 1.0 wangxiaodong 2022/09/23 first commit */ +#include +#include "FreeRTOS.h" + +#ifdef CONFIG_USE_LETTER_SHELL #include "shell.h" #include "shell_port.h" -#include +#else +#include "task.h" #include "can_example.h" +#define CAN_EXAMPLE_TASK_PRIORITY 2 + +void CanExampleTaskEntry(void *pvParameters) +{ + /* example functions */ + FFreeRTOSCreateCanIntrTestTask(); + FFreeRTOSCreateCanPolledTestTask(); +#if defined(CONFIG_E2000D_DEMO_BOARD) || defined(CONFIG_E2000Q_DEMO_BOARD) + FFreeRTOSCanCreateFilterTestTask(); +#endif + + /* end flag */ + printf("[test_end]\r\n"); + vTaskDelete(NULL); +} +#endif + int main(void) { - BaseType_t ret; + BaseType_t ret = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - ret = LSUserShellTask() ; +#ifdef CONFIG_USE_LETTER_SHELL + ret = LSUserShellTask(); +#else + /* used in no-letter-shell mode */ + ret = xTaskCreate((TaskFunction_t)CanExampleTaskEntry, /* 任务入口函数 */ + (const char *)"CanExampleTaskEntry",/* 任务名字 */ + (uint16_t)4096, /* 任务栈大小 */ + NULL,/* 任务入口函数参数 */ + (UBaseType_t)CAN_EXAMPLE_TASK_PRIORITY, /* 任务的优先级 */ + NULL); +#endif if (ret != pdPASS) { goto FAIL_EXIT; } - + vTaskStartScheduler(); /* 启动任务,开启调度 */ while (1); /* 正常不会执行到这里 */ FAIL_EXIT: - printf("failed 0x%x. \r\n", ret); + printf("CAN example failed in main.c, the ret value is 0x%x. \r\n", ret); return 0; } diff --git a/example/peripheral/can/can/src/can_id_filter_example.c b/example/peripheral/can/can/src/can_id_filter_example.c index 0083bc0ebadb26284d247eec9a401e223d520160..2b0e696fe05a3147ceb6c6ba8846834af35b10de 100644 --- a/example/peripheral/can/can/src/can_id_filter_example.c +++ b/example/peripheral/can/can/src/can_id_filter_example.c @@ -20,6 +20,7 @@ * Ver   Who        Date         Changes * ----- ------     --------    -------------------------------------- * 1.0 huangjin 2023/10/7 first release + * 2.0 huangjin 2024/04/24 add no letter shell mode, adapt to auto-test system */ /***************************** Include Files *********************************/ @@ -43,39 +44,53 @@ #define FCAN_TEST_WARN(format, ...) FT_DEBUG_PRINT_W(FCAN_TEST_DEBUG_TAG, format, ##__VA_ARGS__) #define FCAN_TEST_ERROR(format, ...) FT_DEBUG_PRINT_E(FCAN_TEST_DEBUG_TAG, format, ##__VA_ARGS__) +enum +{ + CAN_TEST_SUCCESS = 0, /*Can intr loopback mode test success*/ + CAN_INIT_FAILURE = 1, /*Can init step failure */ + CAN_SEND_FAILURE = 2, /*Can send step failure */ + CAN_RECV_FAILURE = 3, /*Can recv step failure */ + CAN_DATA_FAILURE = 4, /*Can data is not equal */ + CAN_UNKNOWN_STATE = 5, /*Can example unknown state */ +}; + /* can frame config */ +#define CanFilterMode1 1 +#define CanFilterMode2 2 #define FCAN_SEND_LENGTH 8 -#define FCAN_FILTER_ID 0X02 - -/* can send period */ -#define CAN_SEND_PERIOD ( pdMS_TO_TICKS( 100UL )) +#define FCAN_FILTER_MODE1_ID 0x0F +#define FCAN_FILTER_MODE1_MASK 0x00 +#define FCAN_FILTER_MODE2_ID 0x0C +#define FCAN_FILTER_MODE2_MASK 0x03 +#define FCAN_FILTER_MODE2_CNT 4 +#define TIMER_OUT (pdMS_TO_TICKS(10000UL)) +#define RECV_TIMER_OUT (pdMS_TO_TICKS(100UL)) +#define CAN_FILTER_TASK_PRIORITY 3 +#define FCAN_SEND_CNT 0x0F /* can baudrate */ -#define ARB_BAUD_RATE 1000000 +#define ARB_BAUD_RATE 1000000 #define DATA_BAUD_RATE 1000000 /**************************** Type Definitions *******************************/ typedef struct { - u32 count; FFreeRTOSCan *os_can_p; } FCanQueueData; /************************** Variable Definitions *****************************/ /* Declare a variable of type QueueHandle_t. This is used to store the queue that is accessed by all three tasks. */ -static QueueHandle_t xQueue; - -static xSemaphoreHandle test_semaphore; - -static xTaskHandle send_handle; -static xTaskHandle recv_handle; +static QueueHandle_t xQueue_irq; +static QueueHandle_t xQueue_task; static FFreeRTOSCan *os_can_ctrl_p[FCAN_NUM]; static FCanFrame send_frame[FCAN_NUM]; static FCanFrame recv_frame[FCAN_NUM]; -static void FFreeRTOSCanSendTask(void *pvParameters); -static void FFreeRTOSCanRecvTask(void *pvParameters); +static u32 recv_count[FCAN_NUM] = {0}; + +static FError FFreeRTOSCanSendThenRecvData(int mode); +static FError FFreeRTOSCanRecvData(int mode, FCanQueueData * xReceiveStructure); static void FFreeRTOSCanDelete(void); /***************** Macros (Inline Functions) Definitions *********************/ @@ -83,12 +98,6 @@ static void FFreeRTOSCanDelete(void); /************************** Function Prototypes ******************************/ /************************** Function *****************************************/ -static void FCanTxIrqCallback(void *args) -{ - FFreeRTOSCan *os_can_p = (FFreeRTOSCan *)args; - FCAN_TEST_DEBUG("Can%d irq send frame is ok.", os_can_p->can_ctrl.config.instance_id); -} - static void FCanRxIrqCallback(void *args) { FFreeRTOSCan *os_can_p = (FFreeRTOSCan *)args; @@ -99,7 +108,7 @@ static void FCanRxIrqCallback(void *args) portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - xQueueSendToBackFromISR(xQueue, &xSendStructure, &xHigherPriorityTaskWoken); + xQueueSendToBackFromISR(xQueue_irq, &xSendStructure, &xHigherPriorityTaskWoken); /* never call taskYIELD() form ISR! */ portYIELD_FROM_ISR(xHigherPriorityTaskWoken); @@ -108,20 +117,9 @@ static void FCanRxIrqCallback(void *args) static FError FFreeRTOSCanIntrSet(FFreeRTOSCan *os_can_p) { FError ret = FCAN_SUCCESS; - FCanIntrEventConfig intr_event; memset(&intr_event, 0, sizeof(intr_event)); - intr_event.type = FCAN_INTR_EVENT_SEND; - intr_event.handler = FCanTxIrqCallback; - intr_event.param = (void *)os_can_p; - ret = FFreeRTOSCanControl(os_can_p, FREERTOS_CAN_CTRL_INTR_SET, &intr_event); - if (FCAN_SUCCESS != ret) - { - FCAN_TEST_ERROR("FFreeRTOSCanControl FCAN_INTR_EVENT_SEND failed."); - return ret; - } - intr_event.type = FCAN_INTR_EVENT_RECV; intr_event.handler = FCanRxIrqCallback; intr_event.param = (void *)os_can_p; @@ -143,7 +141,6 @@ static FError FFreeRTOSCanIntrSet(FFreeRTOSCan *os_can_p) return ret; } - static FError FFreeRTOSCanBaudrateSet(FFreeRTOSCan *os_can_p) { FError ret = FCAN_SUCCESS; @@ -176,20 +173,19 @@ static FError FFreeRTOSCanBaudrateSet(FFreeRTOSCan *os_can_p) return ret; } - -static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, void *pvParameters) +static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, int mode) { FError ret = FCAN_SUCCESS; - if ( ((int)(uintptr)pvParameters) == 1 ) + if (mode == 1) { FCanIdMaskConfig id_mask; memset(&id_mask, 0, sizeof(id_mask)); for (int i = 0; i < FCAN_ACC_ID_REG_NUM; i++) { id_mask.filter_index = i; - id_mask.id = 0x0F;//只接收id的消息 - id_mask.mask = 0x00;//掩码 FCAN_ACC_IDN_MASK 对应位为 1:则忽略 0:则比较 + id_mask.id = FCAN_FILTER_MODE1_ID; // 只接收id的消息 + id_mask.mask = FCAN_FILTER_MODE1_MASK; // 掩码 FCAN_ACC_IDN_MASK 对应位为 1:则忽略 0:则比较 ret = FFreeRTOSCanControl(os_can_p, FREERTOS_CAN_CTRL_ID_MASK_SET, &id_mask); if (FCAN_SUCCESS != ret) { @@ -198,15 +194,15 @@ static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, void *pvParameters) } } } - else if ( ((int)(uintptr)pvParameters) == 2 ) + else if (mode == 2) { FCanIdMaskConfig id_mask; memset(&id_mask, 0, sizeof(id_mask)); for (int i = 0; i < FCAN_ACC_ID_REG_NUM; i++) { id_mask.filter_index = i; - id_mask.id = 0x0C;//(canid&maskid)与canid比较 - id_mask.mask = 0x03;//0011 比较高两位,忽略低两位 + id_mask.id = FCAN_FILTER_MODE2_ID; //(canid&maskid)与canid比较 + id_mask.mask = FCAN_FILTER_MODE2_MASK; // 0011 比较高两位,忽略低两位 ret = FFreeRTOSCanControl(os_can_p, FREERTOS_CAN_CTRL_ID_MASK_SET, &id_mask); if (FCAN_SUCCESS != ret) { @@ -219,24 +215,16 @@ static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, void *pvParameters) return ret; } -static void FFreeRTOSCanInitTask(void *pvParameters) +static FError CanInit(int ide) { - FError ret = FCAN_SUCCESS; - BaseType_t xReturn = pdPASS; u32 instance_id = FCAN0_ID; + FError init_ret = FCAN_FAILURE; u32 tran_mode = FCAN_PROBE_NORMAL_MODE; - /* The queue is created to hold a maximum of 32 structures of type xData. */ - xQueue = xQueueCreate(32, sizeof(FCanQueueData)); - if (xQueue == NULL) - { - printf("FFreeRTOSCanCreateFilterTestTask FCanQueueData create failed.\r\n"); - } - /*init iomux*/ FIOMuxInit(); - for (instance_id = FCAN0_ID; instance_id < FCAN_NUM; instance_id++) + for (instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) { FIOPadSetCanMux(instance_id); @@ -244,212 +232,270 @@ static void FFreeRTOSCanInitTask(void *pvParameters) os_can_ctrl_p[instance_id] = FFreeRTOSCanInit(instance_id); if (os_can_ctrl_p[instance_id] == NULL) { - printf("FFreeRTOSCanInit %d failed!!!\r\n", instance_id); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit %d failed!!!", instance_id); + return init_ret; } /* set can baudrate */ - ret = FFreeRTOSCanBaudrateSet(os_can_ctrl_p[instance_id]); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanBaudrateSet(os_can_ctrl_p[instance_id]); + if (FCAN_SUCCESS != init_ret) { - printf("FFreeRTOSCanInit FFreeRTOSCanBaudrateSet failed!!!\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanBaudrateSet failed!!!"); + return init_ret; } /* set can id mask */ - ret = FFreeRTOSCanIdMaskSet(os_can_ctrl_p[instance_id], pvParameters); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanIdMaskSet(os_can_ctrl_p[instance_id], ide); + if (FCAN_SUCCESS != init_ret) { - printf("FFreeRTOSCanInit FFreeRTOSCanIdMaskSet failed!!!\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanIdMaskSet failed!!!"); + return init_ret; } /* Identifier mask enable */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ID_MASK_ENABLE, NULL); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ID_MASK_ENABLE, NULL); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_ID_MASK_ENABLE failed."); - goto can_init_exit; + return init_ret; } /* init can interrupt handler */ - ret = FFreeRTOSCanIntrSet(os_can_ctrl_p[instance_id]); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanIntrSet(os_can_ctrl_p[instance_id]); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanIntrSet failed!!!"); - goto can_init_exit; + return init_ret; } /* set can transfer mode */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_MODE_SET, &tran_mode); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_MODE_SET, &tran_mode); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_MODE_SET failed."); - goto can_init_exit; + return init_ret; } /* enable can transfer */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ENABLE, NULL); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ENABLE, NULL); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_ENABLE failed."); - goto can_init_exit; + return init_ret; } - } - printf("\r\nFFreeRTOSCanInitTask execute success !!!\r\n"); + return init_ret; +} - if ( ((int)(uintptr)pvParameters) == 1 ) - { - printf("\r\nTest Example 1: Only frames with id 0x0F are received !!!\r\n");//测试例子1 - } - else if ( ((int)(uintptr)pvParameters) == 2 ) +/* +pvParameters + 1:Only one id is received + 2:Filter a group of ids + */ +static void FFreeRTOSCanFilterTask(void *pvParameters) +{ + FError ret = FCAN_SUCCESS; + int task_res = 0; + int mode = (int)(uintptr)pvParameters; + + /* The queue is created to hold a maximum of 32 structures of type xData. */ + xQueue_irq = xQueueCreate(32, sizeof(FCanQueueData)); + if (xQueue_irq == NULL) { - printf("\r\nTest Example 2: Compare the higher two bit and ignore the lower two bit !!!\r\n");//测试例子2 + FCAN_TEST_ERROR("xQueue_irq create failed."); } - - - /* can send task */ - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanSendTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanSendTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 5, /* 任务的优先级 */ - (TaskHandle_t *)&send_handle); /* 任务控制 */ - if (xReturn != pdPASS) + + /* init can controller */ + ret = CanInit(mode); + if (CAN_TEST_SUCCESS != ret) { - printf("Create FFreeRTOSCanSendTask failed.\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("Can init failed."); + task_res = CAN_INIT_FAILURE; + goto can_test_exit; } - /* can recv task */ - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanRecvTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanRecvTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 5, /* 任务的优先级 */ - (TaskHandle_t *)&recv_handle); /* 任务控制 */ - if (xReturn != pdPASS) + /* can send data */ + ret = FFreeRTOSCanSendThenRecvData(mode); + if (CAN_TEST_SUCCESS != ret) { - printf("Create FFreeRTOSCanRecvTask failed.\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("Can send then recv data failed."); + task_res = CAN_DATA_FAILURE; + goto can_test_exit; } -can_init_exit: +can_test_exit: + FFreeRTOSCanDelete(); + xQueueSend(xQueue_task, &task_res, 0); vTaskDelete(NULL); } -static void FFreeRTOSCanSendTask(void *pvParameters) +static FError FFreeRTOSCanSendThenRecvData(int mode) { FError ret = FCAN_SUCCESS; u32 instance_id = FCAN0_ID; u32 count[FCAN_NUM] = {0}; - int i = 0; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + BaseType_t xReturn = pdPASS; + FCanQueueData xReceiveStructure; + + for (u32 instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) { - printf("\r\ncan send task running.\r\n"); - for (instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) + /* can id递增发送 */ + for (u32 id = 0x00; id <= FCAN_SEND_CNT; id++) { - /* can id递增发送 */ - for (u32 id = 0x00; id <= 0x0F; id++) + send_frame[instance_id].canid = id; + send_frame[instance_id].canid &= CAN_SFF_MASK; + send_frame[instance_id].candlc = FCAN_SEND_LENGTH; + for (int i = 0; i < send_frame[instance_id].candlc; i++) { - send_frame[instance_id].canid = id; - send_frame[instance_id].canid &= CAN_SFF_MASK; - send_frame[instance_id].candlc = FCAN_SEND_LENGTH; - for (i = 0; i < send_frame[instance_id].candlc; i++) - { - send_frame[instance_id].data[i] = i + (instance_id << 4); - } - ret = FFreeRTOSCanSend(os_can_ctrl_p[instance_id], &send_frame[instance_id]); - if (ret != FCAN_SUCCESS) + send_frame[instance_id].data[i] = i + (instance_id << 4); + } + ret = FFreeRTOSCanSend(os_can_ctrl_p[instance_id], &send_frame[instance_id]); + if (ret != FCAN_SUCCESS) + { + FCAN_TEST_ERROR("can%d send failed.", instance_id); + ret = FCAN_INVAL_PARAM; + return ret; + } + count[instance_id]++; + + /* wait recv interrupt */ + xReturn = xQueueReceive(xQueue_irq, &xReceiveStructure, RECV_TIMER_OUT); + if (xReturn == pdPASS) + { + /* can recv data */ + ret = FFreeRTOSCanRecvData(mode, &xReceiveStructure); + if (CAN_TEST_SUCCESS != ret) { - printf("can%d send failed.\n", instance_id); + FCAN_TEST_ERROR("Can recv data failed."); + return ret; } - count[instance_id]++; - printf("\r\ncan%d send frame id is: 0x%02x\r\n", instance_id, send_frame[instance_id].canid); - vTaskDelay(CAN_SEND_PERIOD); + } + else + { + continue; } } - vTaskDelete(NULL); - } + } + + return ret; } -static void FFreeRTOSCanRecvTask(void *pvParameters) +static FError FFreeRTOSCanRecvData(int mode, FCanQueueData * xReceiveStructure) { FError ret = FCAN_SUCCESS; - u32 count[FCAN_NUM] = {0}; - int i = 0; - static FCanQueueData xReceiveStructure; FFreeRTOSCan *os_can_p; u32 instance_id = FCAN0_ID; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + + os_can_p = xReceiveStructure->os_can_p; + instance_id = os_can_p->can_ctrl.config.instance_id; + ret = FFreeRTOSCanRecv(os_can_ctrl_p[instance_id], &recv_frame[instance_id]); + if (FCAN_SUCCESS == ret) { - /* wait recv interrupt give semphore */ - xQueueReceive(xQueue, &xReceiveStructure, portMAX_DELAY); - os_can_p = xReceiveStructure.os_can_p; - instance_id = os_can_p->can_ctrl.config.instance_id; - ret = FFreeRTOSCanRecv(os_can_p, &recv_frame[instance_id]); - if (FCAN_SUCCESS == ret) + FCAN_TEST_DEBUG("can%d recv id is 0x%02x.", instance_id, recv_frame[instance_id].canid); + if (recv_frame[instance_id].canid == send_frame[FCAN1_ID - instance_id].canid) { - printf("can%d recv id is 0x%02x.\r\n", instance_id, recv_frame[instance_id].canid); - for (i = 0; i < recv_frame[instance_id].candlc; i++) + for (int i = 0; i < recv_frame[instance_id].candlc; i++) { if (recv_frame[instance_id].data[i] != send_frame[FCAN1_ID - instance_id].data[i]) { - FCAN_TEST_ERROR("\ncount=%d: can %d recv is not equal to can%d send!!!\r\n", count[instance_id], instance_id, FCAN1_ID - instance_id); + FCAN_TEST_ERROR("count=%d: can %d recv is not equal to can%d send!!!", recv_count[instance_id], instance_id, FCAN1_ID - instance_id); + ret = CAN_DATA_FAILURE; + return ret; } } - count[instance_id]++; + } + FCAN_TEST_DEBUG("The frame id:0x%02x was receved successfully.", recv_frame[instance_id].canid); - //被过滤的帧,进不到此函数 - if ( recv_frame[instance_id].canid != send_frame[FCAN1_ID - instance_id].canid) - { - printf("The frame id:0x%02x was filtered successfully.\r\n", send_frame[FCAN1_ID - instance_id].canid); - } - else - { - printf("The frame id:0x%02x was receved successfully.\r\n", recv_frame[instance_id].canid); - } + if ( (mode == CanFilterMode1) && (recv_frame[instance_id].canid == FCAN_FILTER_MODE1_ID) ) + { + printf("can%d -> can%d: Filter mode1 test completed.\r\n", FCAN1_ID - instance_id, instance_id); + return ret; } - if ((instance_id == 0) && (recv_frame[instance_id].canid == 0x0F)) + else if ( (mode == CanFilterMode2) && ((recv_frame[instance_id].canid & FCAN_FILTER_MODE2_ID) == FCAN_FILTER_MODE2_ID) ) { - FFreeRTOSCanDelete(); + recv_count[instance_id]++; + if ( recv_count[instance_id] == FCAN_FILTER_MODE2_CNT ) + { + printf("can%d -> can%d: Filter mode2 test completed.\r\n", FCAN1_ID - instance_id, instance_id); + recv_count[instance_id] = 0; + return ret; + } } } + + return ret; } /* function1,2 of can id filter example */ BaseType_t FFreeRTOSCanCreateFilterTestTask(void) { + int task_res = CAN_UNKNOWN_STATE; BaseType_t xReturn = pdPASS; - BaseType_t timer_started = pdPASS; - test_semaphore = xSemaphoreCreateBinary(); - if (test_semaphore != NULL) + xQueue_task = xQueueCreate(1, sizeof(int)); + if (xQueue_task == NULL) { - xSemaphoreGive(test_semaphore); + FCAN_TEST_ERROR("xQueue_task create failed."); + goto exit; } /* can filter test1 task */ - xSemaphoreTake(test_semaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanInitTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanInitTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)1,/* 任务入口函数参数 */ - (UBaseType_t)1, /* 任务的优先级 */ - NULL); /* 任务控制 */ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanFilterTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSCanFilterMode1Task", /* 任务名字 */ + (uint16_t)1024, /* 任务栈大小 */ + (void *)CanFilterMode1, /* 任务入口函数参数 */ + (UBaseType_t)CAN_FILTER_TASK_PRIORITY, /* 任务的优先级 */ + NULL); /* 任务控制 */ + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xTaskCreate FFreeRTOSCanFilterMode1Task failed."); + goto exit; + } + + xReturn = xQueueReceive(xQueue_task, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_task receive timeout."); + goto exit; + } /* can filter test2 task */ - xSemaphoreTake(test_semaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanInitTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanInit2Task",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)2,/* 任务入口函数参数 */ - (UBaseType_t)1, /* 任务的优先级 */ - NULL); /* 任务控制 */ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanFilterTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSCanFilterMode2Task", /* 任务名字 */ + (uint16_t)1024, /* 任务栈大小 */ + (void *)CanFilterMode2, /* 任务入口函数参数 */ + (UBaseType_t)CAN_FILTER_TASK_PRIORITY, /* 任务的优先级 */ + NULL); /* 任务控制 */ + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xTaskCreate FFreeRTOSCanFilterMode2Task failed."); + goto exit; + } + + xReturn = xQueueReceive(xQueue_task, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_task receive timeout."); + goto exit; + } + +exit: + if (xQueue_task != NULL) + { + vQueueDelete(xQueue_task); + } + + if (task_res != CAN_TEST_SUCCESS) + { + printf("%s@%d: Can Filter mode example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Can Filter mode example [success].\r\n", __func__, __LINE__); + return pdPASS; + } return xReturn; } @@ -464,14 +510,5 @@ static void FFreeRTOSCanDelete(void) FIOMuxDeInit(); /* delete queue */ - vQueueDelete(xQueue); - - xSemaphoreGive(test_semaphore); - - if (recv_handle) - { - vPrintf("\r\nDelete FFreeRTOSCanRecvTask success.\r\n"); - vPrintf("\r\nDelete FFreeRTOSCanSendTask success.\r\n"); - vTaskDelete(recv_handle); - } + vQueueDelete(xQueue_irq); } diff --git a/example/peripheral/can/can/src/can_intr_loopback_mode_example.c b/example/peripheral/can/can/src/can_intr_loopback_mode_example.c index 20f649d3557655537033eb390ac2725ac0aafee4..66e70cb86f78c6a09ddace2ae1bfede15a69f713 100644 --- a/example/peripheral/can/can/src/can_intr_loopback_mode_example.c +++ b/example/peripheral/can/can/src/can_intr_loopback_mode_example.c @@ -21,6 +21,7 @@ * ----- ------ -------- -------------------------------------- * 1.0 wangxiaodong 2022/09/23 first commit * 2.0 huangjin 2023/10/7 delete software timer + * 3.0 huangjin 2024/04/24 add no letter shell mode, adapt to auto-test system */ #include #include @@ -41,15 +42,24 @@ #define FCAN_TEST_WARN(format, ...) FT_DEBUG_PRINT_W(FCAN_TEST_DEBUG_TAG, format, ##__VA_ARGS__) #define FCAN_TEST_ERROR(format, ...) FT_DEBUG_PRINT_E(FCAN_TEST_DEBUG_TAG, format, ##__VA_ARGS__) +enum +{ + CAN_TEST_SUCCESS = 0, /*Can intr loopback mode test success*/ + CAN_INIT_FAILURE = 1, /*Can init step failure */ + CAN_SEND_FAILURE = 2, /*Can send step failure */ + CAN_RECV_FAILURE = 3, /*Can recv step failure */ + CAN_DATA_FAILURE = 4, /*Can data is not equal */ + CAN_UNKNOWN_STATE = 5, /*Can example unknown state */ +}; + /* can frame config */ #define FCAN_SEND_STID 0x000007FDU #define FCAN_SEND_EXID 0x1FFFFFFDU #define FCAN_SEND_LENGTH 8 -#define FCAN_SEND_STID_MAX 0x000007FFU -#define FCAN_SEND_EXID_MAX 0x1FFFFFFFU -/* can send period */ -#define CAN_SEND_PERIOD ( pdMS_TO_TICKS( 100UL )) +#define FCAN_SEND_CNT 3 +#define TIMER_OUT ( pdMS_TO_TICKS( 3000UL ) ) +#define CAN_INTR_TASK_PRIORITY 3 /* can baudrate */ #define ARB_BAUD_RATE 1000000 @@ -57,32 +67,23 @@ typedef struct { - u32 count; FFreeRTOSCan *os_can_p; } FCanQueueData; /* Declare a variable of type QueueHandle_t. This is used to store the queue that is accessed by all three tasks. */ -static QueueHandle_t xQueue; - -static xSemaphoreHandle test_semaphore; - -static xTaskHandle send_handle; -static xTaskHandle recv_handle; +static QueueHandle_t xQueue_irq; +static QueueHandle_t xQueue_task; static FFreeRTOSCan *os_can_ctrl_p[FCAN_NUM]; static FCanFrame send_frame[FCAN_NUM]; static FCanFrame recv_frame[FCAN_NUM]; -static void FFreeRTOSCanSendTask(void *pvParameters); -static void FFreeRTOSCanRecvTask(void *pvParameters); -static void FFreeRTOSCanDelete(void); +static u32 recv_count[FCAN_NUM] = {0}; -static void FCanTxIrqCallback(void *args) -{ - FFreeRTOSCan *os_can_p = (FFreeRTOSCan *)args; - FCAN_TEST_DEBUG("Can%d irq send frame is ok.", os_can_p->can_ctrl.config.instance_id); -} +static FError FFreeRTOSCanSendThenRecvData(int ide); +static FError FFreeRTOSCanRecvData(FCanQueueData * xReceiveStructure); +static void FFreeRTOSCanDelete(void); static void FCanRxIrqCallback(void *args) { @@ -94,44 +95,18 @@ static void FCanRxIrqCallback(void *args) portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - xQueueSendToBackFromISR(xQueue, &xSendStructure, &xHigherPriorityTaskWoken); + xQueueSendToBackFromISR(xQueue_irq, &xSendStructure, &xHigherPriorityTaskWoken); /* never call taskYIELD() form ISR! */ portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } -static void FCanTxFifoEmptyIrqCallback(void *args) -{ - FFreeRTOSCan *os_can_p = (FFreeRTOSCan *)args; - FCAN_TEST_DEBUG("Can%d tx fifo is empty.", os_can_p->can_ctrl.config.instance_id); -} - -static void FCanRxFifoFullIrqCallback(void *args) -{ - FFreeRTOSCan *os_can_p = (FFreeRTOSCan *)args; - FCAN_TEST_DEBUG("Can%d rx fifo is full.", os_can_p->can_ctrl.config.instance_id); - u32 reg_val = 0; - reg_val = FCAN_READ_REG32(os_can_p->can_ctrl.config.base_address, FCAN_FIFO_CNT_OFFSET); - printf("\r\nRecv fifo cnt=%d!!!\r\n", FCAN_FIFO_CNT_RFN_GET(reg_val)); -} - static FError FFreeRTOSCanIntrSet(FFreeRTOSCan *os_can_p) { FError ret = FCAN_SUCCESS; - FCanIntrEventConfig intr_event; memset(&intr_event, 0, sizeof(intr_event)); - intr_event.type = FCAN_INTR_EVENT_SEND; - intr_event.handler = FCanTxIrqCallback; - intr_event.param = (void *)os_can_p; - ret = FFreeRTOSCanControl(os_can_p, FREERTOS_CAN_CTRL_INTR_SET, &intr_event); - if (FCAN_SUCCESS != ret) - { - FCAN_TEST_ERROR("FFreeRTOSCanControl FCAN_INTR_EVENT_SEND failed."); - return ret; - } - intr_event.type = FCAN_INTR_EVENT_RECV; intr_event.handler = FCanRxIrqCallback; intr_event.param = (void *)os_can_p; @@ -142,26 +117,6 @@ static FError FFreeRTOSCanIntrSet(FFreeRTOSCan *os_can_p) return ret; } - intr_event.type = FCAN_INTR_EVENT_FIFOEMPTY; - intr_event.handler = FCanTxFifoEmptyIrqCallback; - intr_event.param = (void *)os_can_p; - ret = FFreeRTOSCanControl(os_can_p, FREERTOS_CAN_CTRL_INTR_SET, &intr_event); - if (FCAN_SUCCESS != ret) - { - FCAN_TEST_ERROR("FFreeRTOSCanControl FCAN_INTR_EVENT_FIFOEMPTY failed."); - return ret; - } - - intr_event.type = FCAN_INTR_EVENT_FIFOFULL; - intr_event.handler = FCanRxFifoFullIrqCallback; - intr_event.param = (void *)os_can_p; - ret = FFreeRTOSCanControl(os_can_p, FREERTOS_CAN_CTRL_INTR_SET, &intr_event); - if (FCAN_SUCCESS != ret) - { - FCAN_TEST_ERROR("FFreeRTOSCanControl FCAN_INTR_EVENT_FIFOFULL failed."); - return ret; - } - u32 cpu_id; GetCpuId(&cpu_id); FCanCtrl *instance_p = &os_can_p->can_ctrl; @@ -173,7 +128,6 @@ static FError FFreeRTOSCanIntrSet(FFreeRTOSCan *os_can_p) return ret; } - static FError FFreeRTOSCanBaudrateSet(FFreeRTOSCan *os_can_p) { FError ret = FCAN_SUCCESS; @@ -206,7 +160,6 @@ static FError FFreeRTOSCanBaudrateSet(FFreeRTOSCan *os_can_p) return ret; } - static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, int frame_type) { FError ret = FCAN_SUCCESS; @@ -233,24 +186,16 @@ static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, int frame_type) return ret; } -static void FFreeRTOSCanInitTask(void *pvParameters) +static FError CanInit(int ide) { - FError ret = FCAN_SUCCESS; - BaseType_t xReturn = pdPASS; u32 instance_id = FCAN0_ID; + FError init_ret = FCAN_FAILURE; u32 tran_mode = FCAN_PROBE_NORMAL_MODE; - /* The queue is created to hold a maximum of 32 structures of type xData. */ - xQueue = xQueueCreate(32, sizeof(FCanQueueData)); - if (xQueue == NULL) - { - printf("FFreeRTOSCanCreateFilterTestTask FCanQueueData create failed.\r\n"); - } - /*init iomux*/ FIOMuxInit(); - for (instance_id = FCAN0_ID; instance_id < FCAN_NUM; instance_id++) + for (instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) { FIOPadSetCanMux(instance_id); @@ -258,219 +203,281 @@ static void FFreeRTOSCanInitTask(void *pvParameters) os_can_ctrl_p[instance_id] = FFreeRTOSCanInit(instance_id); if (os_can_ctrl_p[instance_id] == NULL) { - printf("FFreeRTOSCanInit %d failed!!!\r\n", instance_id); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit %d failed!!!", instance_id); + return init_ret; } /* set can baudrate */ - ret = FFreeRTOSCanBaudrateSet(os_can_ctrl_p[instance_id]); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanBaudrateSet(os_can_ctrl_p[instance_id]); + if (FCAN_SUCCESS != init_ret) { - printf("FFreeRTOSCanInit FFreeRTOSCanBaudrateSet failed!!!\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanBaudrateSet failed!!!"); + return init_ret; } /* set can id mask */ - ret = FFreeRTOSCanIdMaskSet(os_can_ctrl_p[instance_id], ((int)(uintptr)pvParameters)); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanIdMaskSet(os_can_ctrl_p[instance_id], ide); + if (FCAN_SUCCESS != init_ret) { - printf("FFreeRTOSCanInit FFreeRTOSCanIdMaskSet failed!!!\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanIdMaskSet failed!!!"); + return init_ret; } /* Identifier mask enable */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ID_MASK_ENABLE, NULL); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ID_MASK_ENABLE, NULL); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_ID_MASK_ENABLE failed."); - goto can_init_exit; + return init_ret; } /* init can interrupt handler */ - ret = FFreeRTOSCanIntrSet(os_can_ctrl_p[instance_id]); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanIntrSet(os_can_ctrl_p[instance_id]); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanIntrSet failed!!!"); - goto can_init_exit; + return init_ret; } /* set can transfer mode */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_MODE_SET, &tran_mode); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_MODE_SET, &tran_mode); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_MODE_SET failed."); - goto can_init_exit; + return init_ret; } /* enable can transfer */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ENABLE, NULL); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ENABLE, NULL); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_ENABLE failed."); - goto can_init_exit; + return init_ret; } - } - printf("FFreeRTOSCanInitTask execute success !!!\r\n"); + return init_ret; +} + +/* +pvParameters + 0:standard frame test task + 1:extended frame test task + */ +static void FFreeRTOSCanIntrTask(void *pvParameters) +{ + FError ret = FCAN_SUCCESS; + int task_res = CAN_TEST_SUCCESS; + int ide = (int)(uintptr)pvParameters; - if ( ((int)(uintptr)pvParameters) == 0 ) + /* The queue is created to hold a maximum of 32 structures of type xData. */ + xQueue_irq = xQueueCreate(32, sizeof(FCanQueueData)); + if (xQueue_irq == NULL) { - printf("Standard frame test example!!!\r\n"); + FCAN_TEST_ERROR("xQueue_irq create failed."); } - else if ( ((int)(uintptr)pvParameters) == 1 ) + + /* init can controller */ + ret = CanInit(ide); + if (CAN_TEST_SUCCESS != ret) { - printf("Extended frame test example!!!\r\n"); + FCAN_TEST_ERROR("Can init failed."); + task_res = CAN_INIT_FAILURE; + goto can_test_exit; } - /* can send task */ - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanSendTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanSendTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - pvParameters,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 5, /* 任务的优先级 */ - (TaskHandle_t *)&send_handle); /* 任务控制 */ - if (xReturn != pdPASS) + /* can send data then recv data */ + ret = FFreeRTOSCanSendThenRecvData(ide); + if (CAN_TEST_SUCCESS != ret) { - printf("Create FFreeRTOSCanSendTask failed.\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("Can send then recv data failed."); + task_res = CAN_DATA_FAILURE; + goto can_test_exit; } - /* can recv task */ - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanRecvTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanRecvTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 5, /* 任务的优先级 */ - (TaskHandle_t *)&recv_handle); /* 任务控制 */ - if (xReturn != pdPASS) +can_test_exit: + xQueueSend(xQueue_task, &task_res, 0); + if (task_res != CAN_INIT_FAILURE) { - printf("Create FFreeRTOSCanRecvTask failed.\r\n"); - goto can_init_exit; + FFreeRTOSCanDelete(); } - -can_init_exit: vTaskDelete(NULL); } -static void FFreeRTOSCanSendTask(void *pvParameters) +static FError FFreeRTOSCanSendThenRecvData(int ide) { FError ret = FCAN_SUCCESS; u32 instance_id = FCAN0_ID; - u32 count[FCAN_NUM] = {0}; - u32 send_max_id; - int i = 0; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + u32 count = 0; + BaseType_t xReturn = pdPASS; + FCanQueueData xReceiveStructure; + + for (int j = 0; j < FCAN_SEND_CNT; j++) { - printf("\r\ncan send task running.\r\n"); - for (instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) + for (u32 instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) { - send_frame[instance_id].candlc = FCAN_SEND_LENGTH; //DLC - if (((int)(uintptr)pvParameters) == 1) + send_frame[instance_id].candlc = FCAN_SEND_LENGTH; + if (ide == EXTEND_FRAME) { - send_frame[instance_id].canid = FCAN_SEND_EXID + count[instance_id]; //EXID //IDE + send_frame[instance_id].canid = FCAN_SEND_EXID + count; send_frame[instance_id].canid |= CAN_EFF_FLAG; - send_max_id = CAN_EFF_MASK | CAN_EFF_FLAG; } else { - send_frame[instance_id].canid = FCAN_SEND_STID + count[instance_id]; //STID + send_frame[instance_id].canid = FCAN_SEND_STID + count; send_frame[instance_id].canid &= CAN_SFF_MASK; - send_max_id = CAN_SFF_MASK; } - for (i = 0; i < send_frame[instance_id].candlc; i++) + for (int i = 0; i < send_frame[instance_id].candlc; i++) { send_frame[instance_id].data[i] = i + (instance_id << 4); } ret = FFreeRTOSCanSend(os_can_ctrl_p[instance_id], &send_frame[instance_id]); if (ret != FCAN_SUCCESS) { - printf("can%d send failed.\n", instance_id); + FCAN_TEST_ERROR("can%d send failed.", instance_id); + ret = FCAN_INVAL_PARAM; + return ret; + } + else + { + FCAN_TEST_DEBUG("can%d send id is 0x%02x.", instance_id, send_frame[instance_id].canid); + } + count++; + + /* wait recv interrupt */ + xReturn = xQueueReceive(xQueue_irq, &xReceiveStructure, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_irq receive timeout."); + return ret; + } + + /* can recv data */ + ret = FFreeRTOSCanRecvData(&xReceiveStructure); + if (CAN_TEST_SUCCESS != ret) + { + FCAN_TEST_ERROR("Can recv data failed."); + return ret; } - count[instance_id]++; - vTaskDelay(CAN_SEND_PERIOD); - } - if ( (send_frame[instance_id - 1].canid == send_max_id) ) - { - vTaskDelete(NULL); } } + + return ret; } -static void FFreeRTOSCanRecvTask(void *pvParameters) +static FError FFreeRTOSCanRecvData(FCanQueueData * xReceiveStructure) { FError ret = FCAN_SUCCESS; - u32 count[FCAN_NUM] = {0}; - int i = 0; - static FCanQueueData xReceiveStructure; FFreeRTOSCan *os_can_p; u32 instance_id = FCAN0_ID; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + + os_can_p = xReceiveStructure->os_can_p; + instance_id = os_can_p->can_ctrl.config.instance_id; + ret = FFreeRTOSCanRecv(os_can_p, &recv_frame[instance_id]); + if (FCAN_SUCCESS == ret) { - /* wait recv interrupt give semphore */ - xQueueReceive(xQueue, &xReceiveStructure, portMAX_DELAY); - os_can_p = xReceiveStructure.os_can_p; - instance_id = os_can_p->can_ctrl.config.instance_id; - ret = FFreeRTOSCanRecv(os_can_p, &recv_frame[instance_id]); - if (FCAN_SUCCESS == ret) + FCAN_TEST_DEBUG("can%d recv id is 0x%02x.", instance_id, recv_frame[instance_id].canid); + FCAN_TEST_DEBUG("can%d recv dlc is %d.", instance_id, recv_frame[instance_id].candlc); + FCAN_TEST_DEBUG("can%d recv data is.", instance_id); + for (int i = 0; i < recv_frame[instance_id].candlc; i++) { - printf("\r\ncan%d recv id is 0x%02x.\r\n", instance_id, recv_frame[instance_id].canid); - printf("can%d recv dlc is %d.\r\n", instance_id, recv_frame[instance_id].candlc); - printf("can%d recv data is ", instance_id); - for (i = 0; i < recv_frame[instance_id].candlc; i++) + FCAN_TEST_DEBUG("0x%02x ", recv_frame[instance_id].data[i]); + if (recv_frame[instance_id].data[i] != send_frame[FCAN1_ID - instance_id].data[i]) { - printf("0x%02x ", recv_frame[instance_id].data[i]); - if (recv_frame[instance_id].data[i] != send_frame[FCAN1_ID - instance_id].data[i]) - { - FCAN_TEST_ERROR("\ncount%d = %d: can%d recv is not equal to can%d send!!!\r\n", instance_id, count[instance_id], instance_id, FCAN1_ID - instance_id); - } + FCAN_TEST_ERROR("count%d = %d: can%d recv is not equal to can%d send!!!", instance_id, recv_count[instance_id], instance_id, FCAN1_ID - instance_id); + ret = CAN_DATA_FAILURE; + return ret; } - printf("\ncount%d = %d: can%d recv is equal to can%d send!!!\r\n", instance_id, count[instance_id], instance_id, FCAN1_ID - instance_id); - count[instance_id]++; } - if ((instance_id == 0) - && ((recv_frame[instance_id].canid == (FCAN_SEND_EXID_MAX | CAN_EFF_FLAG)) - || (recv_frame[instance_id].canid == FCAN_SEND_STID_MAX))) + FCAN_TEST_DEBUG("count%d = %d: can%d recv is equal to can%d send!!!", instance_id, recv_count[instance_id], instance_id, FCAN1_ID - instance_id); + recv_count[instance_id]++; + } + if (recv_count[instance_id] == FCAN_SEND_CNT) + { + if (recv_frame[instance_id].canid & CAN_EFF_FLAG) { - FFreeRTOSCanDelete(); + printf("can%d -> can%d: Extended frame interrupt loop test completed.\r\n", FCAN1_ID - instance_id, instance_id); } + else + { + printf("can%d -> can%d: Standard frame interrupt loop test completed.\r\n", FCAN1_ID - instance_id, instance_id); + } + recv_count[instance_id] = 0; } + + return ret; } /* create can intr test, can0 and can1 loopback */ BaseType_t FFreeRTOSCreateCanIntrTestTask(void) { + int task_res = CAN_UNKNOWN_STATE; BaseType_t xReturn = pdPASS; - BaseType_t timer_started = pdPASS; - test_semaphore = xSemaphoreCreateBinary(); - if (test_semaphore != NULL) + xQueue_task = xQueueCreate(1, sizeof(int)); + if (xQueue_task == NULL) { - xSemaphoreGive(test_semaphore); + FCAN_TEST_ERROR("xQueue_task create failed."); + goto exit; } /* can intr example standard frame task */ - xSemaphoreTake(test_semaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanInitTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanInitTask",/* 任务名字 */ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanIntrTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSCanIntrStandardTask",/* 任务名字 */ (uint16_t)1024, /* 任务栈大小 */ - (void *)0,/* 任务入口函数参数 */ - (UBaseType_t)1, /* 任务的优先级 */ + (void *)STANDARD_FRAME,/* 任务入口函数参数 */ + (UBaseType_t)CAN_INTR_TASK_PRIORITY, /* 任务的优先级 */ NULL); /* 任务控制 */ + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xTaskCreate FFreeRTOSCanIntrTask failed."); + goto exit; + } + + xReturn = xQueueReceive(xQueue_task, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_task receive timeout."); + goto exit; + } /* can intr example extended frame task */ - xSemaphoreTake(test_semaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanInitTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanInitTask2",/* 任务名字 */ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanIntrTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSCanIntrExtendedTask",/* 任务名字 */ (uint16_t)1024, /* 任务栈大小 */ - (void *)1,/* 任务入口函数参数 */ - (UBaseType_t)1, /* 任务的优先级 */ - NULL); /* 任务控制 */ + (void *)EXTEND_FRAME,/* 任务入口函数参数 */ + (UBaseType_t)CAN_INTR_TASK_PRIORITY, /* 任务的优先级 */ + NULL); /* 任务控制 */ + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xTaskCreate FFreeRTOSCanIntrTask failed."); + goto exit; + } - return xReturn; + xReturn = xQueueReceive(xQueue_task, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_task receive timeout."); + goto exit; + } + +exit: + if (xQueue_task != NULL) + { + vQueueDelete(xQueue_task); + } + + if (task_res != CAN_TEST_SUCCESS) + { + printf("%s@%d: Can intr loopback mode example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Can intr loopback mode example [success].\r\n", __func__, __LINE__); + return pdPASS; + } } static void FFreeRTOSCanDelete(void) @@ -483,14 +490,5 @@ static void FFreeRTOSCanDelete(void) FIOMuxDeInit(); /* delete queue */ - vQueueDelete(xQueue); - - xSemaphoreGive(test_semaphore); - - if (recv_handle) - { - vPrintf("\r\nDelete FFreeRTOSCanRecvTask success.\r\n"); - vPrintf("\r\nDelete FFreeRTOSCanSendTask success.\r\n"); - vTaskDelete(recv_handle); - } + vQueueDelete(xQueue_irq); } \ No newline at end of file diff --git a/example/peripheral/can/can/src/can_polled_loopback_mode_example.c b/example/peripheral/can/can/src/can_polled_loopback_mode_example.c index 63863d7a81b110b6e15e77a33b0f6f7d7a3f655b..65420d6f40ee4f7a99a854992cdcf20d8bfd4c3e 100644 --- a/example/peripheral/can/can/src/can_polled_loopback_mode_example.c +++ b/example/peripheral/can/can/src/can_polled_loopback_mode_example.c @@ -20,6 +20,7 @@ * Ver Who Date Changes * ----- ------ -------- -------------------------------------- * 1.0 huangjin 2023/10/7 first commit + * 2.0 huangjin 2024/04/24 add no letter shell mode, adapt to auto-test system */ #include #include @@ -40,37 +41,44 @@ #define FCAN_TEST_WARN(format, ...) FT_DEBUG_PRINT_W(FCAN_TEST_DEBUG_TAG, format, ##__VA_ARGS__) #define FCAN_TEST_ERROR(format, ...) FT_DEBUG_PRINT_E(FCAN_TEST_DEBUG_TAG, format, ##__VA_ARGS__) +enum +{ + CAN_TEST_SUCCESS = 0, /*Can intr loopback mode test success*/ + CAN_INIT_FAILURE = 1, /*Can init step failure */ + CAN_SEND_FAILURE = 2, /*Can send step failure */ + CAN_RECV_FAILURE = 3, /*Can recv step failure */ + CAN_DATA_FAILURE = 4, /*Can data is not equal */ + CAN_UNKNOWN_STATE = 5, /*Can example unknown state */ +}; + /* can frame config */ #define FCAN_SEND_STID 0x000007FDU #define FCAN_SEND_EXID 0x1FFFFFFDU #define FCAN_SEND_LENGTH 8 -#define FCAN_SEND_STID_MAX 0x000007FFU -#define FCAN_SEND_EXID_MAX 0x1FFFFFFFU +#define FCAN_SEND_CNT 3 +#define TIMER_OUT ( pdMS_TO_TICKS( 3000UL ) ) +#define CAN_POLLED_TASK_PRIORITY 3 /* can send period */ -#define CAN_SEND_PERIOD ( pdMS_TO_TICKS( 100UL )) +#define CAN_SEND_PERIOD ( pdMS_TO_TICKS( 100UL ) ) /* can baudrate */ #define ARB_BAUD_RATE 1000000 #define DATA_BAUD_RATE 1000000 /* Declare a variable of type QueueHandle_t. This is used to store the queue that is accessed by all three tasks. */ -static QueueHandle_t xQueue; - -static xSemaphoreHandle test_semaphore; - -static xTaskHandle send_handle; -static xTaskHandle recv_handle; +static QueueHandle_t xQueue_task; static FFreeRTOSCan *os_can_ctrl_p[FCAN_NUM]; static FCanFrame send_frame[FCAN_NUM]; static FCanFrame recv_frame[FCAN_NUM]; -static void FFreeRTOSCanSendTask(void *pvParameters); -static void FFreeRTOSCanRecvTask(void *pvParameters); -static void FFreeRTOSCanDelete(void); +static u32 recv_count[FCAN_NUM] = {0}; +static FError FFreeRTOSCanSendThenRecvData(int ide); +static FError FFreeRTOSCanRecvData(u32 instance_id); +static void FFreeRTOSCanDelete(void); static FError FFreeRTOSCanBaudrateSet(FFreeRTOSCan *os_can_p) { @@ -104,7 +112,6 @@ static FError FFreeRTOSCanBaudrateSet(FFreeRTOSCan *os_can_p) return ret; } - static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, int frame_type) { FError ret = FCAN_SUCCESS; @@ -131,24 +138,16 @@ static FError FFreeRTOSCanIdMaskSet(FFreeRTOSCan *os_can_p, int frame_type) return ret; } -static void FFreeRTOSCanInitTask(void *pvParameters) +static FError CanInit(int ide) { - FError ret = FCAN_SUCCESS; - BaseType_t xReturn = pdPASS; u32 instance_id = FCAN0_ID; + FError init_ret = FCAN_FAILURE; u32 tran_mode = FCAN_PROBE_NORMAL_MODE; - /* The queue is created to hold a maximum of 32 structures of type u32 instance_id . */ - xQueue = xQueueCreate(32, sizeof(u32)); - if (xQueue == NULL) - { - printf("FFreeRTOSCreateCanPolledTestTask FCanQueueData create failed.\r\n"); - } - /*init iomux*/ FIOMuxInit(); - for (instance_id = FCAN0_ID; instance_id < FCAN_NUM; instance_id++) + for (instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) { FIOPadSetCanMux(instance_id); @@ -156,209 +155,248 @@ static void FFreeRTOSCanInitTask(void *pvParameters) os_can_ctrl_p[instance_id] = FFreeRTOSCanInit(instance_id); if (os_can_ctrl_p[instance_id] == NULL) { - printf("FFreeRTOSCanInit %d failed!!!\r\n", instance_id); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit %d failed!!!", instance_id); + return init_ret; } /* set can baudrate */ - ret = FFreeRTOSCanBaudrateSet(os_can_ctrl_p[instance_id]); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanBaudrateSet(os_can_ctrl_p[instance_id]); + if (FCAN_SUCCESS != init_ret) { - printf("FFreeRTOSCanInit FFreeRTOSCanBaudrateSet failed!!!\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanBaudrateSet failed!!!"); + return init_ret; } /* set can id mask */ - ret = FFreeRTOSCanIdMaskSet(os_can_ctrl_p[instance_id], ((int)(uintptr)pvParameters)); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanIdMaskSet(os_can_ctrl_p[instance_id], ide); + if (FCAN_SUCCESS != init_ret) { - printf("FFreeRTOSCanInit FFreeRTOSCanIdMaskSet failed!!!\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("FFreeRTOSCanInit FFreeRTOSCanIdMaskSet failed!!!"); + return init_ret; } /* Identifier mask enable */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ID_MASK_ENABLE, NULL); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ID_MASK_ENABLE, NULL); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_ID_MASK_ENABLE failed."); - goto can_init_exit; + return init_ret; } /* set can transfer mode */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_MODE_SET, &tran_mode); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_MODE_SET, &tran_mode); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_MODE_SET failed."); - goto can_init_exit; + return init_ret; } /* enable can transfer */ - ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ENABLE, NULL); - if (FCAN_SUCCESS != ret) + init_ret = FFreeRTOSCanControl(os_can_ctrl_p[instance_id], FREERTOS_CAN_CTRL_ENABLE, NULL); + if (FCAN_SUCCESS != init_ret) { FCAN_TEST_ERROR("FFreeRTOSCanControl FREERTOS_CAN_CTRL_ENABLE failed."); - goto can_init_exit; + return init_ret; } - } - printf("FFreeRTOSCanInitTask execute success !!!\r\n"); + return init_ret; +} - if ( ((int)(uintptr)pvParameters) == 0 ) - { - printf("Standard frame test example!!!\r\n"); - } - else if ( ((int)(uintptr)pvParameters) == 1 ) - { - printf("Extended frame test example!!!\r\n"); - } +/* +pvParameters + 0:standard frame test task + 1:extended frame test task + */ +static void FFreeRTOSCanPolledTask(void *pvParameters) +{ + FError ret = FCAN_SUCCESS; + int task_res = 0; + int ide = (int)(uintptr)pvParameters; - /* can send task */ - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanSendTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanSendTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - pvParameters,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 5, /* 任务的优先级 */ - (TaskHandle_t *)&send_handle); /* 任务控制 */ - if (xReturn != pdPASS) + /* init can controller */ + ret = CanInit(ide); + if (CAN_TEST_SUCCESS != ret) { - printf("Create FFreeRTOSCanSendTask failed.\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("Can init failed."); + task_res = CAN_INIT_FAILURE; + goto can_test_exit; } - /* can recv task */ - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanRecvTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanRecvTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 5, /* 任务的优先级 */ - (TaskHandle_t *)&recv_handle); /* 任务控制 */ - if (xReturn != pdPASS) + /* can send data */ + ret = FFreeRTOSCanSendThenRecvData(ide); + if (CAN_TEST_SUCCESS != ret) { - printf("Create FFreeRTOSCanRecvTask failed.\r\n"); - goto can_init_exit; + FCAN_TEST_ERROR("Can send then recv data failed."); + task_res = CAN_DATA_FAILURE; + goto can_test_exit; } -can_init_exit: +can_test_exit: + FFreeRTOSCanDelete(); + xQueueSend(xQueue_task, &task_res, 0); vTaskDelete(NULL); } -static void FFreeRTOSCanSendTask(void *pvParameters) +static FError FFreeRTOSCanSendThenRecvData(int ide) { FError ret = FCAN_SUCCESS; u32 instance_id = FCAN0_ID; - u32 count[FCAN_NUM] = {0}; - u32 send_max_id; - int i = 0; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + u32 count = 0; + BaseType_t xReturn = pdPASS; + + for (int j = 0; j < FCAN_SEND_CNT; j++) { - printf("\r\ncan send task running.\r\n"); - for (instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) + for (u32 instance_id = FCAN0_ID; instance_id <= FCAN1_ID; instance_id++) { - send_frame[instance_id].candlc = FCAN_SEND_LENGTH; //DLC - if (((int)(uintptr)pvParameters) == 1) + send_frame[instance_id].candlc = FCAN_SEND_LENGTH; + if (ide == EXTEND_FRAME) { - send_frame[instance_id].canid = FCAN_SEND_EXID + count[instance_id]; //EXID //IDE + send_frame[instance_id].canid = FCAN_SEND_EXID + count; send_frame[instance_id].canid |= CAN_EFF_FLAG; - send_max_id = CAN_EFF_MASK | CAN_EFF_FLAG; } else { - send_frame[instance_id].canid = FCAN_SEND_STID + count[instance_id]; //STID + send_frame[instance_id].canid = FCAN_SEND_STID + count; send_frame[instance_id].canid &= CAN_SFF_MASK; - send_max_id = CAN_SFF_MASK; } - for (i = 0; i < send_frame[instance_id].candlc; i++) + for (int i = 0; i < send_frame[instance_id].candlc; i++) { send_frame[instance_id].data[i] = i + (instance_id << 4); } ret = FFreeRTOSCanSend(os_can_ctrl_p[instance_id], &send_frame[instance_id]); if (ret != FCAN_SUCCESS) { - printf("can%d send failed.\n", instance_id); + FCAN_TEST_ERROR("can%d send failed.", instance_id); + ret = FCAN_INVAL_PARAM; + return ret; } - count[instance_id]++; + count++; vTaskDelay(CAN_SEND_PERIOD); - xQueueSendToBack(xQueue, &instance_id, portMAX_DELAY); - } - if ( (send_frame[instance_id - 1].canid == send_max_id) ) - { - vTaskDelete(NULL); + + /* can recv data */ + ret = FFreeRTOSCanRecvData(instance_id); + if (CAN_TEST_SUCCESS != ret) + { + FCAN_TEST_ERROR("Can recv data failed."); + return ret; + } } } + +return ret; } -static void FFreeRTOSCanRecvTask(void *pvParameters) +static FError FFreeRTOSCanRecvData(u32 instance_id) { FError ret = FCAN_SUCCESS; - u32 count[FCAN_NUM] = {0}; - int i = 0; - u32 instance_id = FCAN1_ID; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + + instance_id = FCAN1_ID - instance_id; + ret = FFreeRTOSCanRecv(os_can_ctrl_p[instance_id], &recv_frame[instance_id]); + if (FCAN_SUCCESS == ret) { - /* wait can send give semphore */ - xQueueReceive(xQueue, &instance_id, portMAX_DELAY); - instance_id = FCAN1_ID - instance_id; - ret = FFreeRTOSCanRecv(os_can_ctrl_p[instance_id], &recv_frame[instance_id]); - if (FCAN_SUCCESS == ret) + FCAN_TEST_DEBUG("can%d recv id is 0x%02x.", instance_id, recv_frame[instance_id].canid); + FCAN_TEST_DEBUG("can%d recv dlc is %d.", instance_id, recv_frame[instance_id].candlc); + FCAN_TEST_DEBUG("can%d recv data is ", instance_id); + for (int i = 0; i < recv_frame[instance_id].candlc; i++) { - printf("\r\ncan%d recv id is 0x%02x.\r\n", instance_id, recv_frame[instance_id].canid); - printf("can%d recv dlc is %d.\r\n", instance_id, recv_frame[instance_id].candlc); - printf("can%d recv data is ", instance_id); - for (i = 0; i < recv_frame[instance_id].candlc; i++) + FCAN_TEST_DEBUG("0x%02x ", recv_frame[instance_id].data[i]); + if (recv_frame[instance_id].data[i] != send_frame[FCAN1_ID - instance_id].data[i]) { - printf("0x%02x ", recv_frame[instance_id].data[i]); - if (recv_frame[instance_id].data[i] != send_frame[FCAN1_ID - instance_id].data[i]) - { - FCAN_TEST_ERROR("\ncount%d = %d: can%d recv is not equal to can%d send!!!\r\n", instance_id, count[instance_id], instance_id, FCAN1_ID - instance_id); - } + FCAN_TEST_ERROR("count%d = %d: can%d recv is not equal to can%d send!!!", instance_id, recv_count[instance_id], instance_id, FCAN1_ID - instance_id); + ret = CAN_DATA_FAILURE; + return ret; } - printf("\ncount%d = %d: can%d recv is equal to can%d send!!!\r\n", instance_id, count[instance_id], instance_id, FCAN1_ID - instance_id); - count[instance_id]++; } - if ((instance_id == 0) - && ((recv_frame[instance_id].canid == (FCAN_SEND_EXID_MAX | CAN_EFF_FLAG)) - || (recv_frame[instance_id].canid == FCAN_SEND_STID_MAX))) + FCAN_TEST_DEBUG("count%d = %d: can%d recv is equal to can%d send!!!", instance_id, recv_count[instance_id], instance_id, FCAN1_ID - instance_id); + recv_count[instance_id]++; + } + if (recv_count[instance_id] == FCAN_SEND_CNT) + { + if (recv_frame[instance_id].canid & CAN_EFF_FLAG) { - FFreeRTOSCanDelete(); + printf("can%d -> can%d: Extended frame polled loop test completed.\r\n", FCAN1_ID - instance_id, instance_id); } - } + else + { + printf("can%d -> can%d: Standard frame polled loop test completed.\r\n", FCAN1_ID - instance_id, instance_id); + } + recv_count[instance_id] = 0; + } + + return ret; } /* create can polled test, can0 and can1 loopback */ BaseType_t FFreeRTOSCreateCanPolledTestTask(void) { + int task_res = CAN_UNKNOWN_STATE; BaseType_t xReturn = pdPASS; - BaseType_t timer_started = pdPASS; - test_semaphore = xSemaphoreCreateBinary(); - if (test_semaphore != NULL) + xQueue_task = xQueueCreate(1, sizeof(int)); + if (xQueue_task == NULL) { - xSemaphoreGive(test_semaphore); + FCAN_TEST_ERROR("xQueue_task create failed."); + goto exit; } /* can polled example standard frame task */ - xSemaphoreTake(test_semaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanInitTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanInitTask",/* 任务名字 */ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanPolledTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSCanPolledStandardTask",/* 任务名字 */ (uint16_t)1024, /* 任务栈大小 */ - (void *)0,/* 任务入口函数参数 */ - (UBaseType_t)1, /* 任务的优先级 */ + (void *)STANDARD_FRAME,/* 任务入口函数参数 */ + (UBaseType_t)CAN_POLLED_TASK_PRIORITY, /* 任务的优先级 */ NULL); /* 任务控制 */ + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xTaskCreate FFreeRTOSCanPolledTask failed."); + goto exit; + } + + xReturn = xQueueReceive(xQueue_task, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_task receive timeout."); + goto exit; + } /* can polled example extended frame task */ - xSemaphoreTake(test_semaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanInitTask, /* 任务入口函数 */ - (const char *)"FFreeRTOSCanInit2Task",/* 任务名字 */ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSCanPolledTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSCanPolledExtendedTask",/* 任务名字 */ (uint16_t)1024, /* 任务栈大小 */ - (void *)1,/* 任务入口函数参数 */ - (UBaseType_t)1, /* 任务的优先级 */ + (void *)EXTEND_FRAME,/* 任务入口函数参数 */ + (UBaseType_t)CAN_POLLED_TASK_PRIORITY, /* 任务的优先级 */ NULL); /* 任务控制 */ + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xTaskCreate FFreeRTOSCanPolledTask failed."); + goto exit; + } + + xReturn = xQueueReceive(xQueue_task, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FCAN_TEST_ERROR("xQueue_task receive timeout."); + goto exit; + } + +exit: + if (xQueue_task != NULL) + { + vQueueDelete(xQueue_task); + } - return xReturn; + if (task_res != CAN_TEST_SUCCESS) + { + printf("%s@%d: Can polled loopback mode example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Can polled loopback mode example [success].\r\n", __func__, __LINE__); + return pdPASS; + } } static void FFreeRTOSCanDelete(void) @@ -369,16 +407,4 @@ static void FFreeRTOSCanDelete(void) /*iopad deinit */ FIOMuxDeInit(); - - /* delete queue */ - vQueueDelete(xQueue); - - xSemaphoreGive(test_semaphore); - - if (recv_handle) - { - vPrintf("\r\nDelete FFreeRTOSCanRecvTask success.\r\n"); - vPrintf("\r\nDelete FFreeRTOSCanSendTask success.\r\n"); - vTaskDelete(recv_handle); - } } diff --git a/example/peripheral/can/can/src/cmd_can.c b/example/peripheral/can/can/src/cmd_can.c index 896686d8606764eac09aac9672b8ffd9fdc2fd80..dc63a738bdf423b3625c7e1c8f48110e273b23a8 100644 --- a/example/peripheral/can/can/src/cmd_can.c +++ b/example/peripheral/can/can/src/cmd_can.c @@ -21,25 +21,29 @@ * ----- ------ -------- -------------------------------------- * 1.0 huangjin 2023/10/16 first commit */ -#include "shell.h" +#include "sdkconfig.h" +#include "FreeRTOS.h" #include "can_example.h" #include +#include "task.h" #include - +#include "strto.h" +#ifdef CONFIG_USE_LETTER_SHELL +#include "../src/shell.h" static void CreateTasksCmdUsage(void) { printf("Usage:\r\n"); - printf(" can intr \r\n"); - printf(" -- Create can interrupt test example now. \r\n"); - printf(" can polled \r\n"); - printf(" -- Create can polled test example now. \r\n"); -#if defined(CONFIG_TARGET_E2000) - printf(" can filter \r\n"); - printf(" -- Create can filter test example now. \r\n"); + printf("can intr \r\n"); + printf("-- Create can interrupt test example now\r\n"); + printf("can polled \r\n"); + printf("-- Create can polled test example now\r\n"); +#if defined(CONFIG_E2000D_DEMO_BOARD) || defined(CONFIG_E2000Q_DEMO_BOARD) + printf("can filter \r\n"); + printf("-- Create can filter test example now\r\n"); #endif } -int CreateTasksCmd(int argc, char *argv[]) +int CanCmdEntry(int argc, char *argv[]) { if (argc < 2) { @@ -54,7 +58,7 @@ int CreateTasksCmd(int argc, char *argv[]) { FFreeRTOSCreateCanPolledTestTask(); } -#if defined(CONFIG_TARGET_E2000) +#if defined(CONFIG_E2000D_DEMO_BOARD) || defined(CONFIG_E2000Q_DEMO_BOARD) else if (!strcmp(argv[1], "filter")) { FFreeRTOSCanCreateFilterTestTask(); @@ -69,6 +73,5 @@ int CreateTasksCmd(int argc, char *argv[]) return 0; } -SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), can, CreateTasksCmd, can creating test); - - +SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), can, CanCmdEntry, test freertos can driver); +#endif \ No newline at end of file diff --git a/example/peripheral/dma/ddma/README.md b/example/peripheral/dma/ddma/README.md index b24c65fee6da57f919b38c08ea8d9d33b2a8310b..62692667123d617eac938a795520dd748a6e2282 100644 --- a/example/peripheral/dma/ddma/README.md +++ b/example/peripheral/dma/ddma/README.md @@ -15,10 +15,20 @@ DDMA (Device Direct Memory Access) 用于配合外设,将数据从一个内存 本例程在 E2000 Demo 板 与飞腾派上完成测试,默认的内部回环模式下,无需额外接线 -如需要测试非内部回环模式,例如测试 E2000 D Demo 板的 SPI-2 ,测试前需要按照下图短接 SPI-2 的 RX 脚和 TX 脚,并合理修改代码 -> RX 脚是 CPU_IO (J30) 的 5 脚和 9 脚 +如需要测试非内部回环模式,修改代码: +ddma_spi_loopback.c文件,DdmaTask函数修改spim_config.inner_loopback = FALSE。(TRUE为内部回环模式,FALSE为外部回环模式)。 + +且接线: + E2000 D Demo 板的 SPI-2 ,测试前需要按照下图短接 SPI-2 的 RX 脚和 TX 脚 +> RX 脚是 CPU_IO (J30) 的 5 脚, TX 脚是 CPU_IO (J30) 的9 脚。 ![](./figs/spi2_pin.jpg) + +Phytium Pi接线方法:杜邦线连接下图所示得19号引脚和21号引脚。 +
+ +
+ ### 2.1 硬件配置方法 本例程支持的硬件平台包括 @@ -104,9 +114,15 @@ bootelf -p 0x90100000 ``` ddma spi-loopback ``` - ![loopback](./figs/loopback.png) +- 可以自行设置传输字节大小N。[注:传输的字节数N需为4的倍数,且小于128.] + +``` +ddma spi-loopback [N] +``` + +![Alt text](./figs/loopback_64.png) ## 3. 如何解决问题 diff --git a/example/peripheral/dma/ddma/figs/loopback.png b/example/peripheral/dma/ddma/figs/loopback.png index 038a3dba10d75eb1dce4fdb1adbaeef80518ea4a..18cd7c61174bf554f695b6e9fe9289b5e998061b 100644 Binary files a/example/peripheral/dma/ddma/figs/loopback.png and b/example/peripheral/dma/ddma/figs/loopback.png differ diff --git a/example/peripheral/dma/ddma/figs/loopback_64.png b/example/peripheral/dma/ddma/figs/loopback_64.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd10cf7c785e8f4108dffcdbd4396ff48393836 Binary files /dev/null and b/example/peripheral/dma/ddma/figs/loopback_64.png differ diff --git a/example/peripheral/dma/ddma/figs/phytiumpi.png b/example/peripheral/dma/ddma/figs/phytiumpi.png new file mode 100644 index 0000000000000000000000000000000000000000..ce35ad2474f0bdaf555b818f09fca41afaab6185 Binary files /dev/null and b/example/peripheral/dma/ddma/figs/phytiumpi.png differ diff --git a/example/peripheral/dma/ddma/inc/ddma_spi_loopback.h b/example/peripheral/dma/ddma/inc/ddma_spi_loopback.h index 5b89d3700fbe21d169daa727e39e4f048ad50edf..b928c147ff79371482115384511f9279ebd6bb08 100644 --- a/example/peripheral/dma/ddma/inc/ddma_spi_loopback.h +++ b/example/peripheral/dma/ddma/inc/ddma_spi_loopback.h @@ -24,6 +24,9 @@ #ifndef DDMA_SPI_LOOPBACK_H #define DDMA_SPI_LOOPBACK_H +#include "ftypes.h" +#include "FreeRTOS.h" + #ifdef __cplusplus extern "C" { @@ -44,6 +47,8 @@ extern "C" /*****************************************************************************/ BaseType_t FFreeRTOSRunDDMASpiLoopback(u32 spi_id, u32 bytes); +void DdmaTasksEntry(void); + #ifdef __cplusplus } #endif diff --git a/example/peripheral/dma/ddma/main.c b/example/peripheral/dma/ddma/main.c index 361a95da2837a3db3ff99fae2ef200a7aab5ef4e..8bb4a24eba30c0f29cbd39add947d2668e45c834 100644 --- a/example/peripheral/dma/ddma/main.c +++ b/example/peripheral/dma/ddma/main.c @@ -13,31 +13,47 @@ * * FilePath: main.c * Date: 2022-06-17 08:17:59 - * LastEditTime: 2022-06-17 08:17:59 + * LastEditTime: 2024-04-19 08:17:59 * Description: This file is for DDMA example that running shell task and open scheduler. * * Modify History: * Ver Who Date Changes * ----- ------ -------- -------------------------------------- * 1.0 zhugengyu 2022/08/26 first commit + * 2.0 liyilun 2024/4/19 add no letter shell mode, adapt to auto test system */ +#include +#include "FreeRTOS.h" +#include "task.h" +#include"ddma_spi_loopback.h" + +#ifdef CONFIG_USE_LETTER_SHELL #include "shell.h" #include "shell_port.h" -#include +#endif int main(void) { BaseType_t ret; +#ifdef CONFIG_USE_LETTER_SHELL ret = LSUserShellTask() ; if (ret != pdPASS) { goto FAIL_EXIT; } +#else - /* ret = FFreeRTOSRunDDMASpiLoopback(2U, 32U); */ - + taskENTER_CRITICAL(); + ret = xTaskCreate((TaskFunction_t)DdmaTasksEntry, + (const char *)"DdmaTaskEntry", + (uint16_t)4096, + NULL, + (UBaseType_t)2, + NULL); + taskEXIT_CRITICAL(); +#endif vTaskStartScheduler(); /* 启动任务,开启调度 */ while (1); /* 正常不会执行到这里 */ diff --git a/example/peripheral/dma/ddma/src/cmd_ddma.c b/example/peripheral/dma/ddma/src/cmd_ddma.c index 523351bac5f3af66dc3127d19bcd45207e629f2e..3891b6839ff1b7fd636a0a85c7cdee06032a6fe9 100644 --- a/example/peripheral/dma/ddma/src/cmd_ddma.c +++ b/example/peripheral/dma/ddma/src/cmd_ddma.c @@ -13,7 +13,7 @@ * * FilePath: cmd_ddma.c * Date: 2022-07-14 14:06:43 - * LastEditTime: 2022-07-14 14:06:43 + * LastEditTime: 2024-04-19 14:06:43 * Description:  This file is for DDMA command interface. * * Modify History: @@ -21,52 +21,64 @@ * -----  ------      --------     -------------------------------------- * 1.0 zhugengyu 2022/7/27 init commit * 1.1 liqiaozhong 2023/11/10 synchronous update with standalone sdk + * 2.0 liyilun 2024/4/19 add no letter shell mode, adapt to auto test system */ /***************************** Include Files *********************************/ #include #include -#include "strto.h" #include "sdkconfig.h" - -#include "FreeRTOS.h" - -#include "../src/shell.h" #include "ddma_spi_loopback.h" -/************************** Constant Definitions *****************************/ - -/************************** Variable Definitions *****************************/ +#include "strto.h" +#include "FreeRTOS.h" +#include "task.h" -/***************** Macros (Inline Functions) Definitions *********************/ -#if defined(CONFIG_TARGET_E2000D) || defined(CONFIG_TARGET_E2000Q) +#if defined(CONFIG_E2000Q_DEMO_BOARD) || defined(CONFIG_E2000D_DEMO_BOARD) #define USED_SPI_ID FSPI2_ID #else #define USED_SPI_ID FSPI0_ID #endif -/************************** Function Prototypes ******************************/ -/*****************************************************************************/ +#ifdef CONFIG_USE_LETTER_SHELL +#include "../src/shell.h" + +static void DdmaCmdUsage(void) +{ + printf("Usage:\r\n"); + printf("ddma spi-loopback\r\n"); + printf("-- Run ddma spi loopback example, default transfer 32 bytes\r\n"); + printf("ddma spi-loopback N\r\n"); + printf("-- Run ddma spi loopback example, N is a number, N <= 128 =bytes, default transfer N bytes\r\n"); +} + static int DdmaCmdEntry(int argc, char *argv[]) { int ret = 0; u32 bytes = 32; u32 spi_id = USED_SPI_ID; - if (!strcmp(argv[1], "spi-loopback")) { if (argc >= 3) { - spi_id = (u32)simple_strtoul(argv[2], NULL, 10); - } - - if (argc >= 4) - { - bytes = (u32)simple_strtoul(argv[3], NULL, 10); + bytes = (u32)simple_strtoul(argv[2], NULL, 10); } ret = FFreeRTOSRunDDMASpiLoopback(spi_id, bytes); + }else + { + DdmaCmdUsage(); } return ret; } -SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), ddma, DdmaCmdEntry, test freertos ddma driver); \ No newline at end of file +SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), ddma, DdmaCmdEntry, test freertos ddma driver); + +#else +void DdmaTasksEntry(void) +{ + u32 bytes = 32; + u32 spi_id = USED_SPI_ID; + FFreeRTOSRunDDMASpiLoopback(spi_id, bytes); + vTaskDelete(NULL); +} +#endif \ No newline at end of file diff --git a/example/peripheral/dma/ddma/src/ddma_spi_loopback.c b/example/peripheral/dma/ddma/src/ddma_spi_loopback.c index e64dcde376e011d027bc0fd4383a51298bfdab48..33823d2932499d6bcfc258e041f5cde8ecf987c2 100644 --- a/example/peripheral/dma/ddma/src/ddma_spi_loopback.c +++ b/example/peripheral/dma/ddma/src/ddma_spi_loopback.c @@ -1,3 +1,4 @@ + /* * Copyright : (C) 2022 Phytium Information Technology, Inc. * All Rights Reserved. @@ -13,7 +14,7 @@ * * FilePath: ddma_spi_loopback.c * Date: 2022-07-20 09:24:39 - * LastEditTime: 2022-07-20 09:24:39 + * LastEditTime: 2024-04-19 09:24:39 * Description:  This file is for DDMA task implementations. * * Modify History: @@ -21,6 +22,7 @@ * -----  ------      --------     -------------------------------------- * 1.0 zhugengyu 2022/7/27 init commit * 1.1 liqiaozhong 2023/11/10 synchronous update with standalone sdk + * 2.0 liyilun 2024/4/19 add no letter shell mode, adapt to auto test system */ /***************************** Include Files *********************************/ #include @@ -33,49 +35,33 @@ #include "fcache.h" #include "fassert.h" #include "fdebug.h" -#include "fio_mux.h" - +#include "fkernel.h" #include "fspim_os.h" #include "fddma_os.h" #include "fspim_hw.h" /************************** Constant Definitions *****************************/ +#define TIMER_OUT (pdMS_TO_TICKS(50000UL)) +#define WAIT_DMA_DONE_TICKS (pdMS_TO_TICKS(10000UL)) #define TX_RX_BUF_LEN 128 -#define CHAN_REQ_DONE(chan) (0x1 << chan) /* if signal, chan req finished */ +#define LOOPBACK_TIMES 3 /**************************** Type Definitions *******************************/ /************************** Variable Definitions *****************************/ static FFreeRTOSSpim *spim = NULL; -static FFreeRTOSSpimConifg spim_config = -{ - .spi_mode = FFREERTOS_SPIM_MODE_0, - .en_dma = TRUE, - .inner_loopback = TRUE -}; -static FFreeRTOSSpiMessage spi_msg = -{ - .tx_buf = NULL, - .tx_len = 0U, - .rx_buf = NULL, - .rx_len = 0U -}; static FFreeRTOSDdma *ddma = NULL; -static FFreeRTOSDdmaConfig ddma_config; -static QueueHandle_t sync = NULL; + +static QueueHandle_t xQueue = NULL; +/* spim test id */ static u32 spi_instance_id = 0U; -static u32 dma_trans_bytes = 32U; static FDdmaChanIndex rx_chan_id = FDDMA_CHAN_0; static FDdmaChanIndex tx_chan_id = FDDMA_CHAN_1; static FFreeRTOSRequest rx_request = {0}; static FFreeRTOSRequest tx_request = {0}; -static EventGroupHandle_t chan_evt = NULL; static u8 rx_buf[TX_RX_BUF_LEN] __attribute__((aligned(FDDMA_DDR_ADDR_ALIGMENT))) = {0}; static u8 tx_buf[TX_RX_BUF_LEN] __attribute__((aligned(FDDMA_DDR_ADDR_ALIGMENT))) = {0}; -static u32 trans_len = 32U; -static TaskHandle_t send_task = NULL; -static TaskHandle_t recv_task = NULL; -static TimerHandle_t exit_timer = NULL; -static u32 loopback_times = 3U; -static boolean is_running = FALSE; + +static TaskHandle_t ddma_trans_task; + static const u32 spim_rx_slave_id[FSPI_NUM] = { [FSPI0_ID] = FDDMA0_SPIM0_RX_SLAVE_ID, @@ -96,169 +82,33 @@ static const u32 spim_tx_slave_id[FSPI_NUM] = #define FDDMA_WARN(format, ...) FT_DEBUG_PRINT_W(FDDMA_DEBUG_TAG, format, ##__VA_ARGS__) #define FDDMA_INFO(format, ...) FT_DEBUG_PRINT_I(FDDMA_DEBUG_TAG, format, ##__VA_ARGS__) #define FDDMA_DEBUG(format, ...) FT_DEBUG_PRINT_D(FDDMA_DEBUG_TAG, format, ##__VA_ARGS__) -/************************** Function Prototypes ******************************/ -static void DdmaSpiLoopbackExitCallback(TimerHandle_t timer) -{ - FError err = FT_SUCCESS; - printf("exiting.....\r\n"); - - if (send_task) /* stop and delete send task */ - { - vTaskDelete(send_task); - send_task = NULL; - } - - if (recv_task) /* stop and delete recv task */ - { - vTaskDelete(recv_task); - recv_task = NULL; - } - - if (spim) - { - err = FFreeRTOSSpimDeInit(spim); - spim = NULL; - } - - if (ddma) - { - if (FT_SUCCESS != FFreeRTOSDdmaRevokeChannel(ddma, rx_chan_id)) - { - FDDMA_ERROR("Delete RX channel failed."); - } - - if (FT_SUCCESS != FFreeRTOSDdmaRevokeChannel(ddma, tx_chan_id)) - { - FDDMA_ERROR("Delete TX channel failed."); - } - - err = FFreeRTOSDdmaDeinit(ddma); - ddma = NULL; - } - - if (chan_evt) - { - vEventGroupDelete(chan_evt); - chan_evt = NULL; - } - - if (sync) - { - vQueueDelete(sync); - sync = NULL; - } - - if (pdPASS != xTimerDelete(timer, 0)) /* delete timer itself */ - { - FDDMA_ERROR("Delete exit timer failed."); - exit_timer = NULL; - } - - is_running = FALSE; -} static void DdmaSpiLoopbackAckDMADone(FDdmaChanIrq *const chan_irq_info_p, void *arg) { FASSERT(chan_irq_info_p); BaseType_t xhigher_priority_task_woken = pdFALSE; - BaseType_t x_result = pdFALSE; FDDMA_INFO("Ack chan-%d %s done for DDMA.", chan_irq_info_p->channel_id, (chan_irq_info_p->channel_id == rx_chan_id) ? "RX" : "TX"); - FASSERT_MSG(chan_evt, "RX event group not exists."); - - x_result = xEventGroupSetBitsFromISR(chan_evt, - CHAN_REQ_DONE(chan_irq_info_p->channel_id), - &xhigher_priority_task_woken); - - - if (x_result == pdFALSE) - { - FDDMA_ERROR("xEventGroupSetBitsFromISR() fail."); - } - + xTaskNotifyFromISR(ddma_trans_task, BIT(chan_irq_info_p->channel_id), eSetBits, &xhigher_priority_task_woken); portYIELD_FROM_ISR(xhigher_priority_task_woken); return; } -static boolean DdmaSpiLoopbackWaitDmaEnd(void) -{ - const TickType_t wait_delay = pdMS_TO_TICKS(10000UL); /* wait for 5 seconds */ - boolean ok = TRUE; - EventBits_t ev; - u32 wait_bits = CHAN_REQ_DONE(rx_chan_id) | CHAN_REQ_DONE(tx_chan_id); - - ev = xEventGroupWaitBits(chan_evt, wait_bits, pdTRUE, pdTRUE, wait_delay); - if ((ev & wait_bits) == wait_bits) - { - FDDMA_INFO("DDMA transfer success."); - } - else - { - if ((ev & CHAN_REQ_DONE(tx_chan_id)) == 0U) - { - FDDMA_ERROR("TX timeout."); - } - - if ((ev & CHAN_REQ_DONE(rx_chan_id)) == 0U) - { - FDDMA_ERROR("RX timeout."); - } - if (ev & wait_bits == 0U) - { - FDDMA_ERROR("Both TX and RX timeout."); - } - - ok = FALSE; - } - - return ok; -} - -static inline boolean DdmaSpiLoopbackGiveSync() -{ - boolean data = TRUE; - FASSERT_MSG((NULL != sync), "Sync not exists."); - if (pdFALSE == xQueueSend(sync, &data, portMAX_DELAY)) - { - FDDMA_ERROR("Failed to give locker."); - return FALSE; - } - - return TRUE; -} - -static inline void DdmaSpiLoopbackTakeSync() -{ - boolean data = FALSE; - FASSERT_MSG((NULL != sync), "Sync not exists."); - if (pdFALSE == xQueueReceive(sync, &data, portMAX_DELAY)) - { - FDDMA_ERROR("Failed to give locker."); - } - - return; -} - -static void DdmaInitTask(void *args) +static void SpimDdmaInit(FFreeRTOSSpimConifg spim_config, u32 trans_len) { const u32 ddma_id = FDDMA0_ID; /* spi use DDMA-0 only */ FError err = FT_SUCCESS; uintptr spi_base; - - trans_len = dma_trans_bytes; - + FFreeRTOSDdmaConfig ddma_config; spim = FFreeRTOSSpimInit(spi_instance_id, &spim_config); /* init SPIM */ FASSERT_MSG(spim, "Init SPIM failed."); - - ddma = FFreeRTOSDdmaInit(ddma_id, &ddma_config); /* deinit DDMA */ + ddma = FFreeRTOSDdmaInit(ddma_id, &ddma_config); /* init DDMA */ FASSERT_MSG(ddma, "Init DDMA failed."); - spi_base = spim->ctrl.config.base_addr; - rx_request.slave_id = spim_rx_slave_id[spi_instance_id]; rx_request.mem_addr = (uintptr)(void *)rx_buf; rx_request.dev_addr = spi_base + FSPIM_DR_OFFSET; @@ -279,190 +129,226 @@ static void DdmaInitTask(void *args) err = FFreeRTOSDdmaSetupChannel(ddma, tx_chan_id, &tx_request); FASSERT_MSG(FT_SUCCESS == err, "Init TX channel failed."); - DdmaSpiLoopbackGiveSync(); /* give sync and allow sending */ - - vTaskDelete(NULL); } -static void DdmaSpiLoopbackSendTask(void *args) -{ - u32 loop; - u32 times = 0U; - char ch = 'A'; - const TickType_t wait_delay = pdMS_TO_TICKS(2000UL); /* wait for 2 seconds */ - for (;;) +static void SpimDdmaDeinit(void) +{ + FError err = FT_SUCCESS; + FDDMA_INFO("Deiniting.....\r\n"); + if (spim) { - FDDMA_INFO("Waiting send data..."); - - DdmaSpiLoopbackTakeSync(); /* is sending, take send sync and cannot send again */ - - memset(tx_buf, 0, trans_len); - memset(rx_buf, 0, trans_len); - - for (loop = 0; loop < trans_len; loop += 4) + err = FFreeRTOSSpimDeInit(spim); + if(err != FT_SUCCESS) { - tx_buf[loop] = (u8)ch + (times % 10); + FDDMA_ERROR("Spim deinit fail."); } - - FCacheDCacheInvalidateRange((uintptr)(void *)tx_buf, trans_len); - - printf("Before loopback ..... \r\n"); - printf("TX buf ===> \r\n"); - FtDumpHexByte((u8 *)tx_buf, trans_len); - printf("RX buf <=== \r\n"); - FtDumpHexByte((u8 *)rx_buf, trans_len); - - spi_msg.rx_buf = rx_buf; - spi_msg.rx_len = trans_len; - spi_msg.tx_buf = tx_buf; - spi_msg.tx_len = trans_len; - - if ((FFREERTOS_DDMA_OK != FFreeRTOSDdmaStartChannel(ddma, rx_chan_id)) || - (FFREERTOS_DDMA_OK != FFreeRTOSDdmaStartChannel(ddma, tx_chan_id))) + spim = NULL; + } + if (ddma) + { + if (FT_SUCCESS != FFreeRTOSDdmaRevokeChannel(ddma, rx_chan_id)) { - FDDMA_ERROR("Start DDMA channel failed."); - break; + FDDMA_ERROR("Delete RX channel failed."); } - vTaskDelay(200); - - /* setup spi transfer only for the first time */ - if ((0 == times) && (FFREERTOS_DDMA_OK != FFreeRTOSSpimTransfer(spim, &spi_msg))) + if (FT_SUCCESS != FFreeRTOSDdmaRevokeChannel(ddma, tx_chan_id)) { - FDDMA_ERROR("Start SPI transfer failed."); - break;; + FDDMA_ERROR("Delete TX channel failed."); } - if (times++ > loopback_times) + err = FFreeRTOSDdmaDeinit(ddma); + if(err != FT_SUCCESS) { - break; + FDDMA_ERROR("Ddma Deinit fail."); } - - vTaskDelay(wait_delay); + ddma = NULL; } -task_err: - printf("Send task finished.\r\n"); - FFreeRTOSDdmaStop(ddma); - vTaskSuspend(NULL); + + FDDMA_INFO("Deinit success!\r\n"); } -static void DdmaSpiLoopbackRecvTask(void *args) +static boolean DdmaSpiLoopbackWaitDmaEnd(void) { - u32 times = 0U; - - for (;;) + boolean ret = TRUE; + u32 ulNotifiedValue; + u32 wait_bits = BIT(rx_chan_id) | BIT(tx_chan_id); + xTaskNotifyWait(pdFALSE, 0xffffffff, &ulNotifiedValue,WAIT_DMA_DONE_TICKS); + if ((ulNotifiedValue & wait_bits) == wait_bits) { - FDDMA_INFO("Waiting for recv data..."); - - /* block recv task until RX done */ - if (!DdmaSpiLoopbackWaitDmaEnd()) - { - continue; - } - - if ((FFREERTOS_DDMA_OK != FFreeRTOSDdmaStopChannel(ddma, tx_chan_id)) || - (FFREERTOS_DDMA_OK != FFreeRTOSDdmaStopChannel(ddma, rx_chan_id))) + FDDMA_INFO("DDMA transfer success."); + } + else + { + if ((ulNotifiedValue & BIT(tx_chan_id)) == 0U) { - FDDMA_ERROR("Stop DDMA transfer failed."); - continue; + FDDMA_ERROR("TX timeout."); } - FCacheDCacheInvalidateRange((uintptr)(void *)rx_buf, trans_len); - - printf("After loopback ..... \r\n"); - printf("TX buf ===> \r\n"); - FtDumpHexByte(tx_buf, trans_len); - printf("RX buf <=== \r\n"); - FtDumpHexByte(rx_buf, trans_len); - - /* compare if loopback success */ - if (0 == memcmp(rx_buf, tx_buf, trans_len)) + if ((ulNotifiedValue & BIT(rx_chan_id)) == 0U) { - printf("Loopback transfer success.\r\n"); - } - else - { - FDDMA_ERROR("RX data != TX data, loopback transfer failed."); + FDDMA_ERROR("RX timeout."); } - if (times++ > loopback_times) + if (ulNotifiedValue & wait_bits == 0U) { - break; + FDDMA_ERROR("Both TX and RX timeout."); } - DdmaSpiLoopbackGiveSync(); /* recv finish, give send sync and allow sending */ + ret = FALSE; } - printf("Receive task finished.\r\n"); - FFreeRTOSDdmaStop(ddma); - vTaskSuspend(NULL); + return ret; + + } -BaseType_t FFreeRTOSRunDDMASpiLoopback(u32 spi_id, u32 bytes) + +static int DdmaSpiLoopbackSend(u32 trans_len) { - BaseType_t ret = pdPASS; - const TickType_t total_run_time = pdMS_TO_TICKS(30000UL); /* loopback runs for 10 secs deadline */ + u32 loop; + FDDMA_INFO("Waiting send data..."); + static FFreeRTOSSpiMessage spi_msg; + memset(tx_buf, 0, trans_len); + memset(rx_buf, 0, trans_len); - if (is_running) + for (loop = 0; loop < trans_len; loop += 4) { - FDDMA_ERROR("Task is running."); - return pdPASS; + tx_buf[loop] = loop; } - is_running = TRUE; - spi_instance_id = spi_id; - dma_trans_bytes = bytes; - - FASSERT_MSG(NULL == chan_evt, "Event group exists."); - FASSERT_MSG((chan_evt = xEventGroupCreate()) != NULL, "Create event group failed."); - - FASSERT_MSG(NULL == sync, "Sync exists."); - FASSERT_MSG((sync = xQueueCreate(1, sizeof(boolean))) != NULL, "Create sync failed."); - taskENTER_CRITICAL(); /* no schedule when create task */ + printf("Before loopback ..... \r\n"); + printf("TX buf ===> \r\n"); + FtDumpHexByte((u8 *)tx_buf, trans_len); + printf("RX buf <=== \r\n"); + FtDumpHexByte((u8 *)rx_buf, trans_len); - ret = xTaskCreate((TaskFunction_t)DdmaInitTask, /* task entry */ - (const char *)"DdmaInitTask",/* task name */ - (uint16_t)4096, /* task stack size in words */ - NULL, /* task params */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* task priority */ - NULL); /* task handler */ + spi_msg.rx_buf = rx_buf; + spi_msg.rx_len = trans_len; + spi_msg.tx_buf = tx_buf; + spi_msg.tx_len = trans_len; - FASSERT_MSG(pdPASS == ret, "Create task failed."); - - ret = xTaskCreate((TaskFunction_t)DdmaSpiLoopbackSendTask, /* task entry */ - (const char *)"DdmaSpiLoopbackSendTask",/* task name */ - (uint16_t)4096, /* task stack size in words */ - NULL, /* task params */ - (UBaseType_t)configMAX_PRIORITIES - 2, /* task priority */ - (TaskHandle_t *)&send_task); /* task handler */ - - FASSERT_MSG(pdPASS == ret, "Create task failed."); + if ((FFREERTOS_DDMA_OK != FFreeRTOSDdmaStartChannel(ddma, rx_chan_id)) || + (FFREERTOS_DDMA_OK != FFreeRTOSDdmaStartChannel(ddma, tx_chan_id))) + { + FDDMA_ERROR("Start DDMA channel failed."); + return FFREERTOS_DDMA_TRANSFER_FAIL; + } - ret = xTaskCreate((TaskFunction_t)DdmaSpiLoopbackRecvTask, /* task entry */ - (const char *)"DdmaSpiLoopbackRecvTask",/* task name */ - (uint16_t)4096, /* task stack size in words */ - NULL, /* task params */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* task priority */ - (TaskHandle_t *)&recv_task); /* task handler */ + /* setup spi transfer only for the first time */ + if (FFREERTOS_DDMA_OK != FFreeRTOSSpimTransfer(spim, &spi_msg)) + { + FDDMA_ERROR("Start SPI transfer failed."); + return FFREERTOS_DDMA_TRANSFER_FAIL; + } + return FFREERTOS_DDMA_OK; +} - FASSERT_MSG(pdPASS == ret, "Create task failed."); +static int DdmaSpiLoopbackCheckRecvData(u32 trans_len) +{ + FDDMA_INFO("Waiting for recv data..."); - exit_timer = xTimerCreate("Exit-Timer", /* Text name for the software timer - not used by FreeRTOS. */ - total_run_time, /* The software timer's period in ticks. */ - pdFALSE, /* Setting uxAutoRealod to pdFALSE creates a one-shot software timer. */ - NULL, /* use timer id to pass task data for reference. */ - DdmaSpiLoopbackExitCallback); /* The callback function to be used by the software timer being created. */ + if ((FFREERTOS_DDMA_OK != FFreeRTOSDdmaStopChannel(ddma, tx_chan_id)) || + (FFREERTOS_DDMA_OK != FFreeRTOSDdmaStopChannel(ddma, rx_chan_id))) + { + FDDMA_ERROR("Stop DDMA transfer failed."); + return FFREERTOS_DDMA_TRANSFER_FAIL; + } + printf("After loopback ..... \r\n"); + printf("TX buf ===> \r\n"); + FtDumpHexByte(tx_buf, trans_len); + printf("RX buf <=== \r\n"); + FtDumpHexByte(rx_buf, trans_len); + + /* compare if loopback success */ + if (0 == memcmp(rx_buf, tx_buf, trans_len)) + { + printf("Loopback transfer success.\r\n"); + return FFREERTOS_DDMA_OK; + } + else + { + FDDMA_ERROR("RX data != TX data, loopback transfer failed."); + return FFREERTOS_DDMA_TRANSFER_FAIL; + } +} - FASSERT_MSG(NULL != exit_timer, "Create exit timer failed."); +static void DdmaTask(void *pvParameters) +{ + int i=0; + int ret = FFREERTOS_DDMA_OK; + uint32_t notify_result; + ddma_trans_task = xTaskGetCurrentTaskHandle(); + uint32_t* trans_len_addr = (uint32_t*)pvParameters; + u32 trans_len = *trans_len_addr; + FASSERT_MSG((trans_len <= TX_RX_BUF_LEN) && (trans_len % 4 == 0), "Trans_len is wrong."); + FFreeRTOSSpimConifg spim_config; + spim_config.spi_mode = FFREERTOS_SPIM_MODE_0; + spim_config.en_dma = TRUE; + /*set test mode */ + spim_config.inner_loopback = TRUE; + for(i = 0; i < LOOPBACK_TIMES; i++) + { + SpimDdmaInit(spim_config, trans_len); + ret = DdmaSpiLoopbackSend(trans_len); + if(ret != FFREERTOS_DDMA_OK) + { + goto task_ret; + } + + if(!DdmaSpiLoopbackWaitDmaEnd()) + { + ret = FFREERTOS_DDMA_TRANSFER_FAIL; + goto task_ret; + } - taskEXIT_CRITICAL(); /* allow schedule since task created */ - ret = xTimerStart(exit_timer, 0); /* start */ + /* check recv data is right*/ + ret = DdmaSpiLoopbackCheckRecvData(trans_len); + SpimDdmaDeinit(); + if(ret != FFREERTOS_DDMA_OK) + { + goto task_ret; + } + } - FASSERT_MSG(pdPASS == ret, "Start exit timer failed."); +task_ret: + xQueueSend(xQueue, &ret, 0); + vTaskDelete(NULL); +} - return ret; +/* Parameter bytes indicates bytes of transfered data, and can be set by cmd. + * bytes default 32. bytes must be a multiple of 4, and <= 128. + * spi_id: valid spi controller id for board. + */ +BaseType_t FFreeRTOSRunDDMASpiLoopback(u32 spi_id, u32 bytes) +{ + BaseType_t ret = pdPASS; + int task_ret = 0; + spi_instance_id = spi_id; + xQueue = xQueueCreate(1,sizeof(int)); + + ret = xTaskCreate((TaskFunction_t)DdmaTask, /* task entry */ + (const char *)"DdmaTask",/* task name */ + (uint16_t)4096, /* task stack size in words */ + (void *)&bytes, /* task params */ + (UBaseType_t)configMAX_PRIORITIES - 1, /* task priority */ + NULL); /* task handler */ + + ret = xQueueReceive(xQueue, &task_ret, TIMER_OUT); + FASSERT_MSG(pdPASS == ret, "xQueue Receive failed.\r\n"); + + vQueueDelete(xQueue); + if(task_ret != FFREERTOS_DDMA_OK) + { + printf("%s@%d: Ddma spi loopback example [failure].\r\n", __func__, __LINE__); + return pdFAIL; + } + else + { + printf("%s@%d: Ddma spi loopback example [success].\r\n", __func__, __LINE__); + return pdTRUE; + } } \ No newline at end of file diff --git a/example/peripheral/dma/gdma/inc/gdma_memcpy.h b/example/peripheral/dma/gdma/inc/gdma_memcpy.h index 904700ffb160ea854d609681b928d766dc9e5306..ff4158095723f2bcb6826266a1131aa0a82ce52c 100644 --- a/example/peripheral/dma/gdma/inc/gdma_memcpy.h +++ b/example/peripheral/dma/gdma/inc/gdma_memcpy.h @@ -43,7 +43,7 @@ extern "C" /************************** Function Prototypes ******************************/ /*****************************************************************************/ -BaseType_t FFreeRTOSRunGdmaMemcpy(void); +int FFreeRTOSGdmaMemcpy(void); #ifdef __cplusplus } diff --git a/example/peripheral/dma/gdma/main.c b/example/peripheral/dma/gdma/main.c index 97ae6397628769e31298e354ea280a58155d0ddb..2d787192115c90f51e4e1d61e1b93148201ad7ae 100644 --- a/example/peripheral/dma/gdma/main.c +++ b/example/peripheral/dma/gdma/main.c @@ -42,7 +42,7 @@ void GdmaExampleTaskEntry() { /* example functions */ - FFreeRTOSRunGdmaMemcpy(); + FFreeRTOSGdmaMemcpy(); /* end flag */ printf("[test_end]\r\n"); @@ -75,5 +75,5 @@ int main(void) FAIL_EXIT: printf("GDMA example failed in main.c, the ret value is 0x%x. \r\n", ret); - return 0; + return -2; } \ No newline at end of file diff --git a/example/peripheral/dma/gdma/src/cmd_gdma.c b/example/peripheral/dma/gdma/src/cmd_gdma.c index c13dc78a0af44dd59b3e9fa202497c41ab53606c..a2cf9e6489300335d9e029a4b18749bc84b7f21f 100644 --- a/example/peripheral/dma/gdma/src/cmd_gdma.c +++ b/example/peripheral/dma/gdma/src/cmd_gdma.c @@ -29,6 +29,11 @@ #include "strto.h" #include "sdkconfig.h" +#ifdef CONFIG_USE_LETTER_SHELL +#include "../src/shell.h" + +#include "gdma_memcpy.h" +#endif /************************** Constant Definitions *****************************/ /************************** Variable Definitions *****************************/ @@ -39,11 +44,7 @@ /*****************************************************************************/ #ifdef CONFIG_USE_LETTER_SHELL -#include "../src/shell.h" - -#include "gdma_memcpy.h" - -static void SfudCmdUsage() +static void GdmaCmdUsage() { printf("Usage:\r\n"); printf("gdma memcpy\r\n"); @@ -54,9 +55,15 @@ static int GdmaCmdEntry(int argc, char *argv[]) { int ret = 0; + if (argc < 2) + { + GdmaCmdUsage(); + return -1; + } + if (!strcmp(argv[1], "memcpy")) { - ret = FFreeRTOSRunGdmaMemcpy(); + ret = FFreeRTOSGdmaMemcpy(); } return ret; diff --git a/example/peripheral/dma/gdma/src/gdma_memcpy.c b/example/peripheral/dma/gdma/src/gdma_memcpy.c index fa14e616ed53d5a66a908a16824dd385e7dbfbdc..57ef703305e9edbf7682d17d1fa573e9604e3eb4 100644 --- a/example/peripheral/dma/gdma/src/gdma_memcpy.c +++ b/example/peripheral/dma/gdma/src/gdma_memcpy.c @@ -55,9 +55,10 @@ /**************************** Type Definitions *******************************/ enum { - GDMA_MEMCPY_SUCCESS = 1, - GDMA_INIT_FAILURE = 2, - GDMA_MEMCPY_FAILURE = 3, + GDMA_EXAMPLE_SUCCESS = 0, + GDMA_EXAMPLE_UNKNOWN_STATE = 1, + GDMA_EXAMPLE_INIT_FAILURE = 2, + GDMA_EXAMPLE_MEMCPY_FAILURE = 3, }; /************************** Variable Definitions *****************************/ static FFreeRTOSGdma *gdma_instance_p = NULL; @@ -75,33 +76,34 @@ static uint8_t dst_data[GDMA_TRANS_LEN] __attribute__((aligned(GDMA_ADDR_ALIGNME static void GdmaMemcpyAckChanXEnd(uint32_t channel_id, void *args) { FASSERT(channel_id < FFREERTOS_GDMA_NUM_OF_CHAN); - BaseType_t xhigher_priority_task_woken = pdFALSE; - BaseType_t x_result = pdFALSE; FGDMA_INFO("FreeRTOS ack: GDMA channel-%d transfer end.", channel_id); vTaskNotifyGiveIndexedFromISR(gdma_trans_task, gdma_trans_task_index, &xhigher_priority_task_woken); gdma_trans_task = NULL; /* 将目标任务句柄清空,防止产生不必要的通知 */ portYIELD_FROM_ISR(xhigher_priority_task_woken); /* 如果中断触发了更高优先级的任务,确保更高优先级的任务尽快执行 */ - - return; } -static int GdmaInit(void) +static FError GdmaInit(void) { - int task_res = GDMA_MEMCPY_SUCCESS; + FError err = FFREERTOS_GDMA_OK; gdma_instance_p = FFreeRTOSGdmaInit(FGDMA_CONTROLLER_ID); - return task_res; + if (gdma_instance_p == NULL) + { + err = FFREERTOS_GDMA_COMMON_ERR; + } + + FGDMA_INFO("%s return with err: %d", __func__, err); + return err; } -static int GdmaMemcpy(void) +static FError GdmaMemcpy(void) { - int task_res = GDMA_MEMCPY_SUCCESS; - uint32_t notify_result; FError err = FFREERTOS_GDMA_OK; + uint32_t notify_result; const TickType_t max_block_time = pdMS_TO_TICKS(3000UL); /* os channel config set */ @@ -111,7 +113,7 @@ static int GdmaMemcpy(void) os_channel_config.trans_length = GDMA_TRANS_LEN; err = FFreeRTOSGdmaChanConfigure(gdma_instance_p, GDMA_CHANNEL_ID, &os_channel_config); - if (FFREERTOS_GDMA_OK != err) + if (err != FFREERTOS_GDMA_OK) { FGDMA_ERROR("FFreeRTOSGdmaChanConfigure() failed."); goto memcpy_exit; @@ -133,8 +135,8 @@ static int GdmaMemcpy(void) notify_result = ulTaskNotifyTakeIndexed(gdma_trans_task_index, pdTRUE, max_block_time); /* wait to be notified that the transmission is complete */ if (notify_result != 1) { - err = FFREERTOS_GDMA_MEMCPY_FAIL; - FGDMA_ERROR("Wait GDMA finish timeout."); + err = FFREERTOS_GDMA_SEMA_ERR; + FGDMA_ERROR("Wait GDMA finish notify_result timeout."); goto memcpy_exit; } @@ -146,42 +148,49 @@ static int GdmaMemcpy(void) FtDumpHexByte((const uint8_t *)src_data, min((size_t)GDMA_TRANS_LEN, (size_t)64U)); printf("dst buf...\r\n"); FtDumpHexByte((const uint8_t *)dst_data, min((size_t)GDMA_TRANS_LEN, (size_t)64U)); - taskEXIT_CRITICAL(); + taskEXIT_CRITICAL(); } else { + err = FFREERTOS_GDMA_COMMON_ERR; FGDMA_ERROR("src != dst, GDMA memcpy failed."); goto memcpy_exit; } memcpy_exit: - if (FFREERTOS_GDMA_OK != FFreeRTOSGdmaChanStop(gdma_instance_p, GDMA_CHANNEL_ID)) + if (FFreeRTOSGdmaChanStop(gdma_instance_p, GDMA_CHANNEL_ID) != FFREERTOS_GDMA_OK) { FGDMA_ERROR("FFreeRTOSGdmaChanStop() failed."); + err = FFREERTOS_GDMA_COMMON_ERR; } - if (FFREERTOS_GDMA_OK != FFreeRTOSGdmaChanDeconfigure(gdma_instance_p, GDMA_CHANNEL_ID)) + if (FFreeRTOSGdmaChanDeconfigure(gdma_instance_p, GDMA_CHANNEL_ID) != FFREERTOS_GDMA_OK) { FGDMA_ERROR("FFreeRTOSGdmaChanDeconfigure() failed."); + err = FFREERTOS_GDMA_COMMON_ERR; } - return task_res; + FGDMA_INFO("%s return with err: %d", __func__, err); + return err; } static void GdmaMemcpyTask() { - int task_res = GDMA_MEMCPY_SUCCESS; + FError err = FFREERTOS_GDMA_OK; + int task_res = GDMA_EXAMPLE_SUCCESS; - task_res = GdmaInit(); - if (task_res != GDMA_MEMCPY_SUCCESS) + err = GdmaInit(); + if (err != FFREERTOS_GDMA_OK) { + task_res = GDMA_EXAMPLE_INIT_FAILURE; FGDMA_ERROR("GdmaInit() failed."); goto task_exit; } - task_res = GdmaMemcpy(); - if (task_res != GDMA_MEMCPY_SUCCESS) + err = GdmaMemcpy(); + if (err != FFREERTOS_GDMA_OK) { + task_res = GDMA_EXAMPLE_MEMCPY_FAILURE; FGDMA_ERROR("GdmaMemcpy() failed."); goto task_exit; } @@ -192,10 +201,10 @@ task_exit: vTaskDelete(NULL); } -BaseType_t FFreeRTOSRunGdmaMemcpy(void) +int FFreeRTOSGdmaMemcpy(void) { BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */ - int task_res = 0; + int task_res = GDMA_EXAMPLE_UNKNOWN_STATE; xQueue = xQueueCreate(1, sizeof(int)); /* 创建消息队列 */ if (xQueue == NULL) @@ -229,14 +238,14 @@ BaseType_t FFreeRTOSRunGdmaMemcpy(void) vQueueDelete(xQueue); } - if (task_res != GDMA_MEMCPY_SUCCESS) + if (task_res != GDMA_EXAMPLE_SUCCESS) { printf("%s@%d: GDMA memcpy example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); - return pdFAIL; + return task_res; } else { printf("%s@%d: GDMA memcpy example [success].\r\n", __func__, __LINE__); - return pdTRUE; + return task_res; } } \ No newline at end of file diff --git a/example/peripheral/gpio/README.md b/example/peripheral/gpio/README.md index 15523496285927ba5c9a0694cdba26f561107390..ce30222355c67cf7e1690d935ff3b3817656cb37 100644 --- a/example/peripheral/gpio/README.md +++ b/example/peripheral/gpio/README.md @@ -9,7 +9,7 @@ GPIO (General-purpose input/output),即通用型输入输出,其引脚可以 ## 2. 如何使用例程 本例程需要用到 -- Phytium开发板(E2000) +- Phytium开发板(E2000)或 PhytiumPi - [Phytium FreeRTOS SDK](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk) - [Phytium Standalone SDK](https://gitee.com/phytium_embedded/phytium-standalone-sdk) @@ -18,20 +18,17 @@ GPIO (General-purpose input/output),即通用型输入输出,其引脚可以 - 杜邦线 #### 2.1.1 对于E2000 D/Q Demo 板 -- 在本例程中连接 GPIO-3-A-4 和 GPIO-3-4-5,分别配置为输入引脚和输出引脚,参考 E2000 Q 数据手册可知,引脚的复用功能6为 GPIO,因此例程中会修改引脚复用, +- 在本例程中短接 GPIO-3-A-4 和 GPIO-3-4-5,GPIO-3-4-5作为GPIO输出引脚,GPIO-3-A-4作为GPIO输入引脚,在J30位置如下图所示: -- 可以使用 GPIO-3-A-4 和 GPIO-3-A-5 进行测试 ,引脚为内侧第 3 和第 5 引脚,具体情况可以参考 E2000 Q Demo板原理图 ![](./figs/pin_connect_gpio3.jpg) -- 也可以使用GPIO-4-A-11 和 GPIO-4-A-12 的引脚为外侧排第 4 和第 5 引脚,具体情况可以参考 E2000 Q Demo板原理图 -![](./figs/pin_connect_gpio4.jpg) - - #### 2.1.2 对于飞腾派 - 需要用杜邦线短接GPIO3_1与GPIO3_2,分别对应飞腾派上的J1组引脚的第11号与第16号引脚 ![](./figs/firefly_gpio_board.png) +注:在上述例程中,若想使用其他GPIO进行测试,则需要在例程gpio_io_irq.c文件中修改GPIO引脚号IN_PIN_INDEX,OUT_PIN_INDEX,并重新编译烧写。 + ### 2.2 SDK配置方法 本例程需要, @@ -96,17 +93,18 @@ bootelf -p 0xa0100000 ### 2.4 输出与实验现象 -- 系统进入后,创建两个任务,一个控制输出引脚电平,另一个检查输入引脚电平,同时等待中断触发 +- 系统进入后,创建gpio irq测试任务,并根据引脚设置配置输入输出引脚,等待中断触发 ``` gpio io-irq ``` +![io-irq](figs/pin_intr_result.png) -![gpio_io_irq](./figs/gpio_io_irq.png) - +注:在例程中设置time out时间,当此时间内未发生中断事件,则任务会自动退出,并报超时错误。 ## 3. 如何解决问题 +- 本例程中采用上升沿触发GPIO中断,若需要修改为下降沿触发方式,则需要将gpio_io_irq.c文件中'irq_type'修改为相应中断触发方式,上升沿触发与下降沿触发原理相同,故在此不作赘述;若需要修改为电平触发方式,应注意:在高电平或者低电平模式下,GPIO会持续触发中断,此特性在驱动中由irq_one_time决定,当值为TRUE时进入中断后关闭该引脚的中断,防止一直进入中断,当电平为FASLE时,进入电平中断后,在电平持续时间内,中断会一直触发,直到电平变化,在rtos中可能出现卡死在任务中的现象,用户可根据实际需要修改irq_one_time的值。 ## 4. 修改历史记录 diff --git a/example/peripheral/gpio/figs/firefly_gpio_board.png b/example/peripheral/gpio/figs/firefly_gpio_board.png index d2f196d0600dfa86bd0019257668dbdb0d9bac8f..9da0b5fac853feacfe759fa59d16d30a054d34cb 100644 Binary files a/example/peripheral/gpio/figs/firefly_gpio_board.png and b/example/peripheral/gpio/figs/firefly_gpio_board.png differ diff --git a/example/peripheral/gpio/figs/gpio_io_irq.png b/example/peripheral/gpio/figs/gpio_io_irq.png deleted file mode 100644 index 91c41df474c2ba47efdf79265c81ece36fe2ba71..0000000000000000000000000000000000000000 Binary files a/example/peripheral/gpio/figs/gpio_io_irq.png and /dev/null differ diff --git a/example/peripheral/gpio/figs/pin_intr_result.png b/example/peripheral/gpio/figs/pin_intr_result.png new file mode 100644 index 0000000000000000000000000000000000000000..3d48e623e00acafd8484cdb9896b5cd54cd2b69b Binary files /dev/null and b/example/peripheral/gpio/figs/pin_intr_result.png differ diff --git a/example/peripheral/gpio/inc/gpio_io_irq.h b/example/peripheral/gpio/inc/gpio_io_irq.h index b2f35e3b308f22346de43d853cc7b3a9dc84b0ba..07fb3a6a08d63db1f18080c5bbac915c64de9fd8 100644 --- a/example/peripheral/gpio/inc/gpio_io_irq.h +++ b/example/peripheral/gpio/inc/gpio_io_irq.h @@ -24,6 +24,8 @@ #ifndef GPIO_IO_IRQ_H #define GPIO_IO_IRQ_H +#include "FreeRTOS.h" + #ifdef __cplusplus extern "C" { @@ -40,8 +42,7 @@ extern "C" /************************** Function Prototypes ******************************/ /*****************************************************************************/ -BaseType_t FFreeRTOSRunGpioIOIrq(u32 out_pin_idx, u32 in_pin_idx); - +BaseType_t FFreeRTOSRunGpioIrq(void); #ifdef __cplusplus } #endif diff --git a/example/peripheral/gpio/main.c b/example/peripheral/gpio/main.c index 7abccdf889679e7fa7a013a74ce1eb1aa1165f86..66341f2deba7256e42cd31a39511db05e9f81533 100644 --- a/example/peripheral/gpio/main.c +++ b/example/peripheral/gpio/main.c @@ -20,28 +20,60 @@ * Ver   Who        Date         Changes * ----- ------     --------    -------------------------------------- * 1.0 zhugengyu 2022/8/26 init commit + * 2.0 wangzq 2024/4/22 add no letter shell mode, adapt to auto-test system */ +#include + +#include "FreeRTOS.h" + +#include "sdkconfig.h" + +#ifdef CONFIG_USE_LETTER_SHELL #include "shell.h" #include "shell_port.h" -#include +#else +#include "task.h" +#include "gpio_io_irq.h" + +#define GPIO_EXAMPLE_TASK_PRIORITY 2 + +void GpioExampleTaskEntry() +{ + /* example functions */ + FFreeRTOSRunGpioIrq(); + + /* end flag */ + printf("[test_end]\r\n"); + vTaskDelete(NULL); +} +#endif int main(void) { - BaseType_t ret; + BaseType_t ret = pdPASS; - ret = LSUserShellTask() ; +#ifdef CONFIG_USE_LETTER_SHELL + ret = LSUserShellTask(); +#else + /* used in no-letter-shell mode */ + ret = xTaskCreate((TaskFunction_t)GpioExampleTaskEntry, /* 任务入口函数 */ + (const char *)"GpioExampleTaskEntry", /* 任务名字 */ + (uint16_t)4096, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)GPIO_EXAMPLE_TASK_PRIORITY, /* 任务优先级 */ + NULL); /* 任务句柄 */ +#endif if (ret != pdPASS) { goto FAIL_EXIT; } - /* ret = FFreeRTOSRunGpioIOIrq("3-a-4", "3-a-5"); */ - - vTaskStartScheduler(); /* 启动任务,开启调度 */ + /* 启动任务,开启调度 */ + vTaskStartScheduler(); while (1); /* 正常不会执行到这里 */ FAIL_EXIT: - printf("Failed,the ret value is 0x%x. \r\n", ret); + printf("GPIO example failed in main.c, the ret value is 0x%x. \r\n", ret); return 0; -} +} \ No newline at end of file diff --git a/example/peripheral/gpio/makefile b/example/peripheral/gpio/makefile index 13c14898d0f8ad5159f3e5baa6067deda58349eb..8cdbb131737371bf472dd0695f73ceba32b2c1a4 100644 --- a/example/peripheral/gpio/makefile +++ b/example/peripheral/gpio/makefile @@ -8,7 +8,6 @@ BOOT_IMG_NAME ?= freertos USER_CSRC := main.c USER_CSRC += $(wildcard src/*.c) -USER_CSRC += $(wildcard ../common/*.c) USER_ASRC := USER_CXXSRC := diff --git a/example/peripheral/gpio/sdkconfig b/example/peripheral/gpio/sdkconfig index cddd0fe6a8acfbd2ae071208a388bb02827ad307..42d5d1e86b7308aea0246ed1ac552f1442805b41 100644 --- a/example/peripheral/gpio/sdkconfig +++ b/example/peripheral/gpio/sdkconfig @@ -39,15 +39,16 @@ CONFIG_USE_MMU=y # # Soc configuration # -CONFIG_TARGET_PHYTIUMPI=y +# CONFIG_TARGET_PHYTIUMPI is not set # CONFIG_TARGET_E2000Q is not set -# CONFIG_TARGET_E2000D is not set +CONFIG_TARGET_E2000D=y # CONFIG_TARGET_E2000S is not set # CONFIG_TARGET_FT2004 is not set # CONFIG_TARGET_D2000 is not set # CONFIG_TARGET_PD2308 is not set -CONFIG_SOC_NAME="phytiumpi" -CONFIG_SOC_CORE_NUM=4 +CONFIG_SOC_NAME="e2000" +CONFIG_TARGET_TYPE_NAME="d" +CONFIG_SOC_CORE_NUM=2 CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000 @@ -62,21 +63,22 @@ CONFIG_DEFAULT_DEBUG_PRINT_UART1=y # # Board Configuration # -CONFIG_BOARD_NAME="firefly" +CONFIG_E2000D_DEMO_BOARD=y +CONFIG_BOARD_NAME="demo" + +# +# IO mux configuration when board start up +# # CONFIG_USE_SPI_IOPAD is not set # CONFIG_USE_GPIO_IOPAD is not set # CONFIG_USE_CAN_IOPAD is not set # CONFIG_USE_QSPI_IOPAD is not set # CONFIG_USE_PWM_IOPAD is not set +# CONFIG_USE_ADC_IOPAD is not set # CONFIG_USE_MIO_IOPAD is not set # CONFIG_USE_TACHO_IOPAD is not set # CONFIG_USE_UART_IOPAD is not set # CONFIG_USE_THIRD_PARTY_IOPAD is not set -CONFIG_FIREFLY_DEMO_BOARD=y - -# -# IO mux configuration when board start up -# # end of IO mux configuration when board start up # CONFIG_CUS_DEMO_BOARD is not set diff --git a/example/peripheral/gpio/sdkconfig.h b/example/peripheral/gpio/sdkconfig.h index b35ea0bbcd02ab2f51917097b1ed9ce3ff842434..91c03b5a5ade3145bcafa7b45cc5076cbd6cd2dd 100644 --- a/example/peripheral/gpio/sdkconfig.h +++ b/example/peripheral/gpio/sdkconfig.h @@ -37,15 +37,16 @@ /* Soc configuration */ -#define CONFIG_TARGET_PHYTIUMPI +/* CONFIG_TARGET_PHYTIUMPI is not set */ /* CONFIG_TARGET_E2000Q is not set */ -/* CONFIG_TARGET_E2000D is not set */ +#define CONFIG_TARGET_E2000D /* CONFIG_TARGET_E2000S is not set */ /* CONFIG_TARGET_FT2004 is not set */ /* CONFIG_TARGET_D2000 is not set */ /* CONFIG_TARGET_PD2308 is not set */ -#define CONFIG_SOC_NAME "phytiumpi" -#define CONFIG_SOC_CORE_NUM 4 +#define CONFIG_SOC_NAME "e2000" +#define CONFIG_TARGET_TYPE_NAME "d" +#define CONFIG_SOC_CORE_NUM 2 #define CONFIG_F32BIT_MEMORY_ADDRESS 0x80000000 #define CONFIG_F32BIT_MEMORY_LENGTH 0x80000000 #define CONFIG_F64BIT_MEMORY_ADDRESS 0x2000000000 @@ -59,20 +60,21 @@ /* Board Configuration */ -#define CONFIG_BOARD_NAME "firefly" +#define CONFIG_E2000D_DEMO_BOARD +#define CONFIG_BOARD_NAME "demo" + +/* IO mux configuration when board start up */ + /* CONFIG_USE_SPI_IOPAD is not set */ /* CONFIG_USE_GPIO_IOPAD is not set */ /* CONFIG_USE_CAN_IOPAD is not set */ /* CONFIG_USE_QSPI_IOPAD is not set */ /* CONFIG_USE_PWM_IOPAD is not set */ +/* CONFIG_USE_ADC_IOPAD is not set */ /* CONFIG_USE_MIO_IOPAD is not set */ /* CONFIG_USE_TACHO_IOPAD is not set */ /* CONFIG_USE_UART_IOPAD is not set */ /* CONFIG_USE_THIRD_PARTY_IOPAD is not set */ -#define CONFIG_FIREFLY_DEMO_BOARD - -/* IO mux configuration when board start up */ - /* end of IO mux configuration when board start up */ /* CONFIG_CUS_DEMO_BOARD is not set */ diff --git a/example/peripheral/gpio/src/cmd_gpio.c b/example/peripheral/gpio/src/cmd_gpio.c index c9368d638bfb4e52471a02aa944701b4cc4b2f70..5a393b8b9303eab13c1dd0bc7fa26dbcb6c4164a 100644 --- a/example/peripheral/gpio/src/cmd_gpio.c +++ b/example/peripheral/gpio/src/cmd_gpio.c @@ -20,6 +20,7 @@ * Ver   Who        Date         Changes * ----- ------     --------    -------------------------------------- * 1.0 zhugengyu 2022/8/26 init commit + * 2.0 wangzq 2024/4/22 add no letter shell mode, adapt to auto-test system */ /***************************** Include Files *********************************/ #include @@ -29,6 +30,7 @@ #include "FreeRTOS.h" +#ifdef CONFIG_USE_LETTER_SHELL #include "../src/shell.h" #include "fgpio_os.h" #include "gpio_io_irq.h" @@ -37,75 +39,35 @@ /************************** Variable Definitions *****************************/ /***************** Macros (Inline Functions) Definitions *********************/ -#if defined(CONFIG_TARGET_E2000D) || defined(CONFIG_TARGET_E2000Q) -#define IN_PIN_STR "3-a-5" /* GPIO 3-A-5 */ -#define OUT_PIN_STR "3-a-4" -#endif -#ifdef CONFIG_TARGET_PHYTIUMPI -#define IN_PIN_STR "3-a-2" -#define OUT_PIN_STR "3-a-1" -#endif /************************** Function Prototypes ******************************/ /*****************************************************************************/ -static boolean GpioParseIndex(const char *str, u32 *pin) -{ - FASSERT(str && pin); - u32 id_num = 0; - char port = 'a'; - u32 pin_num = 0; - u32 port_num = 0; - if (3 != sscanf(str, "%d-%c-%d", &id_num, &port, &pin_num)) - { - printf("Parse as %d-%c-%d", id_num, port, pin_num); - return FALSE; - } - - if ((id_num >= FGPIO_NUM) || - ((port != 'a') && (port != 'b')) || - (pin_num >= FGPIO_PIN_NUM)) - { - printf("Wrong pin index."); - return FALSE; - } - - port_num = (('a' == port) ? 0 : 1); /* 0 = port-a, 1 = port-b */ - *pin = FFREERTOS_GPIO_PIN_INDEX(id_num, port_num, pin_num); - printf("pin index = 0x%x\r\n", *pin); - - return TRUE; +static void GpioCmdUsage(void) +{ + printf("Usage:\r\n"); + printf("pin io-irq\r\n"); + printf("-- Demo to test gpio interrupt\r\n"); } - static int GpioCmdEntry(int argc, char *argv[]) { int ret = 0; - const char *in_pin_str = IN_PIN_STR; - const char *out_pin_str = OUT_PIN_STR; - u32 in_pin, out_pin; - + + if (argc < 2) + { + GpioCmdUsage(); + return -1; + } if (!strcmp(argv[1], "io-irq")) { - if (argc >= 3) - { - out_pin_str = argv[2]; - } - if (argc >= 4) - { - in_pin_str = argv[3]; - } - - if ((FALSE == GpioParseIndex(out_pin_str, &out_pin)) || - (FALSE == GpioParseIndex(in_pin_str, &in_pin))) - { - return -2; - } - - ret = (int)FFreeRTOSRunGpioIOIrq(out_pin, in_pin); + ret = FFreeRTOSRunGpioIrq(); } return ret; } -SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), gpio, GpioCmdEntry, test freertos gpio driver); \ No newline at end of file +SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), gpio, GpioCmdEntry, test freertos gpio driver); + +#endif /* CONFIG_USE_LETTER_SHELL */ + diff --git a/example/peripheral/gpio/src/gpio_io_irq.c b/example/peripheral/gpio/src/gpio_io_irq.c index a6b4db42d1537a88229c00d3688a64d84203fb63..d51654f449f5b8903de46a081b55358e95b1667b 100644 --- a/example/peripheral/gpio/src/gpio_io_irq.c +++ b/example/peripheral/gpio/src/gpio_io_irq.c @@ -13,13 +13,14 @@ * * FilePath: gpio_io_irq.c * Date: 2022-07-22 13:57:42 - * LastEditTime: 2022-07-22 13:57:43 + * LastEditTime: 2022-07-22 13:57:43 * Description:  This file is for gpio io irq implementation. * * Modify History: * Ver   Who        Date         Changes * ----- ------     --------    -------------------------------------- * 1.0 zhugengyu 2022/8/26 init commit + * 2.0 wangzq 2024/4/22 add no letter shell mode, adapt to auto-test system */ /***************************** Include Files *********************************/ #include @@ -29,56 +30,43 @@ #include "task.h" #include "fdebug.h" -#include "fsleep.h" #include "fio_mux.h" #include "fgpio_os.h" #include "gpio_io_irq.h" /************************** Constant Definitions *****************************/ -#define PIN_IRQ_OCCURED (0x1 << 0) -#define GPIO_WORK_TASK_NUM 2U -#if defined(CONFIG_TARGET_E2000D) || defined(CONFIG_TARGET_E2000Q) -#define IN_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(3, 0, 5) /* GPIO 3-A-5 */ -#define OUT_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(3, 0, 4) +#if defined(CONFIG_E2000D_DEMO_BOARD) || defined(CONFIG_E2000Q_DEMO_BOARD) + #define IN_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(3, 0, 5) /* GPIO 3-A-5 */ + #define OUT_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(3, 0, 4) #endif -#ifdef CONFIG_TARGET_PHYTIUMPI -#define IN_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(3, 0, 2) -#define OUT_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(3, 0, 1) +#ifdef CONFIG_FIREFLY_DEMO_BOARD + #define IN_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(1, 0, 12) + #define OUT_PIN_INDEX FFREERTOS_GPIO_PIN_INDEX(1, 0, 11) #endif -/**************************** Type Definitions *******************************/ +#define PIN_IRQ_OCCURED BIT(0) +#define GPIO_IRQ_TEST_TASK_PRIORITY 3 +#define TIMER_OUT (pdMS_TO_TICKS(4000UL)) +/**************************** Type Definitions *******************************/ +enum +{ + GPIO_IRQ_TEST_SUCCESS = 0, + GPIO_IRQ_TEST_UNKNOWN = 1, + GPIO_INIT_ERROR = 2, + GPIO_IRQ_TEST_ERROR = 3, +}; /************************** Variable Definitions *****************************/ static FFreeRTOSFGpio *in_gpio = NULL; static FFreeRTOSGpioConfig in_gpio_cfg; static FFreeRTOSFGpio *out_gpio = NULL; static FFreeRTOSGpioConfig out_gpio_cfg; -static xSemaphoreHandle init_locker = NULL; -static u32 in_pin = IN_PIN_INDEX; -static u32 out_pin = OUT_PIN_INDEX; -static FFreeRTOSGpioPinConfig in_pin_config = -{ - .pin_idx = IN_PIN_INDEX, - .mode = FGPIO_DIR_INPUT, - .en_irq = TRUE, - .irq_type = FGPIO_IRQ_TYPE_EDGE_RISING, - .irq_handler = NULL, - .irq_args = NULL -}; -static FFreeRTOSGpioPinConfig out_pin_config = -{ - .pin_idx = OUT_PIN_INDEX, - .mode = FGPIO_DIR_OUTPUT, - .en_irq = FALSE -}; + +static QueueHandle_t xQueue = NULL; static EventGroupHandle_t event = NULL; -static TaskHandle_t output_task = NULL; -static TaskHandle_t input_task = NULL; -static TimerHandle_t exit_timer = NULL; static boolean is_running = FALSE; - /***************** Macros (Inline Functions) Definitions *********************/ -#define FGPIO_DEBUG_TAG "GPIO-IO" +#define FGPIO_DEBUG_TAG "GPIO-IRQ" #define FGPIO_ERROR(format, ...) FT_DEBUG_PRINT_E(FGPIO_DEBUG_TAG, format, ##__VA_ARGS__) #define FGPIO_WARN(format, ...) FT_DEBUG_PRINT_W(FGPIO_DEBUG_TAG, format, ##__VA_ARGS__) #define FGPIO_INFO(format, ...) FT_DEBUG_PRINT_I(FGPIO_DEBUG_TAG, format, ##__VA_ARGS__) @@ -87,21 +75,10 @@ static boolean is_running = FALSE; /************************** Function Prototypes ******************************/ /*****************************************************************************/ -static void GpioIOIrqExitCallback(TimerHandle_t timer) +/*exit the gpio irq example task and deinit the gpio */ +static void GpioIOIrqExit(void) { printf("Exiting...\r\n"); - - if (output_task) /* stop and delete send task */ - { - vTaskDelete(output_task); - output_task = NULL; - } - - if (input_task) /* stop and delete recv task */ - { - vTaskDelete(input_task); - input_task = NULL; - } /* deinit iomux */ FIOMuxDeInit(); if (FT_SUCCESS != FFreeRTOSGpioDeInit(in_gpio)) @@ -110,7 +87,7 @@ static void GpioIOIrqExitCallback(TimerHandle_t timer) } in_gpio = NULL; - if (FFREERTOS_GPIO_PIN_CTRL_ID(out_pin) != FFREERTOS_GPIO_PIN_CTRL_ID(in_pin)) /* check if pin in diff ctrl */ + if (FFREERTOS_GPIO_PIN_CTRL_ID(OUT_PIN_INDEX) != FFREERTOS_GPIO_PIN_CTRL_ID(IN_PIN_INDEX)) /* check if pin in diff ctrl */ { if (FT_SUCCESS != FFreeRTOSGpioDeInit(out_gpio)) { @@ -125,163 +102,159 @@ static void GpioIOIrqExitCallback(TimerHandle_t timer) event = NULL; } - if (init_locker) - { - vSemaphoreDelete(init_locker); - init_locker = NULL; - } - - if (exit_timer) - { - if (pdPASS != xTimerDelete(exit_timer, 0)) - { - FGPIO_ERROR("Delete exit timer failed."); - } - exit_timer = NULL; - } - is_running = FALSE; } +/*gpio irq callback function*/ static void GpioIOAckPinIrq(s32 vector, void *param) { BaseType_t xhigher_priority_task_woken = pdFALSE; BaseType_t x_result = pdFALSE; - - FGPIO_INFO("Ack pin irq."); x_result = xEventGroupSetBitsFromISR(event, PIN_IRQ_OCCURED, &xhigher_priority_task_woken); -} + printf("Ack pin irq\r\n"); + return; +} -static void GpioInitTask(void *args) +/*gpio init function*/ +static FError GpioInit(void) { - FError err = FT_SUCCESS; - FGpioPinId pin_id; - static const char *irq_type_str[] = {"failling-edge", "rising-edge", "low-level", "high-level"}; - - FGPIO_INFO("out_pin: 0x%x, in_pin: 0x%x", out_pin, in_pin); + FError ret = FT_SUCCESS; + FFreeRTOSGpioPinConfig in_pin_config; + memset(&in_pin_config, 0, sizeof(in_pin_config)); + /* init iomux fuction */ + FIOMuxInit(); + /* init output/input pin */ + FIOPadSetGpioMux(FFREERTOS_GPIO_PIN_CTRL_ID(OUT_PIN_INDEX), FFREERTOS_GPIO_PIN_ID(OUT_PIN_INDEX)); /* set io pad */ + FIOPadSetGpioMux(FFREERTOS_GPIO_PIN_CTRL_ID(IN_PIN_INDEX), FFREERTOS_GPIO_PIN_ID(IN_PIN_INDEX)); /* set io pad */ - out_gpio = FFreeRTOSGpioInit(FFREERTOS_GPIO_PIN_CTRL_ID(out_pin), &out_gpio_cfg); - if (FFREERTOS_GPIO_PIN_CTRL_ID(out_pin) != FFREERTOS_GPIO_PIN_CTRL_ID(in_pin)) + out_gpio = FFreeRTOSGpioInit(FFREERTOS_GPIO_PIN_CTRL_ID(OUT_PIN_INDEX), &out_gpio_cfg); + if (FFREERTOS_GPIO_PIN_CTRL_ID(OUT_PIN_INDEX) != FFREERTOS_GPIO_PIN_CTRL_ID(IN_PIN_INDEX)) { - in_gpio = FFreeRTOSGpioInit(FFREERTOS_GPIO_PIN_CTRL_ID(in_pin), &in_gpio_cfg); + in_gpio = FFreeRTOSGpioInit(FFREERTOS_GPIO_PIN_CTRL_ID(IN_PIN_INDEX), &in_gpio_cfg); } else { in_gpio = out_gpio; /* no need to init if in-pin and out-pin under same ctrl */ } - /* init mio fuction */ - FIOMuxInit(); - /* init output/input pin */ - FIOPadSetGpioMux(FFREERTOS_GPIO_PIN_CTRL_ID(out_pin), FFREERTOS_GPIO_PIN_ID(out_pin)); /* set io pad */ - FIOPadSetGpioMux(FFREERTOS_GPIO_PIN_CTRL_ID(in_pin), FFREERTOS_GPIO_PIN_ID(in_pin)); /* set io pad */ - - out_pin_config.pin_idx = out_pin; - err = FFreeRTOSSetupPin(out_gpio, &out_pin_config); - FASSERT_MSG(FT_SUCCESS == err, "Init output gpio pin failed."); - in_pin_config.pin_idx = in_pin; + in_pin_config.pin_idx = IN_PIN_INDEX; + in_pin_config.mode = FGPIO_DIR_INPUT; + in_pin_config.en_irq = TRUE; + in_pin_config.irq_type = FGPIO_IRQ_TYPE_EDGE_RISING; in_pin_config.irq_handler = GpioIOAckPinIrq; in_pin_config.irq_args = NULL; - printf("Config input pin interrupt type as %s\r\n", irq_type_str[in_pin_config.irq_type]); - err = FFreeRTOSSetupPin(in_gpio, &in_pin_config); - FASSERT_MSG(FT_SUCCESS == err, "Init input gpio pin failed."); - FASSERT_MSG(init_locker, "Init locker NULL"); - for (u32 loop = 0U; loop < GPIO_WORK_TASK_NUM; loop++) + ret = FFreeRTOSSetupPin(in_gpio, &in_pin_config);/*set the input pin config*/ + if (ret != FT_SUCCESS) { - xSemaphoreGive(init_locker); + FGPIO_ERROR("Init input gpio pin failed."); + goto exit; } - vTaskDelete(NULL); +exit: + return ret; } -static void GpioIOIrqOutputTask(void *args) +/*set output pin high level and toggle it*/ +static FError GpioIrqSetOutput(void) { - FASSERT(init_locker); - xSemaphoreTake(init_locker, portMAX_DELAY); - + FError ret = FT_SUCCESS; const TickType_t toggle_delay = pdMS_TO_TICKS(500UL); /* toggle every 500 ms */ - FGpioPinVal out_val = FGPIO_PIN_LOW; + FFreeRTOSGpioPinConfig out_pin_config; + memset(&out_pin_config, 0, sizeof(out_pin_config)); + + out_pin_config.pin_idx = OUT_PIN_INDEX; + out_pin_config.mode = FGPIO_DIR_OUTPUT; + out_pin_config.en_irq = FALSE; + + ret = FFreeRTOSSetupPin(out_gpio, &out_pin_config);/*set the output pin config*/ - printf("Gpio ouptut task started. \r\n"); + if (ret != FT_SUCCESS) + { + FGPIO_ERROR("Init output gpio pin failed."); + goto exit; + } - for (;;) + ret = FFreeRTOSPinWrite(out_gpio, OUT_PIN_INDEX, FGPIO_PIN_LOW); /* start with low level */ + if (ret != FT_SUCCESS) { - printf(" ==> Set GPIO-%d-%c-%d as %s\r\n", - FFREERTOS_GPIO_PIN_CTRL_ID(out_pin), - (FGPIO_PORT_A == FFREERTOS_GPIO_PIN_PORT_ID(out_pin)) ? 'a' : 'b', - FFREERTOS_GPIO_PIN_ID(out_pin), - (out_val == FGPIO_PIN_LOW) ? "low" : "high"); - - FFreeRTOSPinWrite(out_gpio, out_pin, out_val); /* start with low level */ - vTaskDelay(toggle_delay); - out_val = (FGPIO_PIN_LOW == out_val) ? FGPIO_PIN_HIGH : FGPIO_PIN_LOW; /* toggle level */ + FGPIO_ERROR("GpioSetOutput failed."); + goto exit; } + vTaskDelay(toggle_delay); + + ret = FFreeRTOSPinWrite(out_gpio, OUT_PIN_INDEX, FGPIO_PIN_HIGH); /* toggle */ + if (ret != FT_SUCCESS) + { + FGPIO_ERROR("GpioSetOutput toggle failed."); + goto exit; + } + +exit: + return ret; } -static boolean GpioIOWaitIrqOccurr(void) +/*wait for the input pin irq to occur*/ +static FError GpioIOWaitIrqOccurr(void) { const TickType_t wait_delay = pdMS_TO_TICKS(2000U); /* just check 2sec wait */ - boolean ok = FALSE; + FError ret = TRUE; EventBits_t ev = xEventGroupWaitBits(event, PIN_IRQ_OCCURED, pdTRUE, pdFALSE, wait_delay); if ((ev & PIN_IRQ_OCCURED)) { - ok = TRUE; + ret = FT_SUCCESS; + } + else + { + FGPIO_ERROR("Gpio irq example failed."); + goto exit; } - return ok; +exit: + return ret; } -static void GpioIOIrqInputTask(void *args) +/*gpio irq test task*/ +static void GpioIrqTestTask(void) { - FASSERT(init_locker); - xSemaphoreTake(init_locker, portMAX_DELAY); - - FGpioPinVal in_val; - FError err = FT_SUCCESS; - const TickType_t input_delay = pdMS_TO_TICKS(100UL); /* input every 500 ms */ - - printf("Gpio input task started. \r\n"); - (void)FFreeRTOSSetIRQ(in_gpio, in_pin, TRUE); - - for (;;) + int task_res = GPIO_IRQ_TEST_SUCCESS; + FError ret = FT_SUCCESS; + ret = GpioInit(); + if (ret != FT_SUCCESS) { - in_val = FFreeRTOSPinRead(in_gpio, in_pin); - printf(" <== Get GPIO-%d-%c-%d in %s\r\n", - FFREERTOS_GPIO_PIN_CTRL_ID(in_pin), - (FGPIO_PORT_A == FFREERTOS_GPIO_PIN_PORT_ID(in_pin)) ? 'a' : 'b', - FFREERTOS_GPIO_PIN_ID(in_pin), - (in_val == FGPIO_PIN_LOW) ? "low" : "high"); - - /* check for interrupt event */ - if (GpioIOWaitIrqOccurr()) - { - printf("GPIO-%d-%c-%d, Interrrupt Asserted. \r\n", - FFREERTOS_GPIO_PIN_CTRL_ID(in_pin), - (FGPIO_PORT_A == FFREERTOS_GPIO_PIN_PORT_ID(in_pin)) ? 'a' : 'b', - FFREERTOS_GPIO_PIN_ID(in_pin)); - - (void)FFreeRTOSSetIRQ(in_gpio, in_pin, TRUE); /* enable irq to recv next one */ - } - else - { - printf("None Interrupt Assert.\r\n"); - continue; - } - - vTaskDelay(input_delay); + FGPIO_ERROR("GpioInitFunction failed."); + task_res = GPIO_INIT_ERROR; + goto task_exit; } + ret = GpioIrqSetOutput(); + if (ret != FT_SUCCESS) + { + FGPIO_ERROR("GpioInitFunction failed."); + task_res = GPIO_INIT_ERROR; + goto task_exit; + } + ret = GpioIOWaitIrqOccurr(); + if (ret != FT_SUCCESS) + { + FGPIO_ERROR("GpioIOWaitIrqOccurr failed."); + task_res = GPIO_IRQ_TEST_ERROR; + goto task_exit; + } + +task_exit: + xQueueSend(xQueue, &task_res, 0); + vTaskDelete(NULL); } -BaseType_t FFreeRTOSRunGpioIOIrq(u32 out_pin_idx, u32 in_pin_idx) +/*gpio irq example entry function*/ +BaseType_t FFreeRTOSRunGpioIrq(void) { - BaseType_t ret = pdPASS; - const TickType_t total_run_time = pdMS_TO_TICKS(10000UL); /* loopback run for 5 secs deadline */ - + BaseType_t xReturn = pdPASS; /* pdPASS */ + int task_res = GPIO_IRQ_TEST_UNKNOWN; if (is_running) { FGPIO_ERROR("The task is running."); @@ -292,55 +265,47 @@ BaseType_t FFreeRTOSRunGpioIOIrq(u32 out_pin_idx, u32 in_pin_idx) FASSERT_MSG(NULL == event, "Event group exists."); FASSERT_MSG((event = xEventGroupCreate()) != NULL, "Create event group failed."); + xQueue = xQueueCreate(1, sizeof(int)); /* create queue for task communication */ + if (xQueue == NULL) + { + FGPIO_ERROR("xQueue create failed."); + goto exit; + } - FASSERT_MSG(NULL == init_locker, "Init locker exists."); - FASSERT_MSG((init_locker = xSemaphoreCreateCounting(GPIO_WORK_TASK_NUM, 0U)) != NULL, "Create event group failed."); - - out_pin = out_pin_idx; - in_pin = in_pin_idx; - - taskENTER_CRITICAL(); /* no schedule when create task */ - - ret = xTaskCreate((TaskFunction_t)GpioInitTask, /* task entry */ - (const char *)"GpioInitTask",/* task name */ - (uint16_t)1024, /* task stack size in words */ - NULL, /* task params */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* task priority */ - NULL); /* task handler */ - - FASSERT_MSG(pdPASS == ret, "Create task failed."); - - ret = xTaskCreate((TaskFunction_t)GpioIOIrqOutputTask, /* task entry */ - (const char *)"GpioIOIrqOutputTask",/* task name */ - (uint16_t)1024, /* task stack size in words */ - NULL, /* task params */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* task priority */ - (TaskHandle_t *)&output_task); /* task handler */ - - FASSERT_MSG(pdPASS == ret, "Create task failed."); - - ret = xTaskCreate((TaskFunction_t)GpioIOIrqInputTask, /* task entry */ - (const char *)"GpioIOIrqInputTask",/* task name */ - (uint16_t)1024, /* task stack size in words */ - NULL, /* task params */ - (UBaseType_t)configMAX_PRIORITIES - 2, /* task priority */ - (TaskHandle_t *)&input_task); /* task handler */ - - FASSERT_MSG(pdPASS == ret, "Create task failed."); - - exit_timer = xTimerCreate("Exit-Timer", /* Text name for the software timer - not used by FreeRTOS. */ - total_run_time, /* The software timer's period in ticks. */ - pdFALSE, /* Setting uxAutoRealod to pdFALSE creates a one-shot software timer. */ - NULL, /* use timer id to pass task data for reference. */ - GpioIOIrqExitCallback); /* The callback function to be used by the software timer being created. */ - - FASSERT_MSG(NULL != exit_timer, "Create exit timer failed."); - - taskEXIT_CRITICAL(); /* allow schedule since task created */ - - ret = xTimerStart(exit_timer, 0); /* start */ + xReturn = xTaskCreate((TaskFunction_t)GpioIrqTestTask, /* 任务入口函数 */ + (const char *)"GpioIrqTestTask", /* 任务名字 */ + (uint16_t)4096, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)GPIO_IRQ_TEST_TASK_PRIORITY, /* 任务优先级 */ + NULL); /* 任务句柄 */ + if (xReturn == pdFAIL) + { + FGPIO_ERROR("xTaskCreate GpioIrqTask failed."); + goto exit; + } + xReturn = xQueueReceive(xQueue, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FGPIO_ERROR("xQueue receive timeout."); + goto exit; + } - FASSERT_MSG(pdPASS == ret, "Start exit timer failed."); +exit: + if (xQueue != NULL) + { + vQueueDelete(xQueue); + } + printf("task_res = %d\r\n", task_res); + GpioIOIrqExit(); + if (task_res != GPIO_IRQ_TEST_SUCCESS) + { + printf("%s@%d: Gpio irq example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Gpio irq example [success].\r\n", __func__, __LINE__); + return pdTRUE; + } - return ret; } diff --git a/example/peripheral/pwm/src/cmd_pwm.c b/example/peripheral/pwm/src/cmd_pwm.c index e596a6c88c736895adf97d6d96425b2880337e25..1ebfb5971d74008caa691130260109c937503eb6 100644 --- a/example/peripheral/pwm/src/cmd_pwm.c +++ b/example/peripheral/pwm/src/cmd_pwm.c @@ -14,7 +14,7 @@ * FilePath: cmd_pwm.c * Date: 2022-07-14 14:06:43 * LastEditTime: 2022-07-14 14:06:43 - * Description:  This files is for gdma command interface + * Description:  This files is for pwm command interface * * Modify History: * Ver    Who         Date         Changes diff --git a/example/peripheral/pwm/src/pwm_dead_band_example.c b/example/peripheral/pwm/src/pwm_dead_band_example.c index 59c2d72e3498e98f522e53c1906d4a24ed61c690..aa752106481133a4e6fcff7b4774e57508b50c25 100644 --- a/example/peripheral/pwm/src/pwm_dead_band_example.c +++ b/example/peripheral/pwm/src/pwm_dead_band_example.c @@ -216,7 +216,7 @@ BaseType_t FFreeRTOSPwmDeadBandTaskCreate() NULL); /* 任务句柄 */ if (xReturn == pdFAIL) { - FPWM_ERROR("xTaskCreate GdmaMemcpyTask failed."); + FPWM_ERROR("xTaskCreate FFreeRTOSPwmDeadBandTask failed."); goto exit; } diff --git a/example/peripheral/pwm/src/pwm_dual_channel_example.c b/example/peripheral/pwm/src/pwm_dual_channel_example.c index c0c41c1c659fab492bdd2c8be44ac21ed57ffac7..8c564c72f4940749e9c4fd7b93da2291822c0f0b 100644 --- a/example/peripheral/pwm/src/pwm_dual_channel_example.c +++ b/example/peripheral/pwm/src/pwm_dual_channel_example.c @@ -210,7 +210,7 @@ BaseType_t FFreeRTOSPwmDualChannelTaskCreate() NULL); /* 任务句柄 */ if (xReturn == pdFAIL) { - FPWM_ERROR("xTaskCreate GdmaMemcpyTask failed."); + FPWM_ERROR("xTaskCreate FFreeRTOSPwmDualChannelTask failed."); goto exit; } diff --git a/example/peripheral/pwm/src/pwm_single_channel_example.c b/example/peripheral/pwm/src/pwm_single_channel_example.c index 104d65266ad474d6b68d49ea446ddd53cdd1e176..14cd80a1d1c379818da525ed22d04baeecd5ca3b 100644 --- a/example/peripheral/pwm/src/pwm_single_channel_example.c +++ b/example/peripheral/pwm/src/pwm_single_channel_example.c @@ -180,7 +180,7 @@ BaseType_t FFreeRTOSPwmSingleChannelTaskCreate() NULL); /* 任务句柄 */ if (xReturn == pdFAIL) { - FPWM_ERROR("xTaskCreate GdmaMemcpyTask failed."); + FPWM_ERROR("xTaskCreate FFreeRTOSSingleChannelTask failed."); goto exit; } diff --git a/example/peripheral/qspi/README.md b/example/peripheral/qspi/README.md index bb7704aebc9306761a71661ab8d3fe3e46b23eab..bc06d1e7581e49e304fb9b9233a0b1d6e7bf74bf 100644 --- a/example/peripheral/qspi/README.md +++ b/example/peripheral/qspi/README.md @@ -65,7 +65,9 @@ E2000D上使用的Nor Flash介质型号是GD25Q128,容量为16MB; ![hardware](./figs/hardware.png) - 本例程适配了GD25、S25FS256、BOYA的Nor-Flash芯片,如使用其他型号,需自行参考适配 +- PhytiumPi,若未安装qspi-flash芯片插槽,请自行安装 +![phytiumpi_hardware](./figs/phytiumpi_hardware.png) ### 2.2 SDK配置方法 本例程需要, diff --git a/example/peripheral/qspi/figs/check.png b/example/peripheral/qspi/figs/check.png index 56bbdacca66f4e4d2288d7750e6786569c4dda6e..e420f1c6ea2fb1607a17fb05a5d31c34cc455d7c 100644 Binary files a/example/peripheral/qspi/figs/check.png and b/example/peripheral/qspi/figs/check.png differ diff --git a/example/peripheral/qspi/figs/delete.png b/example/peripheral/qspi/figs/delete.png deleted file mode 100644 index d2355773e7b35ffba2a00a9a41835362ea25e415..0000000000000000000000000000000000000000 Binary files a/example/peripheral/qspi/figs/delete.png and /dev/null differ diff --git a/example/peripheral/qspi/figs/dual_flash_test.png b/example/peripheral/qspi/figs/dual_flash_test.png index 8dd081b46ccb5e21f7b6390179c39fdd56455aed..7b4c73b762f6d23ef62678fbd7c7f8f16e0b6573 100644 Binary files a/example/peripheral/qspi/figs/dual_flash_test.png and b/example/peripheral/qspi/figs/dual_flash_test.png differ diff --git a/example/peripheral/qspi/figs/hardware.png b/example/peripheral/qspi/figs/hardware.png index 0b79eed2aa5697b267998627808484c2688eefd2..220af83ec1a3e0518ad25fd876d52755783923d0 100644 Binary files a/example/peripheral/qspi/figs/hardware.png and b/example/peripheral/qspi/figs/hardware.png differ diff --git a/example/peripheral/qspi/figs/indirect.png b/example/peripheral/qspi/figs/indirect.png index 09abf894549fc418208ef9610f645919be32cbb1..ceb92f342a4cae6ddd093728f77fabe6ea73316d 100644 Binary files a/example/peripheral/qspi/figs/indirect.png and b/example/peripheral/qspi/figs/indirect.png differ diff --git a/example/peripheral/qspi/figs/phytiumpi_hardware.png b/example/peripheral/qspi/figs/phytiumpi_hardware.png new file mode 100644 index 0000000000000000000000000000000000000000..4d44fc80c7d309b355eee8a71b6bd30a7b7d25bc Binary files /dev/null and b/example/peripheral/qspi/figs/phytiumpi_hardware.png differ diff --git a/example/peripheral/qspi/figs/polled.png b/example/peripheral/qspi/figs/polled.png index d3b2570d39aad72a6f0f033b9279467dc2525400..8c63d466aae0d8ca5137f134a2ccc610f6539517 100644 Binary files a/example/peripheral/qspi/figs/polled.png and b/example/peripheral/qspi/figs/polled.png differ diff --git a/example/peripheral/qspi/figs/qspi.png b/example/peripheral/qspi/figs/qspi.png deleted file mode 100644 index ec062e88aaea692415dbc4aa3fba222a9675500b..0000000000000000000000000000000000000000 Binary files a/example/peripheral/qspi/figs/qspi.png and /dev/null differ diff --git a/example/peripheral/qspi/inc/qspi_example.h b/example/peripheral/qspi/inc/qspi_example.h index 58e740bdde897ecf3c77b6f230a9e25a35960e1b..2a27aceff423fb1a92ee7d4d9da96a2944fa7843 100644 --- a/example/peripheral/qspi/inc/qspi_example.h +++ b/example/peripheral/qspi/inc/qspi_example.h @@ -31,11 +31,13 @@ extern "C" { #endif +#define QSPI_TEST_ID FQSPI0_ID + /* qspi read and write test */ -BaseType_t FFreeRTOSQspiPolledTaskCreate(u32 id); -BaseType_t FFreeRTOSQspiCheckTaskCreate(u32 id); +BaseType_t FFreeRTOSQspiPolledTaskCreate(void); +BaseType_t FFreeRTOSQspiCheckTaskCreate(void); BaseType_t FFreeRTOSQspiDualFlashTaskCreate(void); -BaseType_t FFreeRTOSQspiIndirectTaskCreate(u32 id); +BaseType_t FFreeRTOSQspiIndirectTaskCreate(void); #ifdef __cplusplus } diff --git a/example/peripheral/qspi/main.c b/example/peripheral/qspi/main.c index c77c4e2bc097e21f6bd14be540e0177058e2ed2e..4b90ee5f1a4d739c724bcd20c12462fc94905b1b 100644 --- a/example/peripheral/qspi/main.c +++ b/example/peripheral/qspi/main.c @@ -22,23 +22,55 @@ * 1.0 wangxiaodong 2022/8/9 first release */ +#include +#include "FreeRTOS.h" + +#ifdef CONFIG_USE_LETTER_SHELL #include "shell.h" #include "shell_port.h" -#include +#else +#include "task.h" #include "qspi_example.h" +void QspiExampleTaskEntry() +{ + FFreeRTOSQspiCheckTaskCreate(); + + FFreeRTOSQspiPolledTaskCreate(); + + FFreeRTOSQspiIndirectTaskCreate(); + + FFreeRTOSQspiDualFlashTaskCreate(); + + printf("[test_end]\r\n"); + + vTaskDelete(NULL); +} +#endif int main(void) { - BaseType_t ret; + BaseType_t ret = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */ - ret = LSUserShellTask() ; +#ifdef CONFIG_USE_LETTER_SHELL + ret = LSUserShellTask(); +#else + taskENTER_CRITICAL(); /*进入临界区*/ + ret = xTaskCreate((TaskFunction_t)QspiExampleTaskEntry, /* 任务入口函数 */ + (const char *)"QspiExampleTaskEntry", /* 任务名字 */ + (uint16_t)4096, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)5, /* 任务的优先级 */ + NULL); + taskEXIT_CRITICAL(); /*退出临界区*/ +#endif if (ret != pdPASS) { goto FAIL_EXIT; } vTaskStartScheduler(); /* 启动任务,开启调度 */ - while (1); /* 正常不会执行到这里 */ + while (1) + ; /* 正常不会执行到这里 */ FAIL_EXIT: printf("Failed,the ret value is 0x%x. \r\n", ret); diff --git a/example/peripheral/qspi/src/cmd_qspi.c b/example/peripheral/qspi/src/cmd_qspi.c index 375eaa6d903347ec3be34a21860d7cb8643ea675..f32ae5b0008b4480b3f8a4ce296b9671722809af 100644 --- a/example/peripheral/qspi/src/cmd_qspi.c +++ b/example/peripheral/qspi/src/cmd_qspi.c @@ -21,12 +21,15 @@ * ----- ------ -------- -------------------------------------- * 1.0 huangjin 2023/11/16 first commit */ -#include "shell.h" #include "qspi_example.h" #include #include #include "projdefs.h" +#include "FreeRTOS.h" +#include "sdkconfig.h" +#ifdef CONFIG_USE_LETTER_SHELL +#include "shell.h" static void CreateTasksCmdUsage(void) { printf("Usage:\r\n"); @@ -51,15 +54,15 @@ int CreateTasksCmd(int argc, char *argv[]) } else if (!strcmp(argv[1], "check")) { - ret = FFreeRTOSQspiCheckTaskCreate(0); + ret = FFreeRTOSQspiCheckTaskCreate(); } else if (!strcmp(argv[1], "polled")) { - ret = FFreeRTOSQspiPolledTaskCreate(0); + ret = FFreeRTOSQspiPolledTaskCreate(); } else if (!strcmp(argv[1], "indirect")) { - ret = FFreeRTOSQspiIndirectTaskCreate(0); + ret = FFreeRTOSQspiIndirectTaskCreate(); } else if (!strcmp(argv[1], "dual_flash_test")) { @@ -70,10 +73,9 @@ int CreateTasksCmd(int argc, char *argv[]) printf("Error: Invalid arguments. \r\n"); CreateTasksCmdUsage(); } - + return ret; } SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), qspi, CreateTasksCmd, qspi creating test); - - +#endif diff --git a/example/peripheral/qspi/src/qspi_dual_flash_stack_example.c b/example/peripheral/qspi/src/qspi_dual_flash_stack_example.c index 84b4fdc96c9e901fb985b5bf3e40b9f9da98b605..5ee76c9678da5b114efeef965d89c81df9e210b7 100644 --- a/example/peripheral/qspi/src/qspi_dual_flash_stack_example.c +++ b/example/peripheral/qspi/src/qspi_dual_flash_stack_example.c @@ -20,130 +20,91 @@ * Ver   Who         Date          Changes * ----- ------      --------     -------------------------------------- * 1.0 huangjin 2023/11/20 first release + * 1.1 zhangyan 2024/4/18 add no letter shell mode, adapt to auto-test system */ #include #include "FreeRTOSConfig.h" #include "FreeRTOS.h" #include "task.h" -#include "fqspi.h" -#include "fqspi_flash.h" #include "fqspi_os.h" -#include "timers.h" #include "qspi_example.h" +#include "fqspi_flash.h" #include "sdkconfig.h" #include "fio_mux.h" -/* write and read task delay in milliseconds */ -#define TASK_DELAY_MS 1000UL - -static xTaskHandle read_handle; -static xTaskHandle write_handle; +#define FQSPI_DEBUG_TAG "QSPI_DUAL_FLASH_TEST" +#define FQSPI_ERROR(format, ...) FT_DEBUG_PRINT_E(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_WARN(format, ...) FT_DEBUG_PRINT_W(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_INFO(format, ...) FT_DEBUG_PRINT_I(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_DEBUG(format, ...) FT_DEBUG_PRINT_D(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +/* write and read task delay in milliseconds */ +#define TASK_DELAY_MS 1000UL +#define TIMER_OUT (pdMS_TO_TICKS(5000UL)) /* Offset 1M from flash maximum capacity*/ -#define FLASH_WR_OFFSET SZ_1M +#define FLASH_WR_OFFSET SZ_1M /* write and read start address */ -static u32 flash_wr_start = 0 ; - -/* write and read cs channel */ -#define QSPI_CS_CHANNEL 0 +static u32 flash_wr_start = 0; -#define DAT_LENGTH 64 +#define DAT_LENGTH 64 static u8 rd_buf[DAT_LENGTH] = {0}; static u8 wr_buf[DAT_LENGTH] = {0}; -/* test task number */ -#define READ_WRITE_TASK_NUM 3 -static xSemaphoreHandle xCountingSemaphore; -static xSemaphoreHandle xCtrlSemaphore; - -static FFreeRTOSQspi *os_qspi_ctrl_p = NULL; - -static FFreeRTOSQspiMessage message = {0}; - -static void FFreeRTOSQspiDelete(void *pvParameters); -static void QspiReadTask(void *pvParameters); -static void QspiWriteTask(void *pvParameters); - -static void QspiInitTask(void *pvParameters) +enum { - BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - - for (int i = 0; i < READ_WRITE_TASK_NUM; i++) - { - xSemaphoreGive(xCountingSemaphore); - } - - xReturn = xTaskCreate((TaskFunction_t)QspiWriteTask, /* 任务入口函数 */ - (const char *)"QspiWriteTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)pvParameters,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ - (TaskHandle_t *)&write_handle); /* 任务控制 */ - - xReturn = xTaskCreate((TaskFunction_t)QspiReadTask, /* 任务入口函数 */ - (const char *)"QspiReadTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)pvParameters,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ - (TaskHandle_t *)&read_handle); /* 任务控制 */ - - xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSQspiDelete, /* 任务入口函数 */ - (const char *)"QspiDeleteTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)pvParameters,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ - NULL); /* 任务控制 */ - if (xReturn != pdPASS) - { - goto qspi_init_exit; - } - -qspi_init_exit: - vTaskDelete(NULL); -} + QSPI_TEST_SUCCESS = 0, + QSPI_TEST_UNKNOWN = 1, + QSPI_INIT_FAILURE = 2, + QSPI_WRITE_FAILURE = 3, + QSPI_READ_FAILURE = 4, +}; +static QueueHandle_t xQueue = NULL; +static FFreeRTOSQspi *os_qspi_ctrl_p = NULL; -static void QspiReadTask(void *pvParameters) +static FError QspiRead(int channel) { - int channel = (int)(uintptr)pvParameters; const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); FError ret = FQSPI_SUCCESS; + int i = 0; + FFreeRTOSQspiMessage message; + memset(&message, 0, sizeof(message)); - xSemaphoreTake(xCountingSemaphore, portMAX_DELAY); - - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + printf("CSN%d QspiReadTask is running\r\n", channel); + message.read_buf = rd_buf; + message.length = DAT_LENGTH; + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_READ; + message.cs = channel; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) { - /* Print out the name of this task. */ - printf("CSN%d QspiReadTask is running\r\n", channel); + FQSPI_ERROR("QspiReadTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + return ret; + } + FtDumpHexByte(rd_buf, DAT_LENGTH); - message.read_buf = rd_buf; - message.length = DAT_LENGTH; - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_READ; - message.cs = channel; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); - if (FQSPI_SUCCESS != ret) + for (i = 0; i < DAT_LENGTH; i++) + { + if (rd_buf[i] != wr_buf[i]) { - printf("QspiReadTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + FQSPI_ERROR("The read and write data is inconsistent.\r\n"); + ret = FQSPI_INVAL_PARAM; + return ret; } - taskENTER_CRITICAL(); //进入临界区 - FtDumpHexByte(rd_buf, DAT_LENGTH); - taskEXIT_CRITICAL(); //退出临界区 - - /* Delay for a period. This time a call to vTaskDelay() is used which - places the task into the Blocked state until the delay period has - expired. The parameter takes a time specified in 'ticks', and the - pdMS_TO_TICKS() macro is used (where the xDelay constant is - declared) to convert TASK_DELAY_MS milliseconds into an equivalent time in - ticks. */ - vTaskDelay(xDelay); } + + return ret; } -static void QspiWriteTask(void *pvParameters) +static FError QspiWrite(int channel) { + FError ret = FQSPI_SUCCESS; char *pcTaskName; - int channel = (int)(uintptr)pvParameters; + const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); + int i = 0; + FFreeRTOSQspiMessage message; + memset(&message, 0, sizeof(message)); + if (channel == 0) { pcTaskName = "CSN0 write content successfully"; @@ -153,137 +114,147 @@ static void QspiWriteTask(void *pvParameters) pcTaskName = "CSN1 write content successfully"; } - const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); - int i = 0; + printf("CSN%d QspiWrite is running\r\n", channel); + + /*set the write buffer content*/ + u8 len = strlen(pcTaskName) + 1; + memcpy(&wr_buf, pcTaskName, len); + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_SE; + message.cs = channel; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + return ret; + } + message.write_buf = wr_buf; + message.length = DAT_LENGTH; + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_PP; + message.cs = channel; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + return ret; + } + + return ret; +} + +static FError QspiInit(void) +{ FError ret = FQSPI_SUCCESS; - xSemaphoreTake(xCountingSemaphore, portMAX_DELAY); + /*init iomux*/ + FIOMuxInit(); + FIOPadSetQspiMux(QSPI_TEST_ID, FQSPI_CS_0); + FIOPadSetQspiMux(QSPI_TEST_ID, FQSPI_CS_1); - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + /* init qspi controller */ + os_qspi_ctrl_p = FFreeRTOSQspiInit(QSPI_TEST_ID); + flash_wr_start = os_qspi_ctrl_p->qspi_ctrl.flash_size - FLASH_WR_OFFSET; + if (os_qspi_ctrl_p == NULL) { - /* Print out the name of this task. */ - printf("CSN%d QspiWriteTask is running\r\n", channel); - - /*set the write buffer content*/ - u8 len = strlen(pcTaskName) + 1; - memcpy(&wr_buf, pcTaskName, len); + FQSPI_ERROR("FFreeRTOSQspiInit failed.\n"); + ret = FQSPI_INVAL_PARAM; + } - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_SE; - message.cs = channel; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + return ret; +} + +static void FFreeRTOSQspiDelete(void) +{ + BaseType_t xReturn = pdPASS; + + FIOMuxDeInit(); + FFreeRTOSQspiDeinit(os_qspi_ctrl_p); +} + +static void FFreeRTOSQspiDualFlashTask(void) +{ + FError ret = FQSPI_SUCCESS; + int task_res = QSPI_TEST_SUCCESS; + + ret = QspiInit(); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Flash init failed.\r\n"); + task_res = QSPI_INIT_FAILURE; + goto task_exit; + } + + for (int i = FQSPI_CS_0; i < 2; i++) + { + ret = QspiWrite(i); if (FQSPI_SUCCESS != ret) { - printf("QspiWriteTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + FQSPI_ERROR("CSN%d Flash write failed.\r\n", i); + task_res = QSPI_WRITE_FAILURE; + goto task_exit; } - message.write_buf = wr_buf; - message.length = DAT_LENGTH; - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_PP; - message.cs = channel; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + ret = QspiRead(i); if (FQSPI_SUCCESS != ret) { - printf("QspiWriteTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + FQSPI_ERROR("CSN%d Flash read failed.\r\n", i); + task_res = QSPI_READ_FAILURE; + goto task_exit; } - - /* Delay for a period. This time a call to vTaskDelay() is used which - places the task into the Blocked state until the delay period has - expired. The parameter takes a time specified in 'ticks', and the - pdMS_TO_TICKS() macro is used (where the xDelay constant is - declared) to convert TASK_DELAY_MS milliseconds into an equivalent time in - ticks. */ - vTaskDelay(xDelay); } -} +task_exit: + xQueueSend(xQueue, &task_res, 0); + + vTaskDelete(NULL); +} BaseType_t FFreeRTOSQspiDualFlashTaskCreate(void) { - BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - memset(&message, 0, sizeof(message)); - - xCountingSemaphore = xSemaphoreCreateCounting(READ_WRITE_TASK_NUM, 0); - if (xCountingSemaphore == NULL) - { - printf("FFreeRTOSWdtCreate xCountingSemaphore create failed.\r\n"); - return pdFAIL; - } + BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */ + int task_res = QSPI_TEST_UNKNOWN; - xCtrlSemaphore = xSemaphoreCreateBinary(); - if (xCtrlSemaphore != NULL) + xQueue = xQueueCreate(1, sizeof(int)); + if (xQueue == NULL) { - xSemaphoreGive(xCtrlSemaphore); + FQSPI_ERROR("xQueue create failed.\r\n"); + goto exit; } -#if defined(CONFIG_TARGET_E2000) - /*init iomux*/ - FIOMuxInit(); - FIOPadSetQspiMux(FQSPI0_ID, FQSPI_CS_0); - FIOPadSetQspiMux(FQSPI0_ID, FQSPI_CS_1); -#endif + taskENTER_CRITICAL(); /*进入临界区*/ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSQspiDualFlashTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSQspiDualFlashTask", /* 任务名字 */ + (uint16_t)1024, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ + NULL); /* 任务控制 */ + taskEXIT_CRITICAL(); /*退出临界区*/ - /* init qspi controller */ - os_qspi_ctrl_p = FFreeRTOSQspiInit(FQSPI0_ID); - flash_wr_start = os_qspi_ctrl_p->qspi_ctrl.flash_size - FLASH_WR_OFFSET; - if (os_qspi_ctrl_p == NULL) + if (xReturn == pdFAIL) { - printf("FFreeRTOSWdtInit failed.\n"); + FQSPI_ERROR("xTaskCreate FFreeRTOSQspiDualFlashTask failed."); + goto exit; } - taskENTER_CRITICAL(); /*进入临界区*/ - /* qspi 通道0 */ - xSemaphoreTake(xCtrlSemaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)QspiInitTask, /* 任务入口函数 */ - (const char *)"QspiInitTask0", /* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)0, /* 任务入口函数参数 */ - (UBaseType_t)2, /* 任务的优先级 */ - NULL); - /* qspi 通道1 */ - xSemaphoreTake(xCtrlSemaphore, portMAX_DELAY); - xReturn = xTaskCreate((TaskFunction_t)QspiInitTask, /* 任务入口函数 */ - (const char *)"QspiInitTask1", /* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)1, /* 任务入口函数参数 */ - (UBaseType_t)2, /* 任务的优先级 */ - NULL); - taskEXIT_CRITICAL(); /*退出临界区*/ + xReturn = xQueueReceive(xQueue, &task_res, TIMER_OUT); - return xReturn; -} - -static void FFreeRTOSQspiDelete(void *pvParameters) -{ - xSemaphoreTake(xCountingSemaphore, portMAX_DELAY); - - BaseType_t xReturn = pdPASS; - - if (read_handle) + if (xReturn == pdFAIL) { - vTaskDelete(read_handle); - printf("Delete QspiReadTask successfully.\r\n"); + FQSPI_ERROR("xQueue receive timeout.\r\n"); + goto exit; } - if (write_handle) +exit: + vQueueDelete(xQueue); + FFreeRTOSQspiDelete(); + if (task_res != QSPI_TEST_SUCCESS) { - vTaskDelete(write_handle); - printf("Delete QspiWriteTask successfully.\r\n"); + printf("%s@%d: Qspi dual flash example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; } - - xSemaphoreGive(xCtrlSemaphore); - - if ((int)(uintptr)pvParameters == 1) + else { - /* 删除信号量 */ - vSemaphoreDelete(xCountingSemaphore); - vSemaphoreDelete(xCtrlSemaphore); - /* 去初始化 */ - FIOMuxDeInit(); - FFreeRTOSQspiDeinit(os_qspi_ctrl_p); + printf("%s@%d: Qspi dual flash example [success].\r\n", __func__, __LINE__); + return pdTRUE; } - - printf("Delete QspiDeleteTask successfully.\r\n"); - vTaskDelete(NULL); -} +} \ No newline at end of file diff --git a/example/peripheral/qspi/src/qspi_flash_connection_check_example.c b/example/peripheral/qspi/src/qspi_flash_connection_check_example.c index 7cc21a79491f50bba866f784a1534c1e4c7052de..505c816db545987717b2db59d17b1a02ed2675e5 100644 --- a/example/peripheral/qspi/src/qspi_flash_connection_check_example.c +++ b/example/peripheral/qspi/src/qspi_flash_connection_check_example.c @@ -19,77 +19,112 @@ * Modify History: * Ver   Who         Date          Changes * ----- ------      --------     -------------------------------------- - * 1.0 huangjin 2023/11/16 first release + * 1.0 huangjin 2023/11/16 first release + * 1.1 zhangyan 2024/4/18 add no letter shell mode, adapt to auto-test system */ #include #include "FreeRTOSConfig.h" #include "FreeRTOS.h" #include "task.h" -#include "fqspi.h" -#include "fqspi_flash.h" #include "fqspi_os.h" -#include "timers.h" #include "qspi_example.h" +#include "fqspi_flash.h" #include "sdkconfig.h" #include "fio_mux.h" -static FFreeRTOSQspi *os_qspi_ctrl_p = NULL; +#define FQSPI_DEBUG_TAG "QSPI_CONNECT_CHECK_TEST" +#define FQSPI_ERROR(format, ...) FT_DEBUG_PRINT_E(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_WARN(format, ...) FT_DEBUG_PRINT_W(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_INFO(format, ...) FT_DEBUG_PRINT_I(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_DEBUG(format, ...) FT_DEBUG_PRINT_D(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) -static void FFreeRTOSQspiDelete(void); +#define TIMER_OUT (pdMS_TO_TICKS(5000UL)) +enum +{ + QSPI_TEST_SUCCESS = 0, + QSPI_TEST_UNKNOWN = 1, + QSPI_INIT_FAILURE = 2, +}; +static QueueHandle_t xQueue = NULL; +static FFreeRTOSQspi *os_qspi_ctrl_p = NULL; -static void QspiInitTask(void *pvParameters) +static void FFreeRTOSQspiDelete(void) { - /* The qspi_id to use is passed in via the parameter. - Cast this to a qspi_id pointer. */ - u32 qspi_id = (u32)(uintptr)pvParameters; + BaseType_t xReturn = pdPASS; + + FIOMuxDeInit(); + FFreeRTOSQspiDeinit(os_qspi_ctrl_p); +} -#if defined(CONFIG_TARGET_E2000) +static void QspiConnectCheckTask(void) +{ + FError ret = FQSPI_SUCCESS; + int task_res = QSPI_TEST_SUCCESS; /*init iomux*/ FIOMuxInit(); - FIOPadSetQspiMux(qspi_id, FQSPI_CS_0); - FIOPadSetQspiMux(qspi_id, FQSPI_CS_1); -#endif + FIOPadSetQspiMux(QSPI_TEST_ID, FQSPI_CS_0); + FIOPadSetQspiMux(QSPI_TEST_ID, FQSPI_CS_1); /* init qspi controller */ - os_qspi_ctrl_p = FFreeRTOSQspiInit(qspi_id); + os_qspi_ctrl_p = FFreeRTOSQspiInit(QSPI_TEST_ID); if (os_qspi_ctrl_p == NULL) { - printf("FFreeRTOSWdtInit failed.\n"); + FQSPI_ERROR("FFreeRTOSWdtInit failed.\n"); + ret = FQSPI_INVAL_PARAM; + task_res = QSPI_INIT_FAILURE; goto qspi_init_exit; } FFreeRTOSQspiDelete(); qspi_init_exit: + xQueueSend(xQueue, &task_res, 0); + vTaskDelete(NULL); } -BaseType_t FFreeRTOSQspiCheckTaskCreate(u32 id) +BaseType_t FFreeRTOSQspiCheckTaskCreate(void) { - BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - - taskENTER_CRITICAL(); /*进入临界区*/ + BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */ + int task_res = QSPI_TEST_UNKNOWN; + xQueue = xQueueCreate(1, sizeof(int)); + if (xQueue == NULL) + { + FQSPI_ERROR("xQueue create failed.\r\n"); + goto exit; + } - xReturn = xTaskCreate((TaskFunction_t)QspiInitTask, /* 任务入口函数 */ - (const char *)"QspiInitTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)(uintptr)id,/* 任务入口函数参数 */ - (UBaseType_t)2, /* 任务的优先级 */ + taskENTER_CRITICAL(); /*进入临界区*/ + xReturn = xTaskCreate((TaskFunction_t)QspiConnectCheckTask, /* 任务入口函数 */ + (const char *)"QspiConnectCheckTask", /* 任务名字 */ + (uint16_t)1024, /* 任务栈大小 */ + NULL, + (UBaseType_t)2, /* 任务的优先级 */ NULL); - taskEXIT_CRITICAL(); /*退出临界区*/ + if (xReturn == pdFAIL) + { + FQSPI_ERROR("xTaskCreate QspiConnectCheckTask failed."); + goto exit; + } - return xReturn; -} - -static void FFreeRTOSQspiDelete(void) -{ - BaseType_t xReturn = pdPASS; + xReturn = xQueueReceive(xQueue, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FQSPI_ERROR("xQueue receive timeout.\r\n"); + goto exit; + } - FIOMuxDeInit(); - - FFreeRTOSQspiDeinit(os_qspi_ctrl_p); +exit: + vQueueDelete(xQueue); + if (task_res != QSPI_TEST_SUCCESS) + { + printf("%s@%d: Qspi flash indirect example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Qspi flash indirect example [success].\r\n", __func__, __LINE__); + return pdTRUE; + } } - - - diff --git a/example/peripheral/qspi/src/qspi_flash_indirect_example.c b/example/peripheral/qspi/src/qspi_flash_indirect_example.c index 46a0102be5cee60d90d8f82fc0d03eed5bd58d39..ec5195341944e37b13db8718c0ff388bdec82b79 100644 --- a/example/peripheral/qspi/src/qspi_flash_indirect_example.c +++ b/example/peripheral/qspi/src/qspi_flash_indirect_example.c @@ -20,226 +20,184 @@ * Ver   Who         Date          Changes * ----- ------      --------     -------------------------------------- * 1.0 huangjin 2023/11/16 first release + * 1.1 zhangyan 2024/4/18 add no letter shell mode, adapt to auto-test system */ #include #include "FreeRTOSConfig.h" #include "FreeRTOS.h" #include "task.h" -#include "fqspi.h" -#include "fqspi_flash.h" #include "fqspi_os.h" -#include "timers.h" #include "qspi_example.h" +#include "fqspi_flash.h" #include "sdkconfig.h" #include "fio_mux.h" +#define FQSPI_DEBUG_TAG "QSPI_INDIRECT_TEST" +#define FQSPI_ERROR(format, ...) FT_DEBUG_PRINT_E(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_WARN(format, ...) FT_DEBUG_PRINT_W(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_INFO(format, ...) FT_DEBUG_PRINT_I(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_DEBUG(format, ...) FT_DEBUG_PRINT_D(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) /* write and read task delay in milliseconds */ -#define TASK_DELAY_MS 1000UL - -static xTaskHandle read_handle; -static xTaskHandle write_handle; - +#define TASK_DELAY_MS 1000UL /* Offset 1M from flash maximum capacity*/ -#define FLASH_WR_OFFSET SZ_1M -/* write and read start address */ -static u32 flash_wr_start = 0 ; - +#define FLASH_WR_OFFSET SZ_1M /* write and read cs channel */ #define QSPI_CS_CHANNEL 0 - -#define DAT_LENGTH 64 +#define TIMER_OUT (pdMS_TO_TICKS(5000UL)) +#define DAT_LENGTH 64 static u8 rd_buf[DAT_LENGTH] = {0}; static u8 wr_buf[DAT_LENGTH] = {0}; /* test task number */ #define READ_WRITE_TASK_NUM 3 -static xSemaphoreHandle xCountingSemaphore; +enum +{ + QSPI_TEST_SUCCESS = 0, + QSPI_TEST_UNKNOWN = 1, + QSPI_INIT_FAILURE = 2, + QSPI_WRITE_FAILURE = 3, + QSPI_READ_FAILURE = 4, +}; + +static QueueHandle_t xQueue = NULL; static FFreeRTOSQspi *os_qspi_ctrl_p = NULL; +/* write and read start address */ +static u32 flash_wr_start = 0; -static FFreeRTOSQspiMessage message = {0}; - -static void FFreeRTOSQspiDelete(void); - -static void QspiInitTask(void *pvParameters) +static FError QspiInit(void) { - /* The qspi_id to use is passed in via the parameter. - Cast this to a qspi_id pointer. */ - u32 qspi_id = (u32)(uintptr)pvParameters; - -#if defined(CONFIG_TARGET_E2000) + FError ret = FQSPI_SUCCESS; /*init iomux*/ FIOMuxInit(); - FIOPadSetQspiMux(qspi_id, FQSPI_CS_0); - FIOPadSetQspiMux(qspi_id, FQSPI_CS_1); -#endif + FIOPadSetQspiMux(QSPI_TEST_ID, FQSPI_CS_0); /* init qspi controller */ - os_qspi_ctrl_p = FFreeRTOSQspiInit(qspi_id); + os_qspi_ctrl_p = FFreeRTOSQspiInit(QSPI_TEST_ID); flash_wr_start = os_qspi_ctrl_p->qspi_ctrl.flash_size - FLASH_WR_OFFSET; if (os_qspi_ctrl_p == NULL) { - printf("FFreeRTOSWdtInit failed.\n"); - goto qspi_init_exit; + FQSPI_ERROR("FFreeRTOSQspiInit failed.\n"); + ret = FQSPI_INVAL_PARAM; + return ret; } -qspi_init_exit: - vTaskDelete(NULL); + return ret; } -static void QspiReadTask(void *pvParameters) +static FError QspiRead(void) { - const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); FError ret = FQSPI_SUCCESS; + const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); int i = 0; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + /* Read norflash data */ + ret = FQspiFlashPortReadData(&os_qspi_ctrl_p->qspi_ctrl, FQSPI_FLASH_CMD_READ, flash_wr_start, rd_buf, DAT_LENGTH); + if (FQSPI_SUCCESS != ret) { - if (uxSemaphoreGetCount( xCountingSemaphore ) == READ_WRITE_TASK_NUM) - { - FFreeRTOSQspiDelete(); - printf("Delete QspiReadTask successfully.\r\n"); - vTaskDelete(NULL); - } - /* Print out the name of this task. */ - printf("QspiReadTask is running. count = %d\r\n", uxSemaphoreGetCount( xCountingSemaphore )+1); - - /* Read norflash data */ - ret = FQspiFlashPortReadData(&os_qspi_ctrl_p->qspi_ctrl, FQSPI_FLASH_CMD_READ, flash_wr_start, rd_buf, DAT_LENGTH); - if (FQSPI_SUCCESS != ret) - { - printf("QspiReadTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); - } - taskENTER_CRITICAL(); //进入临界区 - FtDumpHexByte(rd_buf, DAT_LENGTH); - taskEXIT_CRITICAL(); //退出临界区 - - /* 判断读写内容是否一致 */ - for (i = 0; i < DAT_LENGTH; i++) + FQSPI_ERROR("QspiRead FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + return ret; + } + FtDumpHexByte(rd_buf, DAT_LENGTH); + /* 判断读写内容是否一致 */ + for (i = 0; i < DAT_LENGTH; i++) + { + if (rd_buf[i] != wr_buf[i]) { - if (rd_buf[i] != wr_buf[i]) - { - printf("The read and write data is inconsistent.\r\n"); - break; - } + FQSPI_ERROR("The read and write data is inconsistent.\r\n"); + ret = FQSPI_INVAL_PARAM; + return ret; } - xSemaphoreGive(xCountingSemaphore); - - /* Delay for a period. This time a call to vTaskDelay() is used which - places the task into the Blocked state until the delay period has - expired. The parameter takes a time specified in 'ticks', and the - pdMS_TO_TICKS() macro is used (where the xDelay constant is - declared) to convert TASK_DELAY_MS milliseconds into an equivalent time in - ticks. */ - vTaskDelay(xDelay); } + + return ret; } -static void QspiWriteTask(void *pvParameters) +static FError QspiWrite(void) { - const char *pcTaskName = "QspiWriteTask is running\r\n"; const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); int i = 0; FError ret = FQSPI_SUCCESS; u32 array_index = 0; u32 write_addr = 0; - - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + FFreeRTOSQspiMessage message; + memset(&message, 0, sizeof(message)); + printf("QspiWrite is running\r\n"); + for (i = 0; i < DAT_LENGTH; i++) { - if (uxSemaphoreGetCount( xCountingSemaphore ) == READ_WRITE_TASK_NUM) - { - printf("Delete QspiWriteTask successfully.\r\n"); - vTaskDelete(NULL); - } - /* Print out the name of this task. */ - printf(pcTaskName); - for (i = 0; i < DAT_LENGTH; i++) + wr_buf[i] = i; + } + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_SE; + message.cs = QSPI_CS_CHANNEL; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Failed to erase sectors. return value: 0x%x\r\n", ret); + return ret; + } + write_addr = os_qspi_ctrl_p->qspi_ctrl.flash_size - FLASH_WR_OFFSET; + /* Write norflash data */ + while (array_index < sizeof(wr_buf)) + { + u8 data_to_write[4] = {0}; + for (i = 0; i < 4; i++) { - wr_buf[i] = uxSemaphoreGetCount( xCountingSemaphore ) + i; + if (array_index < sizeof(wr_buf)) + { + data_to_write[i] = wr_buf[array_index]; + array_index++; + } + else + { + break; + } } - - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_SE; - message.cs = QSPI_CS_CHANNEL; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + ret = FQspiFlashPortWriteData(&os_qspi_ctrl_p->qspi_ctrl, FQSPI_FLASH_CMD_PP, write_addr, (u8 *)(data_to_write), 4); if (FQSPI_SUCCESS != ret) { - printf("Failed to erase sectors. return value: 0x%x\r\n", ret); - } - - write_addr = os_qspi_ctrl_p->qspi_ctrl.flash_size - FLASH_WR_OFFSET; - /* Write norflash data */ - while (array_index < sizeof(wr_buf)) - { - u8 data_to_write[4] = {0}; - for (i = 0; i < 4; i++) - { - if (array_index < sizeof(wr_buf)) - { - data_to_write[i] = wr_buf[array_index]; - array_index++; - } - else - { - break; - } - } - ret = FQspiFlashPortWriteData(&os_qspi_ctrl_p->qspi_ctrl, FQSPI_FLASH_CMD_PP, write_addr, (u8 *)(data_to_write), 4); - write_addr += 4; + FQSPI_ERROR("Failed to erase sectors. return value: 0x%x\r\n", ret); + return ret; } - array_index = 0; - - /* Delay for a period. This time a call to vTaskDelay() is used which - places the task into the Blocked state until the delay period has - expired. The parameter takes a time specified in 'ticks', and the - pdMS_TO_TICKS() macro is used (where the xDelay constant is - declared) to convert TASK_DELAY_MS milliseconds into an equivalent time in - ticks. */ - vTaskDelay(xDelay); + write_addr += 4; } + + return ret; } -BaseType_t FFreeRTOSQspiIndirectTaskCreate(u32 id) +static void FFreeRTOSQspiIndirectTask(void *pvParameters) { - BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - - memset(&message, 0, sizeof(message)); + FError ret = FQSPI_SUCCESS; + int task_res = QSPI_TEST_SUCCESS; - xCountingSemaphore = xSemaphoreCreateCounting(READ_WRITE_TASK_NUM, 0); - if (xCountingSemaphore == NULL) + ret = QspiInit(); + if (FQSPI_SUCCESS != ret) { - printf("FFreeRTOSWdtCreate xCountingSemaphore create failed.\r\n"); - return pdFAIL; + FQSPI_ERROR("Flash init failed.\r\n"); + task_res = QSPI_INIT_FAILURE; + goto task_exit; } - taskENTER_CRITICAL(); /*进入临界区*/ - - xReturn = xTaskCreate((TaskFunction_t)QspiInitTask, /* 任务入口函数 */ - (const char *)"QspiInitTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)(uintptr)id,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ - NULL); - - xReturn = xTaskCreate((TaskFunction_t)QspiWriteTask, /* 任务入口函数 */ - (const char *)"QspiWriteTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */ - (TaskHandle_t *)&write_handle); /* 任务控制 */ + ret = QspiWrite(); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Flash write failed.\r\n"); + task_res = QSPI_WRITE_FAILURE; + goto task_exit; + } - xReturn = xTaskCreate((TaskFunction_t)QspiReadTask, /* 任务入口函数 */ - (const char *)"QspiReadTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 3, /* 任务的优先级 */ - (TaskHandle_t *)&read_handle); /* 任务控制 */ + ret = QspiRead(); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Flash read failed.\r\n"); + task_res = QSPI_READ_FAILURE; + goto task_exit; + } - taskEXIT_CRITICAL(); /*退出临界区*/ +task_exit: + xQueueSend(xQueue, &task_res, 0); - return xReturn; + vTaskDelete(NULL); } static void FFreeRTOSQspiDelete(void) @@ -247,10 +205,54 @@ static void FFreeRTOSQspiDelete(void) FIOMuxDeInit(); FFreeRTOSQspiDeinit(os_qspi_ctrl_p); - - /* delete count sem */ - vSemaphoreDelete(xCountingSemaphore); } +BaseType_t FFreeRTOSQspiIndirectTaskCreate(void) +{ + BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */ + int task_res = QSPI_TEST_UNKNOWN; + xQueue = xQueueCreate(1, sizeof(int)); + if (xQueue == NULL) + { + FQSPI_ERROR("xQueue create failed.\r\n"); + goto exit; + } + taskENTER_CRITICAL(); /*进入临界区*/ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSQspiIndirectTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSQspiIndirectTask", /* 任务名字 */ + (uint16_t)1024, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ + NULL); + taskEXIT_CRITICAL(); /*退出临界区*/ + if (xReturn == pdFAIL) + { + FQSPI_ERROR("xTaskCreate FFreeRTOSQspiIndirectTask failed."); + goto exit; + } + + xReturn = xQueueReceive(xQueue, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FQSPI_ERROR("xQueue receive timeout.\r\n"); + goto exit; + } + +exit: + vQueueDelete(xQueue); + FFreeRTOSQspiDelete(); + if (task_res != QSPI_TEST_SUCCESS) + { + printf("%s@%d: Qspi flash indirect example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Qspi flash indirect example [success].\r\n", __func__, __LINE__); + return pdTRUE; + } + + return xReturn; +} diff --git a/example/peripheral/qspi/src/qspi_flash_polled_example.c b/example/peripheral/qspi/src/qspi_flash_polled_example.c index 571f7a8385eb971f49e1be4290da92e405086bc2..539800aa3cfd641aa4e4446d84c1dd2dd3227c4d 100644 --- a/example/peripheral/qspi/src/qspi_flash_polled_example.c +++ b/example/peripheral/qspi/src/qspi_flash_polled_example.c @@ -21,217 +21,181 @@ * ----- ------      --------     -------------------------------------- * 1.0 wangxiaodong 2022/8/9 first release * 2.0 huangjin 2023/11/16 Modified function + * 2.1 zhangyan 2024/4/18 add no letter shell mode, adapt to auto-test system */ #include #include "FreeRTOSConfig.h" #include "FreeRTOS.h" #include "task.h" -#include "fqspi.h" -#include "fqspi_flash.h" #include "fqspi_os.h" -#include "timers.h" #include "qspi_example.h" +#include "fqspi_flash.h" #include "sdkconfig.h" #include "fio_mux.h" -/* write and read task delay in milliseconds */ -#define TASK_DELAY_MS 1000UL +#define FQSPI_DEBUG_TAG "QSPI_FLASH_POLLED_TEST" +#define FQSPI_ERROR(format, ...) FT_DEBUG_PRINT_E(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_WARN(format, ...) FT_DEBUG_PRINT_W(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_INFO(format, ...) FT_DEBUG_PRINT_I(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) +#define FQSPI_DEBUG(format, ...) FT_DEBUG_PRINT_D(FQSPI_DEBUG_TAG, format, ##__VA_ARGS__) -static xTaskHandle read_handle; -static xTaskHandle write_handle; +/* write and read task delay in milliseconds */ +#define TASK_DELAY_MS 1000UL +#define TIMER_OUT (pdMS_TO_TICKS(5000UL)) /* Offset 1M from flash maximum capacity*/ -#define FLASH_WR_OFFSET SZ_1M +#define FLASH_WR_OFFSET SZ_1M /* write and read start address */ -static u32 flash_wr_start = 0 ; +static u32 flash_wr_start = 0; /* write and read cs channel */ #define QSPI_CS_CHANNEL 0 -#define DAT_LENGTH 64 +#define DAT_LENGTH 64 static u8 rd_buf[DAT_LENGTH] = {0}; static u8 wr_buf[DAT_LENGTH] = {0}; -/* test task number */ -#define READ_WRITE_TASK_NUM 3 -static xSemaphoreHandle xCountingSemaphore; - +enum +{ + QSPI_TEST_SUCCESS = 0, + QSPI_TEST_UNKNOWN = 1, + QSPI_INIT_FAILURE = 2, + QSPI_WRITE_FAILURE = 3, + QSPI_READ_FAILURE = 4, +}; + +static QueueHandle_t xQueue = NULL; static FFreeRTOSQspi *os_qspi_ctrl_p = NULL; -static FFreeRTOSQspiMessage message = {0}; - -static void FFreeRTOSQspiDelete(void); - -static void QspiInitTask(void *pvParameters) +static FError QspiInit(void) { /* The qspi_id to use is passed in via the parameter. Cast this to a qspi_id pointer. */ - u32 qspi_id = (u32)(uintptr)pvParameters; + FError ret = FQSPI_SUCCESS; -#if defined(CONFIG_TARGET_E2000) /*init iomux*/ FIOMuxInit(); - FIOPadSetQspiMux(qspi_id, FQSPI_CS_0); - FIOPadSetQspiMux(qspi_id, FQSPI_CS_1); -#endif + FIOPadSetQspiMux(QSPI_TEST_ID, FQSPI_CS_0); /* init qspi controller */ - os_qspi_ctrl_p = FFreeRTOSQspiInit(qspi_id); + os_qspi_ctrl_p = FFreeRTOSQspiInit(QSPI_TEST_ID); flash_wr_start = os_qspi_ctrl_p->qspi_ctrl.flash_size - FLASH_WR_OFFSET; if (os_qspi_ctrl_p == NULL) { - printf("FFreeRTOSWdtInit failed.\n"); - goto qspi_init_exit; + FQSPI_ERROR("FFreeRTOSQspiInit failed.\n"); + ret = FQSPI_INVAL_PARAM; + return ret; } - -qspi_init_exit: - vTaskDelete(NULL); + + return ret; } -static void QspiReadTask(void *pvParameters) +static FError QspiRead(void) { const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); FError ret = FQSPI_SUCCESS; + FFreeRTOSQspiMessage message; + memset(&message, 0, sizeof(message)); int i = 0; - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + message.read_buf = rd_buf; + message.length = DAT_LENGTH; + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_READ; + message.cs = QSPI_CS_CHANNEL; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) { - if (uxSemaphoreGetCount( xCountingSemaphore ) == READ_WRITE_TASK_NUM) - { - FFreeRTOSQspiDelete(); - printf("Delete QspiReadTask successfully.\r\n"); - vTaskDelete(NULL); - } - /* Print out the name of this task. */ - printf("QspiReadTask is running. count = %d\r\n", uxSemaphoreGetCount( xCountingSemaphore )+1); - - message.read_buf = rd_buf; - message.length = DAT_LENGTH; - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_READ; - message.cs = QSPI_CS_CHANNEL; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); - if (FQSPI_SUCCESS != ret) - { - printf("QspiReadTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); - } - taskENTER_CRITICAL(); //进入临界区 - FtDumpHexByte(rd_buf, DAT_LENGTH); - taskEXIT_CRITICAL(); //退出临界区 - - /* 判断读写内容是否一致 */ - for (i = 0; i < DAT_LENGTH; i++) + FQSPI_ERROR("QspiRead FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + return ret; + } + FtDumpHexByte(rd_buf, DAT_LENGTH); + + /* 判断读写内容是否一致 */ + for (i = 0; i < DAT_LENGTH; i++) + { + if (rd_buf[i] != wr_buf[i]) { - if (rd_buf[i] != wr_buf[i]) - { - printf("The read and write data is inconsistent.\r\n"); - break; - } + FQSPI_ERROR("The read and write data is inconsistent.\r\n"); + ret = FQSPI_INVAL_PARAM; + return ret; } - xSemaphoreGive(xCountingSemaphore); - - /* Delay for a period. This time a call to vTaskDelay() is used which - places the task into the Blocked state until the delay period has - expired. The parameter takes a time specified in 'ticks', and the - pdMS_TO_TICKS() macro is used (where the xDelay constant is - declared) to convert TASK_DELAY_MS milliseconds into an equivalent time in - ticks. */ - vTaskDelay(xDelay); } + + return ret; } -static void QspiWriteTask(void *pvParameters) +static FError QspiWrite(void) { - const char *pcTaskName = "QspiWriteTask is running\r\n"; + const char *pcTaskName = "QspiWrite is running\r\n"; const TickType_t xDelay = pdMS_TO_TICKS(TASK_DELAY_MS); int i = 0; FError ret = FQSPI_SUCCESS; - - /* As per most tasks, this task is implemented in an infinite loop. */ - for (;;) + FFreeRTOSQspiMessage message; + memset(&message, 0, sizeof(message)); + /* Print out the name of this task. */ + printf(pcTaskName); + for (i = 0; i < DAT_LENGTH; i++) { - if (uxSemaphoreGetCount( xCountingSemaphore ) == READ_WRITE_TASK_NUM) - { - printf("Delete QspiWriteTask successfully.\r\n"); - vTaskDelete(NULL); - } - /* Print out the name of this task. */ - printf(pcTaskName); - for (i = 0; i < DAT_LENGTH; i++) - { - wr_buf[i] = uxSemaphoreGetCount( xCountingSemaphore ) + i; - } - - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_SE; - message.cs = QSPI_CS_CHANNEL; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); - if (FQSPI_SUCCESS != ret) - { - printf("Failed to erase sectors. return value: 0x%x\r\n", ret); - } - - message.write_buf = wr_buf; - message.length = DAT_LENGTH; - message.addr = flash_wr_start; - message.cmd = FQSPI_FLASH_CMD_PP; - message.cs = QSPI_CS_CHANNEL; - ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); - if (FQSPI_SUCCESS != ret) - { - printf("QspiWriteTask FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); - } - - /* Delay for a period. This time a call to vTaskDelay() is used which - places the task into the Blocked state until the delay period has - expired. The parameter takes a time specified in 'ticks', and the - pdMS_TO_TICKS() macro is used (where the xDelay constant is - declared) to convert TASK_DELAY_MS milliseconds into an equivalent time in - ticks. */ - vTaskDelay(xDelay); + wr_buf[i] = i; } + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_SE; + message.cs = QSPI_CS_CHANNEL; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Failed to erase sectors. return value: 0x%x\r\n", ret); + return ret; + } + message.write_buf = wr_buf; + message.length = DAT_LENGTH; + message.addr = flash_wr_start; + message.cmd = FQSPI_FLASH_CMD_PP; + message.cs = QSPI_CS_CHANNEL; + ret = FFreeRTOSQspiTransfer(os_qspi_ctrl_p, &message); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("QspiWrite FFreeRTOSQspiTransfer failed, return value: 0x%x\r\n", ret); + return ret; + } + + return ret; } -BaseType_t FFreeRTOSQspiPolledTaskCreate(u32 id) +static void FFreeRTOSQspiPolledTask(void) { - BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - - memset(&message, 0, sizeof(message)); + FError ret = FQSPI_SUCCESS; + int task_res = QSPI_TEST_SUCCESS; - xCountingSemaphore = xSemaphoreCreateCounting(READ_WRITE_TASK_NUM, 0); - if (xCountingSemaphore == NULL) + ret = QspiInit(); + if (FQSPI_SUCCESS != ret) { - printf("FFreeRTOSWdtCreate xCountingSemaphore create failed.\r\n"); - return pdFAIL; + FQSPI_ERROR("Flash init failed.\r\n"); + task_res = QSPI_INIT_FAILURE; + goto task_exit; } - taskENTER_CRITICAL(); /*进入临界区*/ - - xReturn = xTaskCreate((TaskFunction_t)QspiInitTask, /* 任务入口函数 */ - (const char *)"QspiInitTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - (void *)(uintptr)id,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ - NULL); - - xReturn = xTaskCreate((TaskFunction_t)QspiWriteTask, /* 任务入口函数 */ - (const char *)"QspiWriteTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */ - (TaskHandle_t *)&write_handle); /* 任务控制 */ + ret = QspiWrite(); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Flash write failed.\r\n"); + task_res = QSPI_WRITE_FAILURE; + goto task_exit; + } - xReturn = xTaskCreate((TaskFunction_t)QspiReadTask, /* 任务入口函数 */ - (const char *)"QspiReadTask",/* 任务名字 */ - (uint16_t)1024, /* 任务栈大小 */ - NULL,/* 任务入口函数参数 */ - (UBaseType_t)configMAX_PRIORITIES - 3, /* 任务的优先级 */ - (TaskHandle_t *)&read_handle); /* 任务控制 */ + ret = QspiRead(); + if (FQSPI_SUCCESS != ret) + { + FQSPI_ERROR("Flash read failed.\r\n"); + task_res = QSPI_READ_FAILURE; + goto task_exit; + } - taskEXIT_CRITICAL(); /*退出临界区*/ +task_exit: + xQueueSend(xQueue, &task_res, 0); - return xReturn; + vTaskDelete(NULL); } static void FFreeRTOSQspiDelete(void) @@ -239,10 +203,52 @@ static void FFreeRTOSQspiDelete(void) FIOMuxDeInit(); FFreeRTOSQspiDeinit(os_qspi_ctrl_p); - - /* delete count sem */ - vSemaphoreDelete(xCountingSemaphore); } +BaseType_t FFreeRTOSQspiPolledTaskCreate(void) +{ + BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */ + int task_res = QSPI_TEST_UNKNOWN; + + xQueue = xQueueCreate(1, sizeof(int)); + if (xQueue == NULL) + { + FQSPI_ERROR("xQueue create failed.\r\n"); + goto exit; + } + + taskENTER_CRITICAL(); /*进入临界区*/ + xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSQspiPolledTask, /* 任务入口函数 */ + (const char *)"FFreeRTOSQspiPolledTask", /* 任务名字 */ + (uint16_t)1024, /* 任务栈大小 */ + NULL, /* 任务入口函数参数 */ + (UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */ + NULL); /* 任务控制 */ + taskEXIT_CRITICAL(); /*退出临界区*/ + if (xReturn == pdFAIL) + { + FQSPI_ERROR("xTaskCreate FFreeRTOSQspiPolledTask failed."); + goto exit; + } + xReturn = xQueueReceive(xQueue, &task_res, TIMER_OUT); + if (xReturn == pdFAIL) + { + FQSPI_ERROR("xQueue receive timeout.\r\n"); + goto exit; + } +exit: + vQueueDelete(xQueue); + FFreeRTOSQspiDelete(); + if (task_res != QSPI_TEST_SUCCESS) + { + printf("%s@%d: Qspi flash polled example [failure], task_res = %d\r\n", __func__, __LINE__, task_res); + return pdFAIL; + } + else + { + printf("%s@%d: Qspi flash polled example [success].\r\n", __func__, __LINE__); + return pdTRUE; + } +} diff --git a/example/peripheral/spi/inc/sfud_read_write.h b/example/peripheral/spi/inc/sfud_read_write.h index bf23b8e279cf85670a456bbefc6d8357021b5e00..ecb0e06376d617734005dee4e44ef953abf1e270 100644 --- a/example/peripheral/spi/inc/sfud_read_write.h +++ b/example/peripheral/spi/inc/sfud_read_write.h @@ -26,11 +26,16 @@ #include "ftypes.h" #include "FreeRTOS.h" +#include "sdkconfig.h" #ifdef __cplusplus extern "C" { #endif - +#if defined(CONFIG_E2000Q_DEMO_BOARD) || defined(CONFIG_E2000D_DEMO_BOARD) +#define SFUD_FLASH_INDEX SFUD_FSPIM2_INDEX +#elif defined (CONFIG_FIREFLY_DEMO_BOARD) +#define SFUD_FLASH_INDEX SFUD_FSPIM0_INDEX +#endif /***************************** Include Files *********************************/ /************************** Constant Definitions *****************************/ @@ -42,9 +47,8 @@ extern "C" /************************** Function Prototypes ******************************/ /*****************************************************************************/ -void SfudExampleTaskEntry(); -void FFreeRTOSSfudWriteThenRead(); +BaseType_t FFreeRTOSSfudWriteThenRead(void); #ifdef __cplusplus } diff --git a/example/peripheral/spi/main.c b/example/peripheral/spi/main.c index 81a8844b3aa0fa9798354c315d92fb6ba8c85a1d..291f53e564a5237276db2ba9fc27b2929b59baab 100644 --- a/example/peripheral/spi/main.c +++ b/example/peripheral/spi/main.c @@ -23,13 +23,24 @@ */ #include -#include "sfud_read_write.h" #include "FreeRTOS.h" -#include "task.h" #ifdef CONFIG_USE_LETTER_SHELL #include "shell.h" #include "shell_port.h" +#else +#include "task.h" +#include "sfud_read_write.h" + +void SfudExampleTaskEntry(void) +{ + /*Demo read and write by sfud*/ + FFreeRTOSSfudWriteThenRead(); + + printf("[test_end]\r\n"); + + vTaskDelete(NULL); +} #endif int main(void) diff --git a/example/peripheral/spi/src/cmd_sf.c b/example/peripheral/spi/src/cmd_sf.c index 4a878a778f32fe295641d8cfb1180a1973999a85..4fca2cb267539e531b7b429b1e25f5233d94af49 100644 --- a/example/peripheral/spi/src/cmd_sf.c +++ b/example/peripheral/spi/src/cmd_sf.c @@ -26,7 +26,6 @@ #include "FreeRTOS.h" #include "sfud_read_write.h" #include -#include "task.h" #include #include "strto.h" #ifdef CONFIG_USE_LETTER_SHELL @@ -67,14 +66,4 @@ static int SfudCmdEntry(int argc, char *argv[]) return 0; } SHELL_EXPORT_CMD(SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), sf, SfudCmdEntry, test freertos sfud); -#endif - -void SfudExampleTaskEntry() -{ - /*Demo read and write by sfud*/ - FFreeRTOSSfudWriteThenRead(); - - printf("[test_end]\r\n"); - - vTaskDelete(NULL); -} \ No newline at end of file +#endif \ No newline at end of file diff --git a/example/peripheral/spi/src/sfud_read_write.c b/example/peripheral/spi/src/sfud_read_write.c index 26244e5701642c8a95218c81ce52b98daa14f353..f77db1e55d92d1c4a4f1b8b539f72cfed1768e50 100644 --- a/example/peripheral/spi/src/sfud_read_write.c +++ b/example/peripheral/spi/src/sfud_read_write.c @@ -29,22 +29,15 @@ #include "task.h" #include "queue.h" #include "fdebug.h" -#include "fsleep.h" #include "fkernel.h" -#include "timers.h" - +#include "sfud_read_write.h" #include "sfud.h" /************************** Constant Definitions *****************************/ #define SFUD_WR_BUF_LEN 64 -#if defined(CONFIG_TARGET_E2000D)||defined(CONFIG_TARGET_E2000Q) -#define SFUD_FLASH_INDEX SFUD_FSPIM2_INDEX -#elif defined(CONFIG_TARGET_PHYTIUMPI) -#define SFUD_FLASH_INDEX SFUD_FSPIM0_INDEX -#endif /************************** Variable Definitions *****************************/ -static u32 flash_addr = 0x0; +static u32 flash_addr = 0x10;/*flash read and write addr*/ static u8 write_flash_buffer[SFUD_WR_BUF_LEN]; static u8 read_flash_buffer[SFUD_WR_BUF_LEN]; static QueueHandle_t xQueue = NULL; @@ -63,7 +56,8 @@ static QueueHandle_t xQueue = NULL; /*****************************************************************************/ enum { - SPI_SFUD_TEST_SUCCESS = 1, /*SPI sufd test success*/ + SPI_SFUD_TEST_SUCCESS = 0, /*SPI sufd test success*/ + SPI_SFUD_TEST_UNKNOWN = 1, /*SPI sufd test success*/ SPI_SFUD_INIT_FAILURE = 2, /*SPI init step failure*/ SPI_SFUD_WRITE_FAILURE = 3, /*SPI write step failure*/ SPI_SFUD_READ_FAILURE = 4, /*SPI read step failure*/ @@ -71,11 +65,10 @@ enum static sfud_err SpiSfudInit(void) { - int task_res = 0; sfud_err sfud_ret = sfud_init(); if (SFUD_SUCCESS != sfud_ret) { - goto init_exit; + return sfud_ret; } const sfud_flash *flash = sfud_get_device(SFUD_FLASH_INDEX); @@ -83,7 +76,7 @@ static sfud_err SpiSfudInit(void) { FSPIM_ERROR("Flash not found."); sfud_ret = SFUD_ERR_NOT_FOUND; - goto init_exit; + return sfud_ret; } /* print flash info */ @@ -103,31 +96,21 @@ static sfud_err SpiSfudInit(void) printf(" Erase granularity: %d Bytes\r\n", flash->chip.erase_gran); -init_exit: - if (SFUD_SUCCESS != sfud_ret) - { - task_res = SPI_SFUD_INIT_FAILURE; - xQueueSend(xQueue, &task_res, 0); - } - return sfud_ret; } static sfud_err SpiSfudWrite(void) { sfud_err sfud_ret = SFUD_SUCCESS; - int task_res = 0; - u32 in_chip_addr = flash_addr; const sfud_flash *flash = NULL; u8 status = 0; - u8 *write_buf = write_flash_buffer; flash = sfud_get_device(SFUD_FLASH_INDEX); if (NULL == flash) { FSPIM_ERROR("Flash not found."); sfud_ret = SFUD_ERR_NOT_FOUND; - goto write_exit; + return sfud_ret; } /* remove flash write protect */ @@ -135,7 +118,7 @@ static sfud_err SpiSfudWrite(void) if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Write flash status failed."); - goto write_exit; + return sfud_ret; } /* get flash status */ @@ -143,7 +126,7 @@ static sfud_err SpiSfudWrite(void) if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Read flash status failed."); - goto write_exit; + return sfud_ret; } else { @@ -151,31 +134,22 @@ static sfud_err SpiSfudWrite(void) } /* write to flash */ - taskENTER_CRITICAL(); /* no schedule when printf bulk */ - printf("Data to write @0x%x...\r\n", in_chip_addr); - FtDumpHexByte(write_buf, SFUD_WR_BUF_LEN); - taskEXIT_CRITICAL(); + printf("Data to write @0x%x...\r\n", flash_addr); + FtDumpHexByte(write_flash_buffer, SFUD_WR_BUF_LEN); /* erase before write */ - sfud_ret = sfud_erase(flash, in_chip_addr, SFUD_WR_BUF_LEN); + sfud_ret = sfud_erase(flash, flash_addr, SFUD_WR_BUF_LEN); if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Erase flash failed."); - goto write_exit; + return sfud_ret; } - sfud_ret = sfud_write(flash, in_chip_addr, SFUD_WR_BUF_LEN, write_buf); + sfud_ret = sfud_write(flash, flash_addr, SFUD_WR_BUF_LEN, write_flash_buffer); if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Write flash failed."); - goto write_exit; - } - -write_exit: - if (SFUD_SUCCESS != sfud_ret) - { - task_res = SPI_SFUD_WRITE_FAILURE; - xQueueSend(xQueue, &task_res, 0); + return sfud_ret; } return sfud_ret; @@ -184,18 +158,15 @@ write_exit: static sfud_err SpiSfudRead(void) { sfud_err sfud_ret = SFUD_SUCCESS; - int task_res = 0; - u32 in_chip_addr = flash_addr; const sfud_flash *flash = NULL; u8 status = 0; - u8 *read_buf = read_flash_buffer; flash = sfud_get_device(SFUD_FLASH_INDEX); if (NULL == flash) { FSPIM_ERROR("Flash not found."); sfud_ret = SFUD_ERR_NOT_FOUND; - goto read_exit; + return sfud_ret; } /* get flash status */ @@ -203,7 +174,7 @@ static sfud_err SpiSfudRead(void) if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Read flash status failed."); - goto read_exit; + return sfud_ret; } else { @@ -211,48 +182,37 @@ static sfud_err SpiSfudRead(void) } /* read from flash */ - memset(read_buf, 0, SFUD_WR_BUF_LEN); - sfud_ret = sfud_read(flash, in_chip_addr, SFUD_WR_BUF_LEN, read_buf); + memset(read_flash_buffer, 0, SFUD_WR_BUF_LEN); + sfud_ret = sfud_read(flash, flash_addr, SFUD_WR_BUF_LEN, read_flash_buffer); if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Read flash failed."); - goto read_exit; + return sfud_ret; } - taskENTER_CRITICAL(); /* no schedule when printf bulk */ - for (u32 i = 0; i < SFUD_WR_BUF_LEN; i++) + if (memcmp(write_flash_buffer, read_flash_buffer, SFUD_WR_BUF_LEN)!=0) { - if (read_buf[i] != write_flash_buffer[i]) - { - FSPIM_ERROR("Read flash failed.read_buf != write_flash_buffer\r\n"); - sfud_ret = SFUD_ERR_READ; - goto read_exit; - } + FSPIM_ERROR("Read flash failed. read_flash_buffer != write_flash_buffer\r\n"); + sfud_ret = SFUD_ERR_READ; + return sfud_ret; } - printf("Data read from flash @0x%x...\r\n", in_chip_addr); - FtDumpHexByte(read_buf, SFUD_WR_BUF_LEN); - taskEXIT_CRITICAL(); + printf("Data read from flash @0x%x...\r\n", flash_addr); + FtDumpHexByte(read_flash_buffer, SFUD_WR_BUF_LEN); -read_exit: - if (SFUD_SUCCESS != sfud_ret) - { - task_res = SPI_SFUD_READ_FAILURE; - xQueueSend(xQueue, &task_res, 0); - } - - return sfud_ret; + return sfud_ret;; } static void SpiSfudWriteThenReadTask(void) { sfud_err sfud_ret = SFUD_SUCCESS; - int task_res = 0; + int task_res = SPI_SFUD_TEST_SUCCESS; sfud_ret = SpiSfudInit(); if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Flash init failed.\r\n"); + task_res = SPI_SFUD_INIT_FAILURE; goto task_exit; } @@ -260,6 +220,7 @@ static void SpiSfudWriteThenReadTask(void) if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Write flash failed.\r\n"); + task_res = SPI_SFUD_WRITE_FAILURE; goto task_exit; } @@ -267,24 +228,20 @@ static void SpiSfudWriteThenReadTask(void) if (SFUD_SUCCESS != sfud_ret) { FSPIM_ERROR("Read flash failed.\r\n"); + task_res = SPI_SFUD_READ_FAILURE; goto task_exit; } task_exit: - if (sfud_ret == SFUD_SUCCESS) - { - task_res = SPI_SFUD_TEST_SUCCESS; - xQueueSend(xQueue, &task_res, 0); - } + xQueueSend(xQueue, &task_res, 0); vTaskDelete(NULL); } -BaseType_t FFreeRTOSSfudWriteThenRead() +BaseType_t FFreeRTOSSfudWriteThenRead(void) { - BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */ - int task_res = 0; - flash_addr = 0x10; + BaseType_t xReturn = pdPASS; + int task_res = SPI_SFUD_TEST_UNKNOWN; const char *content = "write-spi-nor-flash-from-freertos-sfud"; if (strlen(content) + 1 > SFUD_WR_BUF_LEN) { @@ -300,17 +257,19 @@ BaseType_t FFreeRTOSSfudWriteThenRead() FSPIM_ERROR("xQueue create failed.\r\n"); goto exit; } - - taskENTER_CRITICAL(); /*进入临界区*/ xReturn = xTaskCreate((TaskFunction_t)SpiSfudWriteThenReadTask, /* 任务入口函数 */ (const char *)"SpiSfudWriteThenReadTask",/* 任务名字 */ (uint16_t)4096, /* 任务栈大小 */ NULL,/* 任务入口函数参数 */ (UBaseType_t)2, /* 任务的优先级 */ NULL); - taskEXIT_CRITICAL(); /*退出临界区*/ + if (xReturn == pdFAIL) + { + FSPIM_ERROR("xTaskCreate SpiSfudWriteThenReadTask failed."); + goto exit; + } + xReturn = xQueueReceive(xQueue, &task_res, TIMER_OUT); - if (xReturn == pdFAIL) { FSPIM_ERROR("xQueue receive timeout.\r\n"); diff --git a/example/system/amp/openamp/README.md b/example/system/amp/openamp/README.md index ca74bcdce9895d730504d28defa9d25aa7f5243d..58536280e63f5160963d6fea3046ca9e5e7eed5b 100644 --- a/example/system/amp/openamp/README.md +++ b/example/system/amp/openamp/README.md @@ -31,10 +31,10 @@ - 创建流程以及参考文档 remoteproc-design: - [remoteproc-design](../../../../../third-party/openamp/docs/remoteproc-design.md) + [remoteproc-design](../../../../standalone/third-party/openamp/docs/remoteproc-design.md) rpmsg-design: - [rpmsg-design](../../../../../third-party/openamp/docs/rpmsg-design.md) + [rpmsg-design](../../../../standalone/third-party/openamp/docs/rpmsg-design.md) OpenAMP回调与中断通知机制: ![OpenAMP回调与中断通知机制](./figs/OpenAMP回调与中断通知机制.svg) diff --git a/install.py b/install.py index 96a4d84df70333dfc7c6bc68d90ac02a2902c31c..00377a1bdf7249dd9c73d1be8175e450cc7a6a7e 100755 --- a/install.py +++ b/install.py @@ -36,7 +36,7 @@ freertos_sdk_path = install_path print("Standalone SDK at {}".format(freertos_sdk_path)) # Add standalone sdk -standalone_sdk_v="14741a4caf11977447d8f91fd928e23955e837de" +standalone_sdk_v="169fd0f71e9e14b2c164c953ee86a7dcabf6c041" if (install_platform == windows_x64): standalone_path=freertos_sdk_path + '\\standalone' else: diff --git a/third-party/lwip-2.1.2/include.mk b/third-party/lwip-2.1.2/include.mk index 87964b98878670fbfecd240deb23a3204584f672..3b348a43f05d7149169d823063aabc389c543800 100644 --- a/third-party/lwip-2.1.2/include.mk +++ b/third-party/lwip-2.1.2/include.mk @@ -28,16 +28,13 @@ BUILD_INC_PATH_DIR += $(SDK_DIR)/third-party/lwip-2.1.2 \ $(SDK_DIR)/third-party/lwip-2.1.2/include/lwip/prot \ $(SDK_DIR)/third-party/lwip-2.1.2/include/netif \ $(SDK_DIR)/third-party/lwip-2.1.2/apps/if \ - $(SDK_DIR)/third-party/lwip-2.1.2/ports + $(SDK_DIR)/third-party/lwip-2.1.2/ports \ + $(SDK_DIR)/third-party/lwip-2.1.2/apps/ping ifdef CONFIG_USE_LWIP_APP_TFTP # src code of tftp app BUILD_INC_PATH_DIR += $(SDK_DIR)/third-party/lwip-2.1.2/apps/tftp endif #CONFIG_USE_LWIP_APP_TFTP - ifdef CONFIG_USE_LWIP_APP_PING # src code of ping app - BUILD_INC_PATH_DIR += $(SDK_DIR)/third-party/lwip-2.1.2/apps/ping - endif #CONFIG_USE_LWIP_APP_PING - ifdef CONFIG_USE_LWIP_APP_LWIPERF # src code of lwiperf app BUILD_INC_PATH_DIR += $(SDK_DIR)/third-party/lwip-2.1.2/apps/lwiperf endif #CONFIG_USE_LWIP_APP_LWIPERF diff --git a/third-party/lwip-2.1.2/ports/arch/sys_arch.c b/third-party/lwip-2.1.2/ports/arch/sys_arch.c index 2ed06e10f5068b241f48543b13e65fd66a8fbf57..36f0633662f74be72dac13711449fd8154289369 100644 --- a/third-party/lwip-2.1.2/ports/arch/sys_arch.c +++ b/third-party/lwip-2.1.2/ports/arch/sys_arch.c @@ -386,6 +386,28 @@ err_t sys_sem_new(sys_sem_t *sem, u8_t count) return ERR_OK; } +err_t sys_countingsem_create(sys_sem_t *sem,u32 semaphore_maxcount,u32 semaphore_initialcount) +{ + *sem = xSemaphoreCreateCounting(semaphore_maxcount,semaphore_initialcount); + + if (*sem == NULL) + { + #if SYS_STATS + ++lwip_stats.sys.sem.err; + #endif /* SYS_STATS */ + return ERR_MEM; + } + #if SYS_STATS + ++lwip_stats.sys.sem.used; + if (lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) + { + lwip_stats.sys.sem.max = lwip_stats.sys.sem.used; + } + #endif /* SYS_STATS */ + + return ERR_OK; +} + /*-----------------------------------------------------------------------------------*/ /* Blocks the thread while waiting for the semaphore to be diff --git a/third-party/lwip-2.1.2/ports/arch/sys_arch.h b/third-party/lwip-2.1.2/ports/arch/sys_arch.h index 9402e47a1a00cf5ccd46c57a9024323eca391e6f..f7558370a8b14a9cc5e4541b389720604fec28d8 100644 --- a/third-party/lwip-2.1.2/ports/arch/sys_arch.h +++ b/third-party/lwip-2.1.2/ports/arch/sys_arch.h @@ -48,7 +48,7 @@ typedef xSemaphoreHandle sys_sem_t; typedef xSemaphoreHandle sys_mutex_t; typedef xQueueHandle sys_mbox_t; typedef xTaskHandle sys_thread_t; - +typedef s8_t err_t; typedef struct _sys_arch_state_t { // Task creation data. @@ -61,6 +61,7 @@ typedef struct _sys_arch_state_t void sys_thread_delete(sys_thread_t handle); void sys_arch_delay(const unsigned int msec); +err_t sys_countingsem_create(sys_sem_t *sem,u32 semaphore_maxcount,u32 semaphore_initialcount); sys_prot_t sys_arch_protect(void); void sys_arch_unprotect(sys_prot_t pval); diff --git a/third-party/lwip-2.1.2/ports/fgmac/ethernetif.c b/third-party/lwip-2.1.2/ports/fgmac/ethernetif.c index 06054b0d9fee0a00be0389a02a7c1443e84b16e3..3fe27124ec2d5f2cd327a966dc3d5e2a03676a19 100644 --- a/third-party/lwip-2.1.2/ports/fgmac/ethernetif.c +++ b/third-party/lwip-2.1.2/ports/fgmac/ethernetif.c @@ -257,7 +257,7 @@ static err_t low_level_init(struct netif *netif) } /* obtain config of this emac */ - ETHNETIF_DEBUG_I("netif->state is %p \r\n ", netif->state); + ETHNETIF_DEBUG_I("netif->state is %p \r\n", netif->state); config_p = (UserConfig *)netif->state; gmac_phy_config.instance_id = config_p->mac_instance; diff --git a/third-party/lwip-2.1.2/ports/fxmac/ethernetif.c b/third-party/lwip-2.1.2/ports/fxmac/ethernetif.c index eef5ea7232cf80e5e326f3fa5f9949267d279f50..eeda5a7adc7273206a2f661c1cff5efb30aa26f1 100644 --- a/third-party/lwip-2.1.2/ports/fxmac/ethernetif.c +++ b/third-party/lwip-2.1.2/ports/fxmac/ethernetif.c @@ -83,24 +83,6 @@ static void ethernetif_start(struct netif *netif) FXmacOsStart(instance_p); } -static void ethernetif_poll(struct netif *netif) -{ - struct LwipPort *lwip_port = (struct LwipPort *)(netif->state); - - if(lwip_port == NULL) - { - FXMAC_LWIP_NET_PRINT_E("%s,lwip_port is NULL\n", __FUNCTION__); - return; - } - FXmacOs *instance_p = (FXmacOs *)(lwip_port->state); - - if(instance_p == NULL) - { - FXMAC_LWIP_NET_PRINT_E("%s,Fxmac instance_p is NULL\n", __FUNCTION__); - return; - } - FXmacOsRecvHandler(instance_p); -} static void ethernetif_deinit(struct netif *netif) { struct LwipPort *xmac_netif_p = (struct LwipPort *)(netif->state); @@ -138,7 +120,7 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p) pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ #endif - ret = FXmacOsTx(instance_p, p); + ret = FXmacOsTx(instance_p, (void *)p); #if ETH_PAD_SIZE pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ @@ -153,95 +135,37 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p) return ERR_OK; } -/* - * low_level_input(): - * - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - */ -static struct pbuf *low_level_input(struct netif *netif) -{ - FXmacOs *instance_p = NULL; - FASSERT(netif != NULL); - FASSERT(netif->state != NULL); - struct LwipPort *xmac_netif_p = (struct LwipPort *)(netif->state); - FASSERT(xmac_netif_p != NULL); - instance_p = (FXmacOs *)(xmac_netif_p->state); - - return FXmacOsRx(instance_p); -} - /* * ethernetif_input(): * * This function should be called when a packet is ready to be read - * from the interface. It uses the function low_level_input() that + * from the interface. It uses the function FXmacOsRecvHandler() that * should handle the actual reception of bytes from the network * interface. * - * Returns the number of packets read (max 1 packet on success, - * 0 if there are no packets) - * */ static void ethernetif_input(struct netif *netif) { - struct eth_hdr *ethhdr; - struct pbuf *p; - SYS_ARCH_DECL_PROTECT(lev); - - while (1) + struct LwipPort *lwip_port = (struct LwipPort *)(netif->state); + + if(lwip_port == NULL) { - /* move received packet into a new pbuf */ - SYS_ARCH_PROTECT(lev); - p = low_level_input(netif); - SYS_ARCH_UNPROTECT(lev); - - /* no packet could be read, silently ignore this */ - if (p == NULL) - { - return; - } - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - -#if LINK_STATS - lwip_stats.link.recv++; -#endif /* LINK_STATS */ - switch (htons(ethhdr->type)) - { - /* IP or ARP packet? */ - case ETHTYPE_IP: - case ETHTYPE_ARP: -#if LWIP_IPV6 - /*IPv6 Packet?*/ - case ETHTYPE_IPV6: -#endif -#if PPPOE_SUPPORT - /* PPPoE packet? */ - case ETHTYPE_PPPOEDISC: - case ETHTYPE_PPPOE: -#endif /* PPPOE_SUPPORT */ - - /* full packet send to tcpip_thread to process */ - if (netif->input(p, netif) != ERR_OK) - { - LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\r\n")); - pbuf_free(p); - p = NULL; - } - break; - - default: - pbuf_free(p); - p = NULL; - break; - } + FXMAC_LWIP_NET_PRINT_E("%s,lwip_port is NULL\n", __FUNCTION__); + return; } - - return; + FXmacOs *instance_p = (FXmacOs *)(lwip_port->state); + + if(instance_p == NULL) + { + FXMAC_LWIP_NET_PRINT_E("%s,Fxmac instance_p is NULL\n", __FUNCTION__); + return; + } + do + { + FXMAC_WRITEREG32(instance_p->instance.config.base_address, FXMAC_IER_OFFSET,FXMAC_IXR_RXCOMPL_MASK); + FXmacOsRecvHandler(instance_p); + }while (xSemaphoreTake(lwip_port->sem_rx_data_available,0) == pdTRUE ); } static err_t low_level_init(struct netif *netif) @@ -267,11 +191,8 @@ static err_t low_level_init(struct netif *netif) return ERR_MEM; } - - sys_sem_new(&xmac_netif_p->sem_rx_data_available, 0); - /* obtain config of this emac */ - FXMAC_LWIP_NET_PRINT_I("netif->state is %p \r\n ", netif->state); + FXMAC_LWIP_NET_PRINT_I("netif->state is %p \r\n", netif->state); config_p = (UserConfig *)netif->state; xmac_phy_config.instance_id = config_p->mac_instance; @@ -317,6 +238,7 @@ static err_t low_level_init(struct netif *netif) xmac_netif_p->state = (void *)instance_p; netif->state = (void *)xmac_netif_p; /* update state */ instance_p->stack_pointer = xmac_netif_p; + instance_p->netif = (void *) netif; /* maximum transfer unit */ @@ -344,7 +266,6 @@ static err_t low_level_init(struct netif *netif) xmac_netif_p->ops.eth_input = ethernetif_input; xmac_netif_p->ops.eth_deinit = ethernetif_deinit; xmac_netif_p->ops.eth_start = ethernetif_start; - xmac_netif_p->ops.eth_poll= ethernetif_poll; FXMAC_LWIP_NET_PRINT_I("Ready to leave netif \r\n"); return ERR_OK; } diff --git a/third-party/lwip-2.1.2/src.mk b/third-party/lwip-2.1.2/src.mk index 379adf5d5d1cf458dab0645e0245f466b00cc337..33adc3793efb1aa87ee9bb52fd4064ae1708c051 100644 --- a/third-party/lwip-2.1.2/src.mk +++ b/third-party/lwip-2.1.2/src.mk @@ -21,7 +21,8 @@ ABSOLUTE_CFILES += $(wildcard $(LWIP_RT_C_DIR)/api/*.c) \ $(wildcard $(LWIP_RT_C_DIR)/core/*.c) \ $(wildcard $(LWIP_RT_C_DIR)/core/ipv4/*.c) \ $(wildcard $(LWIP_RT_C_DIR)/core/ipv6/*.c) \ - $(wildcard $(LWIP_RT_C_DIR)/apps/if/*.c) + $(wildcard $(LWIP_RT_C_DIR)/apps/if/*.c) \ + $(wildcard $(LWIP_RT_C_DIR)/apps/ping/*.c) ABSOLUTE_CFILES += $(LWIP_RT_C_DIR)/netif/bridgeif.c \ $(LWIP_RT_C_DIR)/netif/bridgeif_fdb.c \ @@ -35,10 +36,6 @@ ifdef CONFIG_USE_LWIP_APP_TFTP # src code of tftp app ABSOLUTE_CFILES += $(wildcard $(LWIP_RT_C_DIR)/apps/tftp/*.c) endif #CONFIG_USE_LWIP_APP_TFTP -ifdef CONFIG_USE_LWIP_APP_PING # src code of ping app - ABSOLUTE_CFILES += $(wildcard $(LWIP_RT_C_DIR)/apps/ping/*.c) -endif #CONFIG_USE_LWIP_APP_PING - ifdef CONFIG_USE_LWIP_APP_LWIPERF # src code of lwiperf app ABSOLUTE_CFILES += $(wildcard $(LWIP_RT_C_DIR)/apps/lwiperf/*.c) endif #CONFIG_USE_LWIP_APP_LWIPERF