Chris Lightcap wrote:
> 
> Hi Jan,
> 
> I made the changes you suggested in your last response. I've exported
> the rtdev_alloc so that I can use that with arcdev_setup in my driver.
> (code shown below)
> 
> /* Setup a struct device for ARCnet. */
> 
> static void arcdev_setup(struct rtnet_device *dev)
> {
>     dev->type = ARPHRD_ARCNET;
>     dev->hard_header_len = sizeof(struct archdr);
>     dev->mtu = choose_mtu();
>     dev->get_mtu = rt_hard_mtu; // RTNET
> 
>     dev->addr_len = ARCNET_ALEN;
> 
>     // dev->tx_queue_len = 100; // RTNET
>     // dev->watchdog_timeo = TX_TIMEOUT;
> 
>     dev->broadcast[0] = 0x00;    // for us, broadcasts are address 0
>     
>     // New-style flags.
> 
>     dev->flags = IFF_BROADCAST;
>     
>     // Put in this stuff here, so we don't have to export the symbols to
>     // the chipset drivers.
>     
>     dev->open = arcnet_open;
>     dev->stop = arcnet_close;
>     dev->hard_start_xmit = arcnet_send_packet;
> 
>     // dev->tx_timeout = arcnet_timeout;
>     // dev->get_stats = arcnet_get_stats;
> 
>     dev->hard_header = arcnet_header;
>     dev->rebuild_header = arcnet_rebuild_header;
> }
> 
> struct rtnet_device *rt_alloc_arcdev(char *name)
> {
>     struct rtnet_device *dev;
> 
>     /*** RTnet ***/
>        
>     dev = rtdev_alloc(sizeof(struct arcnet_local)); // <-------
>     if (!dev)
>         return NULL;
> 
>     arcdev_setup(dev);
> 
>     memset(dev->broadcast, 0xFF, ARCNET_ALEN);
>     strcpy(dev->name, "rteth%d");
>     
>     rtdev_alloc_name(dev, "rtarc%d");
>     rt_rtdev_connect(dev, &RTDEV_manager);
>     RTNET_SET_MODULE_OWNER(dev);
>     dev->vers = RTDEV_VERS_2_0;
> 
>     /*** RTnet ***/
> 
>     if(dev) {
>         struct arcnet_local *lp = (struct arcnet_local *) dev->priv;
>         rtdm_lock_init(&lp->lock); /*** RTnet ***/
>     }
> 
>     return dev;
> }
> 
> We're not planning to run RTmac/TDMA over our RT arcnet so we've decided
> to scratch the rtnet startup script and load the required modules in our
> own script. Is there anything more that has to be done to load rtnet?

Yes and no. Explanation follows below.

> 
> mknod /dev/rtnet c 10 240
> 
> ifconfig lo down
> ifconfig arc0 down
> 
> insmod /usr/local/rtnet/modules/rtnet.ko
> insmod /usr/local/rtnet/modules/rtipv4.ko
> insmod /usr/local/rtnet/modules/rtpacket.ko
> insmod /usr/local/rtnet/modules/rt_loopback.ko
> 
> insmod /usr/local/rtnet/modules/rt_arcnet.ko
> insmod /usr/local/rtnet/modules/rt_com20020.ko
> insmod /usr/local/rtnet/modules/rt_com20020-pci.ko
> insmod /usr/local/rtnet/modules/rt_arc-rawmode.ko
> 
> /usr/local/rtnet/sbin/rtifconfig rtarc0 up 10.1.1.1
> /usr/local/rtnet/sbin/rtifconfig rtlo up 127.0.0.1
> 
> It seems like everything loaded ok (no error messages) and here's the
> output from dmesg | tail .. is the station address 00 a looming problem?
> can I change this in the source file?

That looks arcnet-specific to me, and this is something I cannot comment
on due to lacking experience. I would compare the output with standard
Linux. Of course, understanding how the station addresses are normally
used will be even better. ;)

