Hi, In the compilation process of Vxworks , I've found several flags specified in the Makefile , defs files and rules files that needs to be declared first. These flags have null values and they cause the whole make process to stop abruptly. For example: partialImage.o: $(LDDEPS) $(PRJ_OBJS) $(EXTRA_MODULES) $(COMPONENT_LIBS) $(LIBS) $(PRJ_OBJS_FILE) - @ $(RM) $@ flags like the Tornado source directory are not defined. Whats the procedure for giving values to them? Regards, Servio "Johnson, Erik J" wrote:
What does the console (serial) window say when you get these failures? If you are getting IP_MAX_UNITS failures, then you need to recompile vxworks with IP_MAX_UNITS set higher than 1 (it needs to be >= PETH_NUM_DEVS + 1). The NetApp init code registers the END driver(s) with the IP stack and be default VxWorks only allows one registration with the IP stack (which is consumed by the Intel NIC/driver). You can see an example of how I did this in the supplied BoardSupport/VxWorks/IXP1200EB/config.h, search for MVR, or IP_MAX_UNITS, and then follow this model to build your BSP (or if you are using the supplied BSP, just define MVR and recompile)
if that is not the problem, I am at a loss. Perhaps it is a version mis-match? The driver was written for VxWorks 5.4 (if I remember correctly) maybe something changed in the END interface...?
The default routes were #ifdef'd out for the MVR application because we were demonstrating a routing protocol (OSPF) rather than static routes. In addition, the route table manager changed its interface slightly to support the notion of virtual routers. If you want to add a route, simply use the rtm_mvr code. look in SA1_CoreLibs/rtm-mvr/, the VxWorks shell commands are available from rtm_console.cpp/rtm_console.h if you just want to call them "by hand", or add them into any init code you want.
erik
-----Original Message----- From: Servio Lima [mailto:servio@andrew.cmu.edu] Sent: Wednesday, November 22, 2000 4:48 AM To: Johnson, Erik J; ixp1200@CS.Princeton.EDU Subject: Re: PETH drivers
Hi,
I still get the same error , even reducing the number of PETH devices: -> NetApp_GigInit
STATUS OF intConnect = 0 BigMacDriver CTOR OctalMacNumber = 0 status = 0 status = ffffffff Failed to load Pseudo Ethernet driver number 0 Failed to load Pseudo Ethernet driver number 1 Failed to load Pseudo Ethernet driver number 2 Failed to load Pseudo Ethernet driver number 3 value = -1341915136 = 0xb0040000
Some hints: I am compiling the vxworks_mvr application using Tornado with the following flags: ccarm -g -mcpu=strongarm110 -mapcs-32 -ansi -nostdinc -DRW_MULTI_THREAD -D_REENTRANT -mno-sched-prolog -fno-builtin -fvolatile -w -Wall -pedantic -I. -IC:/Tornado/target/h -Ic:\ixp1200\include -Ic:\ixp1200\SA1_CoreLibs\libd -Ic:\ixp1200\msgq -Ic:\ixp1200\SA1_CoreLibs\GigaMAC_GC82547EB -Ic:\ixp1200\SA1_CoreLibs\debug_1200 -Ic:\ixp1200\utils -DCPU=ARMSA110 -DOS=VXWORKS -DIOSTYLE=HARDWARE -DVX_WORKS -DVXWORKS -DROUTE -DFBUS_DEV0_TYPE=0 -DFBUS_DEV1_TYPE=1 -DMAC_21440 -DMAC_GC82547EB -DWB_SVR -DFBUS_DEVICE_COUNT=2 -D__unix -DRTM_MVR -DROUTE -DPETH_DRV -DPETH_NUM_DEVS=4
That are the same flags found in vxworks_mvr.mak makefile Any suggestions?
In addition , I'd like to know exactly where the route for port 18 should be inserted in the fixed routing table that is implemented in \Ixp1200\SA1_Corelibs\app1200\net_app.cpp, because there is a preprocessor directive that banned the insertion of a route in the place where other routes are added. An extracted portion of the code explains this:
#ifdef ROUTE #ifndef RTM_MVR ------------------> it is assumed that if MVR is used a new route can not be inserted?? rt_add("1.1.1.1", "255.0.0.0", 1); ....etc
Thanks in advance, Servio
"Johnson, Erik J" wrote:
Sorry, I missed the last part of your email. The PETH driver ASSUMES it gets packets from port 18, you don't need to instantiate that many drivers. Simply instantiate drivers for the ports you want to logically represent to VxWorks (e.g, just the first 4 10/100 ports). Then each driver will enqueue for the transmit port associated with its instance, all will receive from port 18 and demultiplexing will be done based on the ingress port number within the packet descriptor. Note, you should be loading the MVRRefdes microcode with this driver since it has modifications to the microcode that allow the core to properly enqueue on the outgoing (transmit) queues.
erik
-----Original Message----- From: Servio Lima [mailto:servio@andrew.cmu.edu] Sent: Tuesday, November 21, 2000 2:23 PM Cc: ixp1200@CS.Princeton.EDU Subject: PETH drivers
Hi, Does anyone has experience using Pseudo Ethernet drivers for StrongArm-Microengine communications? I got the following problem each time I compile with the -DPETH_DRV flag on (using Tornado Workbench):
-> ld < my_rtmmvr.out Loading C:/project2/ARMSA110gnu/rtmmvr.out | value = 3275480 = 0x31fad8 -> NetApp_GigInit
STATUS OF intConnect = 0 BigMacDriver CTOR OctalMacNumber = 0 status = 0 status = ffffffff Failed to load Pseudo Ethernet driver number 0 Failed to load Pseudo Ethernet driver number 1 Failed to load Pseudo Ethernet driver number 2 Failed to load Pseudo Ethernet driver number 3 Failed to load Pseudo Ethernet driver number 4 Failed to load Pseudo Ethernet driver number 5 Failed to load Pseudo Ethernet driver number 6 Failed to load Pseudo Ethernet driver number 7 Failed to load Pseudo Ethernet driver number 8 Failed to load Pseudo Ethernet driver number 9 Failed to load Pseudo Ethernet driver number 10 Failed to load Pseudo Ethernet driver number 11 Failed to load Pseudo Ethernet driver number 12 Failed to load Pseudo Ethernet driver number 13 Failed to load Pseudo Ethernet driver number 14 Failed to load Pseudo Ethernet driver number 15 Failed to load Pseudo Ethernet driver number 16 Failed to load Pseudo Ethernet driver number 17 Failed to load Pseudo Ethernet driver number 18 Failed to load Pseudo Ethernet driver number 19
Exception number 16: Task: 0x3bff74 (t31)
Data abort Program Counter: 0xcc294 Status Register: 0x60000013 8e6c8 _vxTaskEntry +28 : 3ff64 () 40008 _wdbFuncCallLibInit+128: _NetApp_GigInit () cc358 _NetApp_GigInit+c : _NetApp_Init__Fv ()
Data abort Exception address: 0x000cc294 Current Processor Status Register: 0x60000013 Task: 0x3bff74 "t31" value = 0 = 0x0
I am using -DPETH_NUM_DEVS=20, that is 20 PETH devices, because I want to use port No. 18 for the StrongArm-uengine communication.
Basically the problem is the invocation of the function: cookie = muxDevLoad(pethDrvNum, pethEndLoad, pethInitStr, 0, NULL); that can be found in \IXP1200\SA1_CoreLibs\app_1200\net_app.cpp
My goal is to transmit a packet from the StronArm to the uengine and viceversa. I think I should enable the PETH functionality first, but if anyone knows of another method for doing the same, please let me know ASAP.
Any help would be appreciated.
Regards, Servio Lima7