int main(int argc, char* argv[]) { int ret; RCC_Configuration(); LED_Init(LED1); LED_Init(LED2); LED_On(LED1); LED_Off(LED2); BOOT_Pin_Init(); USART1_Configuration(); #if defined(MULTIFLASH_ENABLE) probe_flash(); #endif /* Load Configure Infomation */ load_S2E_Packet_from_storage(); /* Check MAC Address */ check_mac_address(); W5500_SPI_Init(); W5500_Init(); Timer_Configuration(); Net_Conf(); TFTP_init(SOCK_TFTP, socket_buf); ret = application_update(); if((get_bootpin_Status() == 0) && (ret != TFTP_FAIL)) { uint32_t tmp; #if !defined(MULTIFLASH_ENABLE) tmp = *(volatile uint32_t *)APP_BASE; #else tmp = *(volatile uint32_t *)flash.flash_app_base; #endif if((tmp & 0xffffffff) != 0xffffffff) { application_jump(); } } while (1) { do_udp_config(SOCK_CONFIG); } }
/******************************************************* * @ brief Call back for ip assing & ip update from DHCP *******************************************************/ void my_ip_assign(void) { getIPfromDHCP(gWIZNETINFO.ip); getGWfromDHCP(gWIZNETINFO.gw); getSNfromDHCP(gWIZNETINFO.sn); getDNSfromDHCP(gWIZNETINFO.dns); gWIZNETINFO.dhcp = NETINFO_DHCP; /* Network initialization */ Net_Conf(); // apply from DHCP #ifdef _MAIN_DEBUG_ Display_Net_Conf(); printf("DHCP LEASED TIME : %ld Sec.\r\n", getDHCPLeasetime()); printf("\r\n"); #endif }
/** * @brief Main routine for W5500 EVB firmware * @return Function should not exit. */ int main(void) { #if defined (__USE_LPCOPEN) #if !defined(NO_BOARD_LIB) // Read clock settings and update SystemCoreClock variable SystemCoreClockUpdate(); // Set up and initialize all required blocks and // functions related to the board hardware Board_Init(); #endif #endif bool run_user_applications = false; int32_t ret; /* Network Initialization */ SPI_Init(); W5500_Init(); Net_Conf(); /* Enable and setup SysTick Timer at a periodic rate */ SysTick_Config(SystemCoreClock / TICKRATE_HZ1); /* Enable and setup 32-bit Timer 0 */ Timer32_0_Init(TICKRATE_HZ2); /* PHY Status check enable */ PHYStatus_check_enable = true; #ifdef _MAIN_DEBUG_ uint8_t tmpstr[6] = {0,}; ctlwizchip(CW_GET_ID,(void*)tmpstr); printf("\r\n=======================================\r\n"); printf(" WIZnet %s EVB - DHCP client v%d.%.2d\r\n", tmpstr, VER_H, VER_L); printf("=======================================\r\n"); //Display_Net_Conf(); // handled by dhcp_run function #endif /* DHCP client Initialization */ if(gWIZNETINFO.dhcp == NETINFO_DHCP) { DHCP_init(SOCK_DHCP, gDATABUF); // if you want different action instead default ip assign, update, conflict. // if cbfunc == 0, act as default. reg_dhcp_cbfunc(my_ip_assign, my_ip_assign, my_ip_conflict); run_user_applications = false; // flag for running user's code } else { // Static #ifdef _MAIN_DEBUG_ Display_Net_Conf(); #endif run_user_applications = true; // flag for running user's code } /* Main loop ***************************************/ while(1) { /* PHY Status checker: Check every 'SEC_PHYSTATUS_CHECK' seconds */ if(PHYStatus_check_flag) { PHYStatus_check_flag = false; PHYStatus_Check(); } /* DHCP */ /* DHCP IP allocation and check the DHCP lease time (for IP renewal) */ if(gWIZNETINFO.dhcp == NETINFO_DHCP) { switch(DHCP_run()) { case DHCP_IP_ASSIGN: case DHCP_IP_CHANGED: /* If this block empty, act with default_ip_assign & default_ip_update */ // // This example calls my_ip_assign in the two case. // // Add to ... // break; case DHCP_IP_LEASED: // // TODO: insert user's code here run_user_applications = true; // break; case DHCP_FAILED: /* ===== Example pseudo code ===== */ // The below code can be replaced your code or omitted. // if omitted, retry to process DHCP my_dhcp_retry++; if(my_dhcp_retry > MY_MAX_DHCP_RETRY) { gWIZNETINFO.dhcp = NETINFO_STATIC; DHCP_stop(); // if restart, recall DHCP_init() #ifdef _MAIN_DEBUG_ printf(">> DHCP %d Failed\r\n", my_dhcp_retry); Net_Conf(); Display_Net_Conf(); // print out static netinfo to serial #endif my_dhcp_retry = 0; } break; default: break; } } // TODO: insert user's code here if(run_user_applications) { // Loopback test : TCP Server if ((ret = loopback_tcps(SOCK_TCPS, gDATABUF, PORT_TCPS)) < 0) // TCP server loopback test { #ifdef _MAIN_DEBUG_ printf("SOCKET ERROR : %ld\r\n", ret); #endif } ; } // End of user's code } // End of Main loop return 0; }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0x33}; //uint8_t src_addr[4] = {192, 168, 0, 80}; //uint8_t gw_addr[4] = {192, 168, 0, 1}; //uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server //uint8_t tmp[8]; //int ret; int i; #if defined (_MAIN_DEBUG_) && defined (_USE_SDCARD_) int ret; #endif #if defined(F_APP_FTP) wiz_NetInfo gWIZNETINFO; #endif #if defined(F_APP_DHCP) || defined(F_APP_DNS) S2E_Packet *value = get_S2E_Packet_pointer(); #endif #if defined(F_APP_DNS) uint8_t dns_server_ip[4]; #endif /* External Clock */ CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set System init */ SystemInit(); /* UART Init */ UART_StructInit(&UART_InitStructure); UART_Init(UART_DEBUG,&UART_InitStructure); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); LED_Init(LED1); LED_Init(LED2); LED_Init(LED3); LED_Off(LED1); LED_Off(LED2); LED_Off(LED3); g_sdcard_done = 0; BOOT_Pin_Init(); Board_factory_Init(); EXTI_Configuration(); /* Load Configure Information */ load_S2E_Packet_from_storage(); UART_Configuration(); /* Check MAC Address */ check_mac_address(); Timer0_Configuration(); // ADC initialize ADC_Init(); #ifdef _MAIN_DEBUG_ uint8_t tmpstr[6] = {0,}; ctlwizchip(CW_GET_ID,(void*)tmpstr); printf("\r\n============================================\r\n"); printf(" WIZnet %s EVB Demo v%d.%.2d\r\n", tmpstr, VER_H, VER_L); printf("============================================\r\n"); printf(" WIZwiki Platform based WEBBoot Example\r\n"); printf("============================================\r\n"); #endif #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif Mac_Conf(); #if defined(F_APP_DHCP) if(value->options.dhcp_use) // DHCP { uint32_t ret; uint8_t dhcp_retry = 0; #ifdef _MAIN_DEBUG_ printf(" - DHCP Client running\r\n"); #endif DHCP_init(SOCK_DHCP, TX_BUF); reg_dhcp_cbfunc(w5500_dhcp_assign, w5500_dhcp_assign, w5500_dhcp_conflict); while(1) { ret = DHCP_run(); if(ret == DHCP_IP_LEASED) { #ifdef _MAIN_DEBUG_ printf(" - DHCP Success: DHCP Leased time : %ld Sec.\r\n\r\n", getDHCPLeasetime()); #endif break; } else if(ret == DHCP_FAILED) { dhcp_retry++; #ifdef _MAIN_DEBUG_ if(dhcp_retry <= 3) printf(" - DHCP Timeout occurred and retry [%d]\r\n", dhcp_retry); #endif } if(dhcp_retry > 3) { #ifdef _MAIN_DEBUG_ printf(" - DHCP Failed\r\n\r\n"); #endif value->options.dhcp_use = 0; Net_Conf(); break; } do_udp_config(SOCK_CONFIG); } } else // Static { Net_Conf(); } #else Net_Conf(); #endif #ifdef _MAIN_DEBUG_ display_Net_Info(); #endif #if defined(F_APP_ATC) atc_init(&rxring, &txring); op_mode = OP_DATA; #endif TFTP_init(SOCK_TFTP, socket_buf); ret = application_update(); printf("[DEBUG] check trigger:%d ret:%d \r\n", get_bootpin_Status(), ret); if((get_bootpin_Status() == 1) && (ret != TFTP_FAIL)) { uint32_t tmp; #if !defined(MULTIFLASH_ENABLE) tmp = *(volatile uint32_t *)APP_BASE; #else tmp = *(volatile uint32_t *)flash.flash_app_base; #endif if((tmp & 0xffffffff) != 0xffffffff) { printf("[DEBUG] application_jump\r\n"); application_jump(); } } #ifdef _USE_SDCARD_ // SD card Initialization ret = mmc_mount(); if(ret <= 0) { #ifdef _MAIN_DEBUG_ printf("\r\n - Can't mount SD card: Please Reboot WIZ750WEB Board or Insert SD card\r\n"); #endif //while(!(ret = mmc_mount())); } if(ret > 0) { #ifdef _MAIN_DEBUG_ display_SDcard_Info(ret); #endif } #endif httpServer_init(TX_BUF, RX_BUF, MAX_HTTPSOCK, socknumlist); #ifdef _USE_WATCHDOG_ reg_httpServer_cbfunc(NVIC_SystemReset, IWDG_ReloadCounter); // Callback: STM32 MCU Reset / WDT Reset (IWDG) #else reg_httpServer_cbfunc(NVIC_SystemReset, NULL); // Callback: STM32 MCU Reset #endif IO_status_init(); #if defined(F_APP_FTP) ctlnetwork(CN_GET_NETINFO, (void*) &gWIZNETINFO); ftpd_init(gWIZNETINFO.ip); // Added by James for FTP #endif #ifdef _USE_WATCHDOG_ // IWDG Initialization: STM32 Independent WatchDog IWDG_Configureation(); #endif while (1) { #ifdef _USE_WATCHDOG_ IWDG_ReloadCounter(); // Feed IWDG #endif #if defined(F_APP_ATC) atc_run(); #endif if(g_op_mode == NORMAL_MODE) { do_udp_config(SOCK_CONFIG); } else { if(TFTP_run() != TFTP_PROGRESS) g_op_mode = NORMAL_MODE; } #if defined(F_APP_DHCP) if(value->options.dhcp_use) DHCP_run(); #endif for(i = 0; i < MAX_HTTPSOCK; i++) httpServer_run(i); // HTTP server handler #if defined(F_APP_FTP) ftpd_run(FTP_DBUF); #endif #ifdef _USE_WATCHDOG_ IWDG_ReloadCounter(); // Feed IWDG #endif } return 0; }
int main(void) { uint8_t ret = 0; //int32_t loopback_ret; #if defined (__USE_LPCOPEN) #if !defined(NO_BOARD_LIB) // Read clock settings and update SystemCoreClock variable SystemCoreClockUpdate(); // Set up and initialize all required blocks and // functions related to the board hardware Board_Init(); // Set the LED to the state of "On" Board_LED_Set(0, true); //Board_LED_Set(1, true); //Board_LED_Set(2, true); #endif #endif SPI_Init(); W5500_Init(); Net_Conf(gWIZNETINFO); #ifdef _MAIN_DEBUG_ uint8_t tmpstr[6] = {0,}; ctlwizchip(CW_GET_ID,(void*)tmpstr); /* printf("\r\n=======================================\r\n"); printf(" WIZnet %s EVB Demos v%d.%.2d\r\n", tmpstr, VER_H, VER_L); printf("=======================================\r\n"); printf(">> W5500 based FTP Client Example\r\n"); printf("=======================================\r\n"); */ Display_Net_Conf(); // Print out the network information to serial terminal #endif /* Enable and setup SysTick Timer at a periodic rate */ SysTick_Config(SystemCoreClock / TICKRATE_HZ1); /* Initialize buttons on the W5500 EVB board */ Board_Buttons_Init(); g_sdcard_done = 0; #if defined(F_APP_FTPC) ftpc_init(gWIZNETINFO.ip); #endif ret = flash_mount(); if(ret > 0) { display_SDcard_Info(ret); } while(1) { /* Button: SW1 */ if(Check_Buttons_Pressed() == BUTTONS_BUTTON1) { printf("\r\n########## SW1 was pressed.\r\n"); printf("########## Data flash flag was cleared.\r\n"); printf("########## Please reset a target.\r\n"); release_factory_flag(); } #if defined(F_APP_FTPC) ftpc_run(gFTPBUF); #endif /* Loopback Test: TCP Server and UDP */ // Test for Ethernet data transfer validation { //loopback_tcps(SOCK_TCPS, gDATABUF, PORT_TCPS); //loopback_udps(SOCK_UDPS, gDATABUF, PORT_UDPS); //loopback_ret = loopback_tcpc(SOCK_TCPS, gDATABUF, destip, destport); //if(loopback_ret < 0) printf("loopback ret: %ld\r\n", loopback_ret); // TCP Socket Error code } } return 0 ; }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0x33}; //uint8_t src_addr[4] = {192, 168, 0, 80}; //uint8_t gw_addr[4] = {192, 168, 0, 1}; //uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server //uint8_t tmp[8]; //int ret; /* External Clock */ CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set System init */ SystemInit(); /* UART Init */ UART_StructInit(&UART_InitStructure); UART_Init(UART_DEBUG,&UART_InitStructure); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); LED_Init(LED1); LED_Init(LED2); LED_On(LED1); LED_Off(LED2); BOOT_Pin_Init(); /* Load Configure Information */ load_S2E_Packet_from_storage(); UART_Configuration(); /* Check MAC Address */ check_mac_address(); Timer0_Configuration(); #ifdef _MAIN_DEBUG_ uint8_t tmpstr[6] = {0,}; ctlwizchip(CW_GET_ID,(void*)tmpstr); printf("\r\n============================================\r\n"); printf(" WIZnet %s EVB Demo v%d.%.2d\r\n", tmpstr, VER_H, VER_L); printf("============================================\r\n"); printf(" WIZwiki Platform based TFTP App Example\r\n"); printf("============================================\r\n"); #endif #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif #if 0 /* Network Configuration */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); #else Net_Conf(); #endif //TFTP_init(SOCK_TFTP, socket_buf); while (1) { if(g_op_mode == NORMAL_MODE) { do_udp_config(SOCK_CONFIG); } else { if(TFTP_run() != TFTP_PROGRESS) g_op_mode = NORMAL_MODE; } } return 0; }