EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Announcement: Legacy libnetworking will be removed from RTEMS and will be placed in a separate repository
From: junkes via Core-talk <core-talk at aps.anl.gov>
To: Vijay Kumar Banerjee <vijay at rtems.org>
Cc: Core talk <core-talk at aps.anl.gov>, "rtems-devel at rtems.org" <devel at rtems.org>
Date: Wed, 03 Mar 2021 10:39:00 +0100

Dear Vijay,
thank you very much for your effort to bring some order here ;-)

I am currently trying to get EPICS to work on RTEMS6 as well.

I already failed with the legacy stack because configuration variables like
RTEMS_HAS_NETWORK are not set with the waf-builder. 

That's why I quite happily jumped on your legacy-net-extra 
(For the beatnik CPU on which I can test directly on the hardware).

Unfortunately, it doesn't quite work yet:

git clone https://github.com/RTEMS/rtems-source-builder.git rsb

cd rsb
cd rtems
../source-builder/sb-set-builder --prefix=/home/junkes/MVME6100_testing/rtems/6 6/rtems-powerpc
cd ../..

#RTEMS development
export RTEMS_VERSION=6
export RTEMS_ARCH=powerpc-rtems${RTEMS_VERSION}
export RTEMS_ROOT=/home/junkes/MVME6100_testing/rtems/${RTEMS_VERSION}
export PATH=${RTEMS_ROOT}/bin:${PATH}

# building kernel
#git clone git://git.rtems.org/rtems.git kernel
git clone git://git.rtems.org/vijay/rtems.git kernel
cd kernel

# build and install bsp
# 1. Test with waf
#-e "s|RTEMS_NETWORKING = False|RTEMS_NETWORKING = True|" \
./waf bsp_defaults --rtems-bsps=powerpc/beatnik > config.ini
sed -i \
-e "s|RTEMS_POSIX_API = False|RTEMS_POSIX_API = True|" \
-e "s|BUILD_TESTS = False|BUILD_TESTS = True|" \
config.ini
./waf configure --prefix=/home/junkes/MVME6100_testing/rtems/6
./waf
./waf install

cd ..

# building extra legacy net
git clone git://git.rtems.org/vijay/rtems-net-legacy.git legacyNet
cd legacyNet
git submodule init
git submodule update

./waf configure --prefix=/home/junkes/MVME6100_testing/rtems/6

Setting top to : /home/junkes/MVME6100_testing/legacyNet
Setting out to : /home/junkes/MVME6100_testing/legacyNet/build
RTEMS Version : 6
Architectures : powerpc-rtems6
Board Support Package (BSP) : powerpc-rtems6-beatnik
Show commands : no
Long commands : no
Checking for program 'powerpc-rtems6-gcc' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
Checking for program 'powerpc-rtems6-g++' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-g++
Checking for program 'powerpc-rtems6-gcc' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
Checking for program 'powerpc-rtems6-ld' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ld
Checking for program 'powerpc-rtems6-ar' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
Checking for program 'powerpc-rtems6-nm' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-nm
Checking for program 'powerpc-rtems6-objdump' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-objdump
Checking for program 'powerpc-rtems6-objcopy' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-objcopy
Checking for program 'powerpc-rtems6-readelf' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-readelf
Checking for program 'powerpc-rtems6-strip' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-strip
Checking for program 'powerpc-rtems6-ranlib' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ranlib
Checking for program 'rtems-ld' : /home/junkes/MVME6100_testing/rtems/6/bin/rtems-ld
Checking for program 'rtems-tld' : /home/junkes/MVME6100_testing/rtems/6/bin/rtems-tld
Checking for program 'rtems-syms' : /home/junkes/MVME6100_testing/rtems/6/bin/rtems-syms
Checking for program 'rtems-bin2c' : /home/junkes/MVME6100_testing/rtems/6/bin/rtems-bin2c
Checking for program 'tar' : /usr/bin/tar
Checking for program 'gcc, cc' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
Checking for program 'ar' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
Checking for program 'g++, c++' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-g++
Checking for program 'ar' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
Checking for program 'gas, gcc' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
Checking for program 'ar' : /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
Checking for c flags '-MMD' : yes
Checking for cxx flags '-MMD' : yes
Compiler version (powerpc-rtems6-gcc) : 10.2.1 20210205 (RTEMS 6, RSB 61dcadee0825867ebe51f9f367430ef75b8fe9c0, Newlib d4a756f)
Checking for a valid RTEMS BSP installation : yes
Checking for RTEMS_DEBUG : no
Checking for RTEMS_MULTIPROCESSING : no
Checking for RTEMS_NEWLIB : yes
Checking for RTEMS_POSIX_API : yes
Checking for RTEMS_SMP : no
Checking for RTEMS_NETWORKING : no
'configure' finished successfully (0.840s)

./waf build --rtems-archs=powerpc --rtems-bsps=beatnik