> 
> [EMAIL PROTECTED]:/usr/local/rtnet/sbin$ dmesg | tail
> [4299263.969000] rt-arcnet: COM20020 PCI support
> [4299263.970000] ACPI: PCI Interrupt 0000:04:02.0[A] -> GSI 18 (level,
> low) -> IRQ 21
> [4299263.970000] rtarc0: Contemporary Controls
> [4299264.272000] rtarc0: PCI COM20020: station 00h found at CC70h, IRQ 21.
> [4299264.280000] rtarc0: Using CKP 64 - data rate 2.5 Mb/s.
> [4299264.280000] RTnet: registered rtarc0
> [4300094.481000] initializing loopback...
> [4300094.481000] RTnet: registered rtlo
> [4300094.511000] rt-arcnet: raw mode (`r') encapsulation support loaded.
> [4300094.512000] rtarc0: WARNING!  Station address 00 is reserved for
> broadcasts!
> 
> and surprisingly!
> 
> [EMAIL PROTECTED]:/usr/local/rtnet/sbin$ sudo ./rtifconfig -a
> rtarc0    Medium: unknown (7)
                    ^^^^^^^
Hah, this still needs fixing! :o>
(see tools/rtifconfig.c)

>          IP address: 10.1.1.1  Broadcast address: 10.255.255.255
>          UP BROADCAST RUNNING  MTU: 508
> 
> rtlo      Medium: Local Loopback
>          IP address: 127.0.0.1
>          UP LOOPBACK RUNNING  MTU: 1500
> 
> Here is the interesting part! I have a worst case rtt of 0.0 us when I
> ping the local loopback. This can't be right. Even more strange is that

Let me guess: you run this over RTAI? Then you did not start the system
timer /somehow/. Normally, this is done by rtcfg.ko or tdma.ko. If those
modules aren't loaded, your application has to do this. But as you do
not have any application yet: simply insmod rtcfg.ko. This will start
the timer while rtcfg remains passive otherwise.

> I can ping the arcnet card, which I thought was only possible for TCP/IP
> devices. What should I set for the IP address of my arcnet card; should
> I leave it empty? And the big question is how can I test the performance
> of the new arcnet driver without implementing it in our robot control
> software? I have Ethereal but I it would be helpful if you had an
> example program.

Well, if it is transparent to the rest of the RTnet stack (and this
seems to be the case), rtping would be a good start. Another performance
tester are the rtt-* examples under examples/xenomai/posix. Teresa
Noviello started a RTAI port recently, but I don't know the current status.

> 
> [EMAIL PROTECTED]:/usr/local/rtnet/sbin$ sudo ./rtping 127.0.0.1
> Real-time PING 127.0.0.1 56(84) bytes of data.
> 64 bytes from 127.0.0.1: icmp_seq=1 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=2 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=3 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=4 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=5 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=6 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=7 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=8 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=9 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=10 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=11 time=0.0 us
> 
> --- 127.0.0.1 rtping statistics ---
> 11 packets transmitted, 11 received, 0% packet loss
> worst case rtt = 0.0 us
> 
> [EMAIL PROTECTED]:/usr/local/rtnet/sbin$ sudo ./rtping 10.1.1.1
> Real-time PING 10.1.1.1 56(84) bytes of data.
> 64 bytes from 127.0.0.1: icmp_seq=1 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=2 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=3 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=4 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=5 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=6 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=7 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=8 time=0.0 us
> 64 bytes from 127.0.0.1: icmp_seq=9 time=0.0 us
> 
> --- 10.1.1.1 rtping statistics ---
> 9 packets transmitted, 9 received, 0% packet loss
> worst case rtt = 0.0 us
> 
> 
> Thanks again! I'm making great process thanks to your quick responses.

I'm just eagerly awaiting your patches... :)

Jan


Attachment: signature.asc
Description: OpenPGP digital signature

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
RTnet-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-developers

Reply via email to