Home/Support/Support Forum/RCM3209 and the original version Compiler 9.62 build question
Welcome to Digi Forum, where you can ask questions and receive answers from other members of the community.

RCM3209 and the original version Compiler 9.62 build question

+1 vote
I have old source code and object code that has been/was built/compiled using the 9.62 compiler on an old no longer working windows 7 machine. This saved original BIN file works on the RCM3209. But if I use the original source code and try to do a new build, the BIN file created is not identical to the original BIN file, and also fails to operate as the original BIN file does. There are many BIN file comparison differences between the new build and original build, and it is also slightly larger in size by a few hundred bytes. I have used the compiler on both windows 10 and windows 7 machines, and have the same problem with both. The new BIN file I build initially runs, (that is, it is responding to many pings, but only one single TCP SYN/ACK exchange before it stops responding to TCP or pings). I'm reasonably certain the source code is the correct original version that the old working BIN file was built from. I am changing the TCP_CONFIG in the same way as the original was, for the IP address, and move it the LIB folder replacing the compiler version TCP_CONFIG file before compiling. This is working, of course, because the ping works initially. In my main program i am calling tcpconfig as config 1 just as always. I cannot recreate the old original build machine exactly. I'm reasonably sure it also was using the same unpatched 2008 compiler v9.62 as well. I have tried during the build to make object files using both chip options available under the RCM3209. The results are the same. I have tried to load the rabbit using both the compiler and the RFU, same thing. Any ideas?
asked Oct 19 in Rabbit Software by oldorange New to the Community (1 point)

Please log in or register to answer this question.

2 Answers

0 votes
It sounds like the old compiled .bin file is using a slightly different file. The new program you are running should run the same way as the old .bin file, provided you used the same program file you used with your Windows 7.
To be sure you are using the same file, is there a way you can compile the file you have now on a Windows 7 machine, maybe a virtual machine.

Also verify that you are using the same version of Dynamic C 9.62. I would start with a clean install of Dynamic C 9.62 and compare and if it doesn't compare start adding some patches to see if these fix the issue especially if the patches are used by your program. Or try installing the new Dynamic C 9.62A release listed under Current Versions. https://www.digi.com/support/productdetail?pid=5053&type=software
answered Oct 19 by Campbell Veteran of the Digi Community (742 points)
thanks. from original question:  " I have used the compiler on both windows 10 and windows 7 machines, and have the same problem with both. "
Also have tried 9.62A, same exact failure...  No longer transmitting or responding, debug shows it sees some of the network broadcast ARP traffic, but it never sends anything out.
0 votes
I don't suppose you have a copy of the old Dynamic C installation? You could look at default.dcp (the Project File) to see what settings you enabled, including Project Macros.

You could also compare the LIB.DIR file, and the contents of the Lib directory. Some customers made changes to the libraries that shipped with Dynamic C.

Do you have a .LST file to go with that .BIN file? How about a .MAP? You could compare the old file to your new one. Unfortunately, small changes in a program or libraries can result with extensive changes to the .BIN file as function placement changes lots of target addresses in the generated assembly.

Are you selecting the correct Target (Options/Project Options/Targetless) for the .BIN file?

There were also two sets of patches to Dynamic C 9.62, and Digi recently released a 9.62A installer that includes those patches and some additional changes. https://www.digi.com/support/productdetail?pid=5053

Can you run your program within the Dynamic C debugger to see if it's crashing somewhere in particular?
answered Oct 22 by TomCollins Veteran of the Digi Community (2,051 points)
Thanks, 'no backup' was implied in the "no longer working build machine".  No LST or MAP either, nada. I am selecting the only options I know of for building the BIN, based on an old instruction created to build the BIN, but it still has screencaps reflecting a older 3200, and not the 3209 we moved to later for our v1 and then v2 code. But the two old BINs, our version 1 and version 2, both work on the 3209 just fine.  But trying to build the BIN from the sources we have saved of v1 and v2 fail to run properly in exactly the same way every time.  And also have tried many iterations of builds with different compiler settings just in case. Have not tried 9.62 intermediate patches, but only 9.62 and 9.62A.  I assume 9.62A has the patches built in.

The debug shows the same result of where it stops transmitting for both v1 and v2 new builds.  It is not a crash as I thought. Just in a loop waiting for a TCP socket to be established after it stopped talking to the first one originally started, but then timed-out because the rabbit stopped transmitting TCP.  Debug shows some subsequent received broadcast ARPs from the network coming in, but nothing of any kind goes out. No TCP, no ARP, no Ping replies, nothing.
Yes, 9.62A is the latest and includes all outstanding patches.  It is possible that your old .BIN files that work were compiled with some sort of modification in the libraries, but unlikely.

At this point, debugging with 9.62A is probably your best bet to get it going.  It's possible that you don't actually have the correct source code corresponding to your v1 and v2 binaries.
...