Waf: Entering directory `/home/junkes/MVME6100_testing/legacyNet/build/powerpc-rtems6-beatnik'
[ 1/229] Compiling bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c
[ 2/229] Compiling bsps/powerpc/beatnik/net/porting/if_xxx.modini.c
[ 3/229] Compiling librpc/src/rpc/pmap_getport.c
[ 4/229] Compiling netinet/ip_icmp.c
[ 5/229] Compiling libc/getservbyname.c
[ 6/229] Compiling libc/base64.c
[ 7/229] Compiling libc/ns_ttl.c
[ 8/229] Compiling libc/inet_makeaddr.c
[ 9/229] Compiling librpc/src/rpc/auth_none.c
[ 10/229] Compiling librpc/src/rpc/get_myaddress.c
[ 11/229] Compiling netinet/tcp_debug.c
[ 12/229] Compiling librpc/src/rpc/netnamer.c
[ 13/229] Compiling librpc/src/rpc/svc_auth.c
[ 14/229] Compiling librpc/src/rpc/rtems_portmapper.c
[ 15/229] Compiling netinet/tcp_subr.c
[ 16/229] Compiling librpc/src/rpc/svc_simple.c
../../libc/getservbyname.c: In function 'getservbyname_r':
../../libc/getservbyname.c:54:4: warning: #warning "implement a proper getservbyport_r" [-Wcpp]
54 | #warning "implement a proper getservbyport_r"
| ^~~~~~~

[ 17/229] Compiling rtems/rtems_bootp.c
[ 18/229] Compiling net/if.c
../../bsps/powerpc/beatnik/net/porting/if_xxx.modini.c:2:10: fatal error: porting/rtemscompat.h: No such file or directory
2 | #include <porting/rtemscompat.h>
| ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

In file included from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:164:2: error: #error rtemscompat_defs.h must define either NET_CHIP_LE or NET_CHIP_BE
164 | #error rtemscompat_defs.h must define either NET_CHIP_LE or NET_CHIP_BE
| ^~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function 'bus_space_do_read_2':
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:267:9: warning: implicit declaration of function '_inp_word' [-Wimplicit-function-declaration]
267 | return _inp_word((volatile unsigned short*)((handle)+(reg)));
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function 'bus_space_do_read_4':
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:272:9: warning: implicit declaration of function '_inp_long' [-Wimplicit-function-declaration]
272 | return _inp_long((volatile unsigned *)((handle)+(reg)));
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function 'bus_space_do_write_multi_2':
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:286:31: warning: implicit declaration of function '_out_word' [-Wimplicit-function-declaration]
286 | int i; for (i=0; i<cnt; i++) _out_word( (handle) + (reg), (addr)[i]);
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function 'bus_space_do_write_multi_4':
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:291:31: warning: implicit declaration of function '_out_long' [-Wimplicit-function-declaration]
291 | int i; for (i=0; i<cnt; i++) _out_long( (handle) + (reg), (addr)[i]);
| ^~~~~~~~~
In file included from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:40:
../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h: At top level:
../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:16:19: error: field 'd_softc' has incomplete type
16 | struct NET_SOFTC d_softc; /* MUST BE FIRST FIELD */
| ^~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:28:38: error: 'NETDRIVER_SLOTS' undeclared here (not in a function)
28 | #define NETDEV_DECL netdev_t THEDEVS[NETDRIVER_SLOTS]
| ^~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:30:8: note: in expansion of macro 'NETDEV_DECL'
30 | extern NETDEV_DECL;
| ^~~~~~~~~~~
In file included from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h: In function 'net_dev_get':
../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:50:28: error: expected ')' before 'NETDRIVER'
50 | device_printf(dev, "Bad "NETDRIVER" unit number.\n");
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: In function 'rtems_NETDRIVER_PREFIX_attach':
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:131:21: error: 'NETDRIVER' undeclared (first use in this function)
131 | device_printf(dev,NETDRIVER" unit not configured; use 'rtems_"NETDRIVER"_setup()'\n");
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:131:21: note: each undeclared identifier is reported only once for each function it appears in
131 | device_printf(dev,NETDRIVER" unit not configured; use 'rtems_"NETDRIVER"_setup()'\n");
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:131:30: error: expected ')' before string constant
131 | device_printf(dev,NETDRIVER" unit not configured; use 'rtems_"NETDRIVER"_setup()'\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:140:11: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
140 | ifp = &sc->arpcom.ac_if;
| ^~
In file included from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:151:31: error: expected ')' before string constant
151 | device_printf(dev,NETDRIVER" Driver already attached.\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:156:13: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
156 | memcpy(sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
| ^~
In file included from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:163:31: error: expected ')' before string constant
163 | device_printf(dev,NETDRIVER"_attach() failed\n");
| ^~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:168:31: error: expected ')' before string constant
168 | device_printf(dev,NETDRIVER" Driver not attached.\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:173:32: error: expected ')' before string constant
173 | device_printf(dev,NETDRIVER"_detach() failed\n");
| ^~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:177:31: error: expected ')' before string constant
177 | device_printf(dev,NETDRIVER"_detach() not implemented\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in definition of macro 'device_printf'
258 | #define device_printf(device,format,args...) printk(format,## args)
| ^~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:183:10: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
183 | if ( !sc->tid )
| ^~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:184:5: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
184 | sc->tid = rtems_bsdnet_newproc(NETDRIVER"d", 4096, net_daemon, sc);
| ^~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:184:43: error: expected ')' before string constant
184 | sc->tid = rtems_bsdnet_newproc(NETDRIVER"d", 4096, net_daemon, sc);
| ^~~
| )
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:184:13: error: too few arguments to function 'rtems_bsdnet_newproc'
184 | sc->tid = rtems_bsdnet_newproc(NETDRIVER"d", 4096, net_daemon, sc);
| ^~~~~~~~~~~~~~~~~~~~
In file included from ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:42,
from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
../../rtems/rtems_bsdnet_internal.h:169:10: note: declared here
169 | rtems_id rtems_bsdnet_newproc (
| ^~~~~~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:194:23: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
194 | irq_data.name = sc->irq_no;
| ^~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:203:28: error: expected ')' before string constant
203 | fprintf(stderr,NETDRIVER": unable to install ISR\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
| )
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:207:10: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
207 | if ( sc->irq_no ) {
| ^~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:215:23: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
215 | irq_data.name = sc->irq_no;
| ^~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:222:28: error: expected ')' before string constant
222 | fprintf(stderr,NETDRIVER": unable to uninstall ISR\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| )
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: In function 'the_net_isr':
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:242:2: warning: implicit declaration of function 'NET_DISABLE_IRQS' [-Wimplicit-function-declaration]
242 | NET_DISABLE_IRQS(sc);
| ^~~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:244:29: error: invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
244 | rtems_bsdnet_event_send( sc->tid, EX_EVENT );
| ^~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: In function 'net_daemon':
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:262:3: warning: implicit declaration of function 'NET_ENABLE_IRQS' [-Wimplicit-function-declaration]
262 | NET_ENABLE_IRQS(sc);
| ^~~~~~~~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: At top level:
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:286:2: error: 'NETDRIVER' undeclared here (not in a function)
286 | NETDRIVER"1",
| ^~~~~~~~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:286:11: error: expected '}' before string constant
286 | NETDRIVER"1",
| ^~~
../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:285:74: note: to match this '{'
285 | struct rtems_bsdnet_ifconfig NET_EMBEMB(NETDRIVER_PREFIX,_dbg,_config) = {
| ^

Waf: Leaving directory `/home/junkes/MVME6100_testing/legacyNet/build/powerpc-rtems6-beatnik'
Build failed
-> task in 'bsp_objs' failed with exit status 1 (run with -v to display more information)
-> task in 'bsp_objs' failed with exit status 1 (run with -v to display more information)

