Hello Valentin,
On Tuesday 25 of March 2014 10:04:07 John Dallaway wrote: > On 25/03/14 08:26, Valentin BOUSSON wrote: > > > Today, I have a problem to set up *LwIP* on my *STM32F4DISCOVERY* with > > the standard extension board. > > (http://www.st.com/web/catalog/tools/FM146/CL1984/SC720/SS1462/PF255417) > > > > I tried a lot of thing, as using the default configuration for eCos, > > adding packages "Ethernet common drivers" and "LwIP stack". No confilct > > appears, but an the stack doesn't seem to work at all. > > At minimum, you will need to add the CYGPKG_DEVS_ETH_PHY and > CYGPKG_DEVS_ETH_CORTEXM_STM32 hardware packages to the > "stm32f4discovery" target description record in packages/ecos.db. > Actually, it would be preferable to create a new target description > record for STM32F4-Discovery with STM32F4DIS-EXT. > > You might also be necessary to modify the the hal_system_init() function > in the STM32F4-Discovery platform HAL to setup the ethernet hardware. > Compare with the hal_system_init() function from the STM32x0G platform HAL. > > With these changes in place, you should be able to create a new eCos > configuration for lwIP based on the eCos "lwip_eth" packages template. And you have to add some pins configuration due to fact that STM32F4DISCOVERY board doesn't any network interface. In packages/hal/cortexm/stm32/stm32f4discovery/current/include/plf_io.h please add such lines: //============================================================================= // Custom Ethernet pin mappings #define CYGHWR_HAL_STM32_ETH_MII_TX_EN CYGHWR_HAL_STM32_PIN_ALTFN_OUT( B, 11, 11, PUSHPULL, NONE, AT_LEAST(50) ) #define CYGHWR_HAL_STM32_ETH_MII_TXD0 CYGHWR_HAL_STM32_PIN_ALTFN_OUT( B, 12, 11, PUSHPULL, NONE, AT_LEAST(50) ) #define CYGHWR_HAL_STM32_ETH_MII_TXD1 CYGHWR_HAL_STM32_PIN_ALTFN_OUT( B, 13, 11, PUSHPULL, NONE, AT_LEAST(50) ) In packages/devs/eth/phy/current/cdl/phy_eth_drivers.cdl add missing PHY chip: cdl_option CYGHWR_DEVS_ETH_PHY_LAN8720A { display "SMSC LAN8720A" flavor bool default_value 0 compile -library=libextras.a LAN8720A.c description " Include support for SMSC LAN8720A" } and finally add new PHY i.e LAN8720A.c into directory -> packages/devs/eth/phy/current/src if you will have additional problems please ask I have already brought up network interface on STM32F4DISCOVERY + DM-STF4BB (AFAIK this is original name of base board from Embest, now as I see it's called STM32F4DIS-BB). Best regards, jerzy 2014-03-25 13:30 GMT+01:00 Jerzy Dyrda <[email protected]>: > Hello Valentin, > > > On Tuesday 25 of March 2014 10:04:07 John Dallaway wrote: > >> On 25/03/14 08:26, Valentin BOUSSON wrote: > >> > >> > Today, I have a problem to set up *LwIP* on my *STM32F4DISCOVERY* with > >> > the standard extension board. > >> > (http://www.st.com/web/catalog/tools/FM146/CL1984/SC720/SS1462/PF255417) > >> > > >> > I tried a lot of thing, as using the default configuration for eCos, > >> > adding packages "Ethernet common drivers" and "LwIP stack". No confilct > >> > appears, but an the stack doesn't seem to work at all. > >> > >> At minimum, you will need to add the CYGPKG_DEVS_ETH_PHY and > >> CYGPKG_DEVS_ETH_CORTEXM_STM32 hardware packages to the > >> "stm32f4discovery" target description record in packages/ecos.db. > >> Actually, it would be preferable to create a new target description > >> record for STM32F4-Discovery with STM32F4DIS-EXT. > >> > >> You might also be necessary to modify the the hal_system_init() function > >> in the STM32F4-Discovery platform HAL to setup the ethernet hardware. > >> Compare with the hal_system_init() function from the STM32x0G platform >> HAL. > >> > >> With these changes in place, you should be able to create a new eCos > >> configuration for lwIP based on the eCos "lwip_eth" packages template. > > > And you have to add some pins configuration due to fact that > STM32F4DISCOVERY board > > doesn't any network interface. > > > In packages/hal/cortexm/stm32/stm32f4discovery/current/include/plf_io.h > please add such lines: > > > //============================================================================= > > // Custom Ethernet pin mappings > > > #define CYGHWR_HAL_STM32_ETH_MII_TX_EN CYGHWR_HAL_STM32_PIN_ALTFN_OUT( B, > 11, 11, PUSHPULL, NONE, AT_LEAST(50) ) > > #define CYGHWR_HAL_STM32_ETH_MII_TXD0 CYGHWR_HAL_STM32_PIN_ALTFN_OUT( B, 12, > 11, PUSHPULL, NONE, AT_LEAST(50) ) > > #define CYGHWR_HAL_STM32_ETH_MII_TXD1 CYGHWR_HAL_STM32_PIN_ALTFN_OUT( B, 13, > 11, PUSHPULL, NONE, AT_LEAST(50) ) > > > In packages/devs/eth/phy/current/cdl/phy_eth_drivers.cdl add missing PHY > chip: > > > cdl_option CYGHWR_DEVS_ETH_PHY_LAN8720A { > > display "SMSC LAN8720A" > > flavor bool > > default_value 0 > > compile -library=libextras.a LAN8720A.c > > description " > > Include support for SMSC LAN8720A" > > } > > > and finally add new PHY i.e LAN8720A.c into directory -> > packages/devs/eth/phy/current/src > > > if you will have additional problems please ask I have already brought up > network interface on > > STM32F4DISCOVERY + DM-STF4BB (AFAIK this is original name of base board from > Embest, now > > as I see it's called STM32F4DIS-BB). > > > > Best regards, > > jerzy > > > > 2014-03-25 11:04 GMT+01:00 John Dallaway <[email protected]>: > >> Hi Valentin >> >> On 25/03/14 08:26, Valentin BOUSSON wrote: >> >> > Today, I have a problem to set up *LwIP* on my *STM32F4DISCOVERY* with >> > the standard extension board. >> > (http://www.st.com/web/catalog/tools/FM146/CL1984/SC720/SS1462/PF255417) >> > >> > I tried a lot of thing, as using the default configuration for eCos, >> > adding packages "Ethernet common drivers" and "LwIP stack". No confilct >> > appears, but an the stack doesn't seem to work at all. >> >> At minimum, you will need to add the CYGPKG_DEVS_ETH_PHY and >> CYGPKG_DEVS_ETH_CORTEXM_STM32 hardware packages to the >> "stm32f4discovery" target description record in packages/ecos.db. >> Actually, it would be preferable to create a new target description >> record for STM32F4-Discovery with STM32F4DIS-EXT. >> >> You might also be necessary to modify the the hal_system_init() function >> in the STM32F4-Discovery platform HAL to setup the ethernet hardware. >> Compare with the hal_system_init() function from the STM32x0G platform >> HAL. >> >> With these changes in place, you should be able to create a new eCos >> configuration for lwIP based on the eCos "lwip_eth" packages template. >> >> I hope this helps... >> >> John Dallaway >> eCos maintainer >> http://www.dallaway.org.uk/john >> >> -- >> Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos >> and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss >> >
//========================================================================== // // dev/LAN8270A.c // // Ethernet transciever (PHY) support // //========================================================================== //####ECOSGPLCOPYRIGHTBEGIN#### // ------------------------------------------- // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 2003 Gary Thomas // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 or (at your option) any later version. // // eCos 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 GNU General Public License // for more details. // // You should have received a copy of the GNU General Public License along // with eCos; if not, write to the Free Software Foundation, Inc., // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. // // As a special exception, if other files instantiate templates or use macros // or inline functions from this file, or you compile this file and link it // with other works to produce a work based on this file, this file does not // by itself cause the resulting work to be covered by the GNU General Public // License. However the source code for this file must still be made available // in accordance with section (3) of the GNU General Public License. // // This exception does not invalidate any other reasons why a work based on // this file might be covered by the GNU General Public License. // // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. // at http://sources.redhat.com/ecos/ecos-license/ // ------------------------------------------- //####ECOSGPLCOPYRIGHTEND#### //========================================================================== //#####DESCRIPTIONBEGIN#### // // Author(s): jerzdy // Contributors: // Date: 2013-11-18 // Purpose: // Description: Support for ethernet SMSC LAN8720A // // //####DESCRIPTIONEND#### // //========================================================================== #include <pkgconf/system.h> #include <cyg/infra/cyg_type.h> #include <cyg/infra/diag.h> #include <cyg/hal/hal_arch.h> #include <cyg/hal/drv_api.h> #include <cyg/hal/hal_if.h> #include <cyg/hal/hal_tables.h> #include <cyg/io/eth_phy.h> #include <cyg/io/eth_phy_dev.h> static bool lan8720a_stat(eth_phy_access_t *f, int *state) { unsigned short phy_state=0; int tries=0; // Read negotiated state if (_eth_phy_read(f, 0x1, f->phy_addr, &phy_state)) { if ((phy_state & PHY_BMSR_AUTO_NEG) == 0) { eth_phy_printf("... waiting for auto-negotiation (30 x 0,2sec):"); for (tries = 0; tries < 30; tries++) { if (_eth_phy_read(f, 0x1, f->phy_addr, &phy_state)) { if ((phy_state & PHY_BMSR_AUTO_NEG) != 0) { break; } } CYGACC_CALL_IF_DELAY_US(200000); // 0.2 second diag_printf("."); } eth_phy_printf("\n"); } if ((phy_state & PHY_BMSR_AUTO_NEG) != 0) { *state = 0; if (_eth_phy_read(f, 0x1, f->phy_addr, &phy_state)) { if ((phy_state & PHY_BMSR_LINK) != 0) *state |= ETH_PHY_STAT_LINK; } if (_eth_phy_read(f, 0x5, f->phy_addr, &phy_state)) { // Partner negotiated parameters if ((phy_state & 0x0100) != 0) *state |= ETH_PHY_STAT_100MB | ETH_PHY_STAT_FDX; if ((phy_state & 0x0080) != 0) *state |= ETH_PHY_STAT_100MB; #ifdef ETH_PHY_STAT_10MB if ((phy_state & 0x0040) != 0) *state |= ETH_PHY_STAT_10MB | ETH_PHY_STAT_FDX; if ((phy_state & 0x0020) != 0) *state |= ETH_PHY_STAT_10MB; #endif // _eth_phy_read(f, 17, f->phy_addr, &phy_state); // CYGACC_CALL_IF_DELAY_US(1000000); // 0.1 second return true; } } } return false; } _eth_phy_dev("SMCS LAN8720A", 0x0007C0F1, lan8720a_stat)
-- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
