public inbox for
 help / color / mirror / Atom feed
From: Jerzy Dyrda <>
To: Dennis S <>
Cc: eCos Discussion <>
Subject: Re: Re: Re: [ECOS] How to activate ethernet driver
Date: Fri, 10 Apr 2015 11:26:00 -0000	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <trinity-88db4679-45f1-4bed-85a9-70b78399a50a-1428657096995@3capp-webde-bs01>

Hello Dennis,

2015-04-10 11:11 GMT+02:00  <>:
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


        // 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 :


    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,

> Gesendet: Donnerstag, 09. April 2015 um 15:43 Uhr
> Von: "Jerzy Dyrda" <>
> An: "Dennis S" <>
> Cc: "eCos Discussion" <>
> Betreff: Re: Re: [ECOS] How to activate ethernet driver
> Hello Dennis,
> 2015-04-09 15:08 GMT+02:00 <>:
>> 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" <>
>> An: "Dennis S" <>
>> Cc: "eCos Discussion" <>
>> 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 <>:
>>> 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:
>>> and search the list archive:

Before posting, please read the FAQ:
and search the list archive:

  parent reply	other threads:[~2015-04-10 11:26 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-07 21:10 Dennis S
2015-04-09 12:15 ` Jerzy Dyrda
     [not found]   ` <trinity-4777fcb7-729d-4f01-bb84-58b445200f13-1428584884951@3capp-webde-bs37>
2015-04-09 13:43     ` Jerzy Dyrda
     [not found]       ` <trinity-88db4679-45f1-4bed-85a9-70b78399a50a-1428657096995@3capp-webde-bs01>
2015-04-10 11:26         ` Jerzy Dyrda [this message]
2015-04-10 14:30           ` [ECOS] " Grant Edwards

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='' \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).