This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Interfacing directly to the low level ethernet driver, how??
- From: Michele Paselli <miguelon at tiscali dot it>
- To: ecos-discuss at ecos dot sourceware dot org
- Date: Wed, 27 Jun 2007 18:20:44 +0200 (CEST)
- Subject: [ECOS] Interfacing directly to the low level ethernet driver, how??
- Reply-to: Michele Paselli <miguelon at tiscali dot it>
- Xoriginalsenderip: 194.171.252.108
Hi ,
I'm about to develop a raw ethernet driver. After spending quite a lot
of time reading the forum and analyzing the code I finally decide to
implement a raw I/O API as suggested by Grant Edwards here:
http://www.cygwin.com/ml/ecos-discuss/2003-06/msg00017.html
The problem is that I'm finding quite a lot of difficulties in
interfacing my I/O driver to the low level device driver of my eth
controller. My idea is to use the netdevtab entry created in the .inl
file and from there be able to access the eth_drv_sc structure and all
the related functions. First problem, I saw that the existing network
implementations (lwip and freebsd) before initializing the device the
macros:
CYG_HAL_TABLE_BEGIN( __NETDEVTAB__, netdev );
CYG_HAL_TABLE_END( __NETDEVTAB_END__, netdev );
are called. Should I also use these macro? What is exactly their job?
I guess they don't create an entry since for that the NETDEVTAB macro
is used.
Second problem, in order to use the low level eth driver (packet
CYGPKG_DEVS_ETH_HRDWR) I have to include also CYGPKG_IO_ETH_DRIVERS.
When I compile everything with configtool I don't get any error but
when I compile my test application this is what I get:
Building base.out
arm-elf-gcc -g -Ifmtc_install/include base.c -Lfmtc_install/lib -
Ttarget.ld -nostdlib -o base.out
fmtc_install/lib/libtarget.a(io_eth_eth_drv.o): In function
`eth_drv_write':
/imecnl/software/common/ecos/opt/ecos/ecos-2.0.43
/packages/io/eth/v2_0_43/src/stand_alone/eth_drv.c:303: undefined
reference to `start_console'
/imecnl/software/common/ecos/opt/ecos/ecos-2.0.43
/packages/io/eth/v2_0_43/src/stand_alone/eth_drv.c:307: undefined
reference to `end_console'
fmtc_install/lib/libtarget.a(io_eth_eth_drv.o): In function
`eth_drv_recv':
/imecnl/software/common/ecos/opt/ecos/ecos-2.0.43
/packages/io/eth/v2_0_43/src/stand_alone/eth_drv.c:493: undefined
reference to `start_console'
/imecnl/software/common/ecos/opt/ecos/ecos-2.0.43
/packages/io/eth/v2_0_43/src/stand_alone/eth_drv.c:501: undefined
reference to `end_console'
collect2: ld returned 1 exit status
make: *** [out] Error 1
I checked the various cdl files and I found out that the standalone
eth i/o is automatically selected if I don't include any networking
stack (but I don't want to, I want to get rid of TCP and all the upper
layers).
What am I doing wrong? Am I approaching the problem in a wrong way?
Thanks a lot
Michele
_______________________________________________________
Naviga e telefona senza limiti con Tiscali
Scopri le promozioni Tiscali Adsl: navighi e telefoni senza canone Telecom
http://abbonati.tiscali.it/adsl/
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss