[ECOS] Re: RedBoot "set MAC address" API?

Nick Garnett nickg@ecoscentric.com
Mon Nov 6 15:13:00 GMT 2006


Grant Edwards <grante@visi.com> writes:

> > In general the MAC address is stored in the fconfig data. All
> > drivers that need to set the MAC address contain code to query
> > the flash and fetch the MAC address from there, or call a
> > platform-specific function than may do that. They usually also
> > have a fallback to a compiled-in MAC address.
> 
> Except for the drivers I've used, apparently.

So how do these drivers get the MAC address at present?

> Is there any
> documentation available on how fconfig data is formatted/used?

There's no need for your code to deal with the fconfig data format
itself. Just use one of the virtual vector functions to fetch it
during driver initialization. Here's the relevant code from one of the
drivers that does this:


#ifdef CYGPKG_REDBOOT
    esa_ok = flash_get_config(qi->esa_key, _enaddr, CONFIG_ESA);
#else
    esa_ok = CYGACC_CALL_IF_FLASH_CFG_OP(CYGNUM_CALL_IF_FLASH_CFG_GET, 
                                         qi->esa_key, _enaddr, CONFIG_ESA);
#endif
    if (esa_ok) {
        memcpy(qi->enaddr, _enaddr, sizeof(qi->enaddr));
    } else {
        // No 'flash config' data available - use default
        os_printf("FCC_ETH - Warning! Using default ESA for '%s'\n", dtp->name);
    }



-- 
Nick Garnett                                     eCos Kernel Architect
http://www.ecoscentric.com                The eCos and RedBoot experts


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



More information about the Ecos-discuss mailing list