This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Re: Re: How to activate ethernet driver


Hello Dennis,

2015-04-10 11:11 GMT+02:00  <Incubus84@web.de>:
[snip]
We are a bit closer.
> I digged a little deeper in the source code and found the function
> "cyg_io_init" which iterates over the __DEVTAB__ table. I can see how it runs through
> different devices like tty, flash, adc, ... but not the ethernet driver.
> As far as I understand the reference manual, this SHOULD happen here too!
No exactly, it seems that Ethernet driver is a different sort of
devices strictly connected to network stack.
I assume that this is reason why is called from network stack. Please
look at lwIP stack which is much simple to
analyse:
./net/lwip_tcpip/current/src/ecos/simple.c:

cyg_lwip_simple_init(void)
{
[snip]

        // Initialize network devices
        for (t = &__NETDEVTAB__[0]; t != &__NETDEVTAB_END__; t++) {
            if (t->init(t)) {
                t->status = CYG_NETDEVTAB_STATUS_AVAIL;
            } else {
                // Device not [currently] available
                t->status = 0;
            }
        }

similar mechanism is in BSD stack.

>In the configuration tree under "I/O sub-system -> Common ethernet support" I:
>1) activated "Support for stand-alone stack"
Regarding "stand-alone stack" - this mode is used by Redboot and Redboot is
responsible for driver initialization :
./redboot/current/src/net/net_io.c:

net_init(void)
{
[snip]

    if (t->init(t)) {
            t->status = CYG_NETDEVTAB_STATUS_AVAIL;
            if (primary_net == (struct eth_drv_sc *)0) {
                primary_net = __local_enet_sc;
            }

You have to use one of the existing stack FreeBSD/lwIP or build RedBoot as
a target until you provide your own network stack.

Best regards,
jerzy


> Gesendet: Donnerstag, 09. April 2015 um 15:43 Uhr
> Von: "Jerzy Dyrda" <jerzdy@gmail.com>
> An: "Dennis S" <Incubus84@web.de>
> Cc: "eCos Discussion" <ecos-discuss@ecos.sourceware.org>
> Betreff: Re: Re: [ECOS] How to activate ethernet driver
> Hello Dennis,
>
> 2015-04-09 15:08 GMT+02:00 <Incubus84@web.de>:
>
>> In my debugger I can see the "stm32_netdev" structure, which seems to
>> be filled correctly except for the "status". This is set to zero, for what
>> I
>> do not know if it is correct?
> I also don't know but the most important issue is that "stm32_eth_init"
> have to be called. But to achive it you have to have properly configured
> system.
> Please look below.
>
>> Anyway.. putting a breakpoint in the beginning of "stm32_eth_init" does
>> not have any effect. The program does not stop!
>
>> Any other suggestions?
> Sorry for such basic question but do you have such packages like:
> CYGPKG_IO_ETH_DRIVERS, network driver and so on?
>
> BTW.
> Maybe in this way it will be easier. Generally if I like to add
> new eth/phy driver I create eCos configuration file with using template
> usually "lwIP for Ethernet" and proper hardware target. After that
> I didn't have any problem with "calling" eth/phy driver.
>
> Could you provide information about your target?
> Is it any known reference board?
> Do you have HAL (BSP) for it?
>
>
>> Gesendet: Donnerstag, 09. April 2015 um 14:15 Uhr
>> Von: "Jerzy Dyrda" <jerzdy@gmail.com>
>> An: "Dennis S" <Incubus84@web.de>
>> Cc: "eCos Discussion" <ecos-discuss@ecos.sourceware.org>
>> Betreff: Re: [ECOS] How to activate ethernet driver
>> Hello Dennis,
>>
>> You have to add your PHY driver to the list in
>> devs/eth/phy/current/cdl/phy_eth_drivers.cdl like that:
>> 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 after that of course choose it.
>>
>> Regarding ETH driver you have to provide such entry in an code of driver :
>>
>> ETH_DRV_SC(stm32_sc,
>> &stm32_priv_data, // Driver specific data
>> "eth0", // Name for this interface
>> stm32_eth_start,
>> stm32_eth_stop,
>> stm32_eth_control,
>> stm32_eth_can_send,
>> stm32_eth_send,
>> stm32_eth_recv,
>> stm32_eth_deliver,
>> stm32_eth_poll,
>> stm32_eth_int_vector);
>>
>> NETDEVTAB_ENTRY(stm32_netdev,
>> "stm32",
>> stm32_eth_init,
>> &stm32_sc);
>> after that init() funtion (in my case stm32_eth_init,) will be called.
>>
>>
>> Best regards,
>> jerzy
>>
>> 2015-04-07 23:10 GMT+02:00 Dennis S <Incubus84@web.de>:
>>> Good evening,
>>> I have a question concerning the programming of the ethernet in eCos.
>>>
>>> The current state is, that I can use some existent functions for the
>>> MAC of my Embedded System located in /devs/eth. They provide the
>>> possibility to access the hardware via HAL_WRITE(). The init function
>>> is used in the NETDEV_TAB macro.
>>>
>>> Additionally I wrote some drivers for the seperated PHY with the
>>> obligatory "phy_stat" function. When I started debugging I was very
>>> suprised, that either the init function of the mac nor some function
>>> of the PHY driver was used (I set a brakpoint there and nothing
>>> happens).
>>>
>>> So my question is: do I have to activate some other things to get
>>> the ethernet work? What possibilities are there to check the result?
>>> By the way: the plan is to use a third party TCP-stack later.
>>>
>>> Kind regards,
>>> Dennis
>>>
>>> --
>>> Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
>>> and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
>>>

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]