Porting RCM3315 to RCM3000 code in DC 9.62

I am trying to port code that was developed on RCM3315 into RCM3000.
Downgrading to older module, please don’t ask why!

Most of the code is working, thank G-d!

TCP code is giving me grief.

I have tested with ping sample code and I get pings on RCM3000.

However, when I make the developed code work mostly for both boards, the RCM3315 answers ARPs but the RCM3000 doesn’t while being pinged.

They both show same interactions until I start the pinging but the RCM3000 does not respond to pins.

Any idea where to start looking?

How do I add picture to this post to show Stdio differences?

Please open a support ticket for this issue by emailing tech.support@digi.com.

Are you compiling to the board and testing from the Dynamic C IDE? Can you get some Wireshark captures of the network traffic? Are you using a static IP address? Be sure to use a different static IP for each board, as your test PC might be caching a given IP’s MAC address instead of probing for it again.

If you’re compiling to a .bin file that you install with Rabbit Field Utility (RFU), be sure to select “RCM3000” as the target (Options/Project Options/Targetless menu) first. The RCM3000 used a different Ethernet controller than the RCM3315, so it can’t use a binary targeting the RCM3315.

Tried ping and telnet sample codes on both board and both worked.
Minor difference where the RCM3315 sends Gratuitous ARP on init making sure PC registers.
Back to custom code where I stripped everything and last thing stripped was IO init with WrPortI function and clock doubler for some reason.
The whole section breaks the ARP requests and responses.
Please see below. I will try to isolate the ports tomorrow. Any ideas?

WrPortI (GCDR, &GCDRShadow, 0x07);	// set clock doubler
WrPortI (GOCR, &GOCRShadow, 0x2A);	// disable PCLK out

WrPortI(IB0CR, NULL, 0x08);		//allow external WR~ signal
//WrPortI(GOCR,NULL,0x00);		//enable bufen

WrPortI (PFFR, &PFFRShadow, 0x80);		//set PF7 to PWM output
WrPortI (PFDDR, &PFDDRShadow, 0xFF);	//	parallel Port F = Outputs
WrPortI (PFDR, &PFDRShadow, 0xFF);	//	parallel Port F = Outputs

//set up port I/O
//port A is bi-directional and can be read or written to
WrPortI (SPCR, &SPCRShadow, 0x8C);	//port A is aux data bus

//port B is part of aux address bus;
WrPortI (PBDDR, &PBDRShadow, 0x3F);		//all outputs
WrPortI (PBDR, &PBDRShadow, 0x00);

//port C are the 4 UARTs
WrPortI (PCFR, &PCFRShadow, 0x55);		//drive all duart TX outputs

//port D is bi-directional and can be read or written to
WrPortI (PDDCR, &PDDCRShadow, 0x00);
WrPortI (PDDDR, &PDDDRShadow, 0xEF);	//PD4 input
WrPortI (PDDR, &PDDRShadow, 0x03);		//set PD7 - PD2 low

//PWM setup
WrPortI (PWM3R, &PWM3RShadow, 0x88);		//8 MSB's of 10-bit PWM word
WrPortI (PWL3R, &PWL3RShadow, 0x01);		//bits 7 & 6 are LSBs of 10-bit, bit 0 is spread bit

//port E is bi-directional and can be read or written to
WrPortI (PEDDR, &PEDDRShadow, 0xC1);		//0b11000001
WrPortI (PEDR, &PEDRShadow, 0x01);

//port G is bi-directional and can be read or written to
WrPortI (PGFR, &PGDRShadow, 0x00);
WrPortI (PGDDR, &PGDDRShadow, 0x07);		//0b00000111
WrPortI (PGDR, &PGDRShadow, 0x00);