Viele Grüße und Danke,
Heinz
 

On 1. Mar 2021, at 22:48, Vijay Kumar Banerjee <vijay at rtems.org> wrote:

Hello all,

In RTEMS 6, there will be no cpukit/libnetworking in the RTEMS repository and it will be moved to its own separate repository. There are ongoing efforts in this direction and it is very close to completion. What's remaining, is to collect feedback from the users of the libnetworking stack.

I request you to test the new standalone legacy networking repository with your regular targets and let me know if I have broken something in RTEMS or in the new repository. The legacy repo, in its current state, has been tested with pc-qemu and it can successfully run the legacy networking tests.

The following are the links to the repositories with the latest version of changes:
RTEMS: https://git.rtems.org/vijay/rtems.git/log/?h=devel-no-libnet
Legacy Network: https://git.rtems.org/vijay/rtems-net-legacy.git/log/?h=main

The following BSP family in RTEMS has been used with the old legacy networking stack:
Zynq, PC, Motorola Shared, Beatnik, mvme3100, mvme5500, gen68360, uc5282, mvme 162/167

If anyone is maintaining/working with one (or more) of these BSPs, please let me know if you're able to test the separate legacy-net repository and if you have any feedback. If you're planning to test it, please add your comments here so that we know someone is going to do it and wait for your feedback. The changes will not be pushed right away and we'll wait for some feedback.

What's next?

The legacy networking repository will stay at git.rtems.org for any projects that are still using it. It is recommended that the new projects use the libbsd networking stack which is more full-featured.

Thank you for your patient reading. Any suggestion is welcome and I'm more than happy to work with you to get it more thoroughly tested before getting it merged.

Best regards,
Vijay
_______________________________________________
devel mailing list
devel at rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Replies:
Re: Announcement: Legacy libnetworking will be removed from RTEMS and will be placed in a separate repository Joel Sherrill via Core-talk

Navigate by Date:
Prev: Re: [Merge] ~dirk.zimoch/epics-base:epicsMutexPriorityInheritance into epics-base:7.0 Dirk Zimoch via Core-talk
Next: Re: Announcement: Legacy libnetworking will be removed from RTEMS and will be placed in a separate repository Joel Sherrill via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
Navigate by Thread:
Prev: Re: epicsTypes.h question Johnson, Andrew N. via Core-talk
Next: Re: Announcement: Legacy libnetworking will be removed from RTEMS and will be placed in a separate repository Joel Sherrill via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
ANJ, 03 Mar 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·