/[H8]/trunk/docs/Microchip TCP_IP stack/TCPIP Stack/TCPIP Stack Version.txt
ViewVC logotype

Annotation of /trunk/docs/Microchip TCP_IP stack/TCPIP Stack/TCPIP Stack Version.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 15 - (hide annotations) (download)
Thu Apr 19 09:01:15 2007 UTC (17 years, 2 months ago) by hedin
File MIME type: text/plain
File size: 88328 byte(s)
added the TCP/IP stack, source code.
1 hedin 15 ********
2     Microchip TCP/IP Stack Version Log:
3     ********
4    
5     Note: Please file bug-reports/bug-fixes at http://support.microchip.com/ or post
6     to the Microchip TCP/IP -> Ethernet Forum at http://forum.microchip.com/
7     Look for stack updates at http://www.microchip.com/tcpip/
8    
9     ********
10     v4.02 10 April 2007
11     ********
12     IMPORTANT NOTE: You must use MPLAB 7.41 or higher to successfully open the
13     MPLAB projects.
14     IMPORTANT NOTE2:If an external serial EEPROM memory is used to store AppConfig,
15     it's contents will be invalidated the first time you run this
16     version, restoring the AppConfig defaults. The AppConfig
17     structure has been optimized.
18     IMPORTANT NOTE3:If an external serial EEPROM memory for MPFS, you will need to
19     recreate the MPFS image and program your EEPROM. A 32 bit
20     addressing format is now used.
21    
22     Changes:
23     1. Implemented TCP RX packet order correction logic. The stack can now accept
24     TCP frames that arrive out-of-order without requiring the remote node to go
25     through a retransmit cycle. This dramatically improves RX performance when
26     communicating over the Internet.
27     2. UDPOpen() now can handle a NULL pointer for remoteNode. In this case, the
28     broadcast IP/MAC addresses will be used for the remoteNode (destination
29     address of outbound packets).
30     3. Recreated MPLAB projects for the HI-TECH PICC-18 compiler. These were
31     temporarily absent from 4.00RC. This project works with the PIC18F97J60
32     with internal Ethernet module, assuming the correct compiler version is
33     present.
34     4. Moved all the headers around. Most of them are in
35     "Microchip Solutions\Microchip\Include\TCPIP Stack" now. This change was
36     made to again be more compatible with other (future) Microchip software
37     libraries.
38     5. New UDPPut() behavior. Now, if space in the Ethernet TX buffer runs out,
39     the packet will not automatically be transmitted. You must call UDPFlush()
40     to cause the packet to be transmitted.
41     6. Added UDPGetArray(), UDPPutArray(), UDPPutROMArray(), UDPPutString() and
42     UDPPutROMString() user API functions. These functions perform substantially
43     better than calling UDPPut() successively and allow greater application
44     programming flexibility.
45     7. Changed TCPPutString() and TCPPutROMString() APIs to now return an updated
46     string pointer instead of a count of bytes successfully placed in the TX
47     buffer.
48     8. Added UDPPerformanceTest.c. By default this module causes UDP packets
49     containing 1024 bytes of application data to be broadcasted on UDP port
50     12345. Use a packet sniffer, such as Wireshark (http://www.wireshark.com/)
51     to capture and derive stack overhead/UDP TX performance characteristics with
52     this module. Note that this test uses the UDPPutROMArray() function.
53     Applications which use successive calls to UDPPut() will be slower. To
54     enable this module, #define STACK_USE_UDP_PERFORMANCE_TEST in TCPIPConfig.h.
55     9. Added TCPPerformanceTest.c. By default this module listens on TCP port
56     12345. When a remote client connects, this server module will being
57     transmitting the maximum possible amount of application data that it can,
58     given your TCP TX FIFO size. Use a packet sniffer, such as Wireshark
59     (http://www.wireshark.com/) to capture and derive stack overhead/TCP TX
60     performance characteristics with this module. Any TCP client can be used,
61     including readily available utilities such as the telnet.exe utility
62     available on Microsoft Windows XP. To use it to connect to the test module,
63     run: "telnet.exe xxx.xxx.xxx.xxx 12345" where xxx.xxx.xxx.xxx is the board's
64     IP address. Note that this test uses the TCPPutROMArray() function.
65     Applications which use successive calls to TCPPut() will be slower. To
66     enable this module, #define STACK_USE_TCP_PERFORMANCE_TEST in TCPIPConfig.h.
67     10.Added Reboot.c module. By default, this module listens on UDP port 30304.
68     If the application byte 0x00 arrives on this port, the PIC will reset. This
69     is primarily useful for remote Bootloader entry.
70     #define STACK_USE_REBOOT_SERVER in TCPIPConfig.h to enable this module.
71     Note that since no encrypted challenge/response algorithm is currently
72     implemented, this module is a Denial of Service vulnerability, so it should
73     not be enabled unless there is a specific need for it.
74     11.Made the TickUpdate() ISR routine execute in the low priority ISR instead of
75     the default high priority ISR. The Microchip TCP/IP stack does not need any
76     interrupts except this low priority timer.
77     12.Renamed STACK_USE_DHCP macro to STACK_USE_DHCP_CLIENT
78     13.Added STACK_USE_MPFS macro.
79     14.Changed UDPIsPutReady() to return a WORD instead of a BOOL. The WORD is the
80     number of bytes that can be put into the buffer.
81     15.Changed MACGetArray() to accept a NULL pointer. If NULL, the retrieved data
82     will simply be discarded. This also changes the behavior of UDPGetArray()
83     and TCPGetArray() to match, throwing bytes away if a NULL pointer is given.
84     16.Added a very simple DHCP Server module. This module has limitations and is
85     useful for a single client only. Its purpose is to allow you to directly
86     connect the board to a standard PC through a crossover cable (no other
87     network nodes attached). The server is coded to automatically disable
88     itself if the DHCP client is also enabled and another DHCP server is
89     detected on the network. This allows both the DHCP server and DHCP client
90     to coexist without any manual reconfiguration.
91     17.Added DNSResolveROM() function for resolving host names that are stored in
92     program memory, ex: literal strings.
93     18.Added a TCP automatic transmit/window update timer. It defaults to
94     TCP_AUTO_TRANSMIT_TIMEOUT_VAL (40ms) after the first get or put operation
95     following the last automatic transmit/window update. This timer enhances
96     performance, especially when streaming data over the Internet where round
97     trip times can be several tens to low hundreds of milliseconds. This also
98     improves application coding flexibility as TCPFlush() need not be called
99     anymore.
100     19.Added TCP delayed ACKnowledgement timer. This conserves bandwidth by
101     transmitting fewer ACKs and prevents inadvertently influencing remote slow
102     start/collision avoidance and fast retransmit algorithms.
103     20.Completely rewrote ICMP (ping) server module. It is now much smaller (ROM
104     and RAM), faster, and can handle packets of 576 bytes or larger, if no IP
105     fragmentation occurs.
106     21.Rewrote StackTsk() stack manager. It is much simpler now.
107     22.Added TCPFind(), TCPFindArray(), and TCPFindROMArray() user API functions.
108     These functions peek inside a given TCP socket's RX FIFO (without removing
109     anything) and looks for a particular byte or array of bytes. This should
110     greatly simplify the creation of application code whenever variable length
111     fields are used (ex: text strings terminated by \r\n). It supports case
112     insensitive text searching or binary searching, as well as an offset to
113     start searching at.
114     23.Added TCPGetRxFIFOFree() user API. It returns the number of bytes of free
115     space in the TCP's RX FIFO.
116     24.Changed default TICK resolution to 1ms (from 10ms) and improved accuracy.
117     25.Added outbound ping capabilities (i.e. board can now ping another board or a
118     PC). To enable these features, define STACK_USE_ICMP_CLIENT. This will
119     enable several new APIs, including ICMPBeginUsage(), ICMPSendPing(),
120     ICMPGetReply(), and ICMPEndUsage(). The functions should be called in this
121     order. See the PingDemo() function in MainDemo.c for an example of how to
122     use them. By default, pushing BUTTON3 (left-most one) will cause a ping to
123     be sent to 4.78.194.159 (ww1.microchip.com). The response time will be
124     displayed on the LCD (assuming your development board has an LCD).
125     26.Cleaned up C30 3.00 signed/unsigned warnings.
126     27.Removed PIC18F97J60_TEST_BOARD hardware profile support. This stack no
127     longer supports it due to the old beta silicon (with errata) mounted on
128     these boards.
129     28.Added support for ROM pointers for all of the SMTP strings (To, From, CC,
130     Subject, etc.). If you use a ROM string, you must also set the
131     corresponding SMTPClient.ROMPointers.xxx bit to let the SMTP module know
132     which type of pointer was provided. See the SMTPDemo() code in MainDemo.c
133     for and example calling sequence using both ROM and RAM strings for the
134     various fields.
135    
136     Fixes:
137     1. Fixed a critical TCP buffer corruption issue where the start of a TCB header
138     overlapped with the last byte of the RX FIFO from the previous socket. This
139     bug affected version 4.00RC only.
140     2. ETH97J60.c, TCPIP.h, and TCPIP Stack Version.txt were correctly readded to
141     the TCPIP Demo App-C18 project using relative paths instead of absolute
142     paths.
143     3. UDPOpen() now dynamically assigns a local port number if you call it and
144     give it a 0x0000 port number. This should fix some UDP applications from
145     not working (ex: DNS Client module) with some computers/routers/networks
146     which throw away traffic originating from the invalid port 0x0000 value.
147     4. Fixed a ENC28J60 bank selection error that would occur if an application
148     called GetCLKOUT() in ENC28J60. By default, this function is not called.
149     5. UnencodeURL() function in Helpers.c is now tested and working.
150     6. Fixed a TCP Window Update problem when TCPGetArray() was used. Before the
151     problem was fixed, performance could have been terrible on reception.
152     7. Fixed a unintended TCP connection close if the socket was idle for about a
153     minute. Now, TCP sockets will remain open indefinitely if there is no
154     traffic going on.
155     8. Serial numbers >32K are now displayed correctly on the serial port as a
156     positive value when C18 is used and the board is placed in configuration
157     mode (BUTTON0 is depressed on power up).
158     9. HI-TECH PICC-18 compiler would previously incorrectly initialize the
159     AppConfig structure.
160     10.Previously a processor reset was possible when accessing items in the
161     AppConfig strucutre on 16 bit MCUs (PIC24, dsPIC) due to unaligned word
162     accesses. This was fixed by reordering the Flags byte in the APP_CONFIG
163     structure.
164     11.Rewrote DHCP client state machine, fixing the previously known problem
165     where it would not perform a new discovery if it was trying to renew a lease
166     with an offline DHCP server.
167     12.Fixed a critical deadlock problem in the ETH97J60.c MAC layer driver for
168     the PIC18F97J60 family Ethernet controller. Previously, it was possible
169     (although rare) that the DMAST or TXRTS bits would get stuck set if too
170     much Ethernet traffic was received within a short interval. Previously, the
171     MACFlush() function was unnecessarily setting TXRST, which it should not do
172     while the Ethernet interface or DMA is being used.
173     13.Fixed an HTTP server state machine problem where a new connection occurring
174     too soon on a previously used socket could cause the HTTP server to no
175     longer respond.
176     14.Fixed a potential memory corruption error in the HTTPGetVar() callback
177     which would exceed the bounds of the VarString array when returning the
178     VAR_STACK_DATE variable.
179     15.Fixed a TCP transmission sequence tracking problem whenever data is
180     retransmitted and new unflushed data is also in the TX FIFO. Thanks go to
181     Matt Watkins on the Microchip Ethernet forum for identifying this issue.
182    
183     Known Problems:
184     1. RTL8019AS MAC layer driver has not been updated for new TCP module. Users
185     requiring RTL8019AS support should continue to use stack version 3.75.
186     2. I2CEEPROM.c has not been tested or completed. Continue to use I2CEEPROM.c
187     from stack version 3.75 if this file is needed.
188     3. Telnet server module does not implement a lot of Telnet functions. As a
189     result, it will likely not display correctly or work at all with some Telnet
190     clients. The server was tested with the Microsoft telnet.exe utility which
191     is provided with Microsoft Windows.
192     4. TFTPc module has not been tested with this version.
193     5. The default demo web pages which use AJAX do not automatically refresh
194     themselves when viewed in Firefox 2.0.0.1. Earlier Firefox versions
195     (1.5ish) probably work without any problem.
196     6. Files may be inaccessible in your MPFS if compiled with C18 for internal
197     flash program memory and your total MPFS content is large (around 64KB or
198     larger). The code attempts to access the ROM memory using a near rom
199     pointer when a far rom pointer is needed.
200     7. If using MPLAB 7.52 all .s files that are compiled with C30 will not have
201     the corresponding object file get stored in the correct directory. As a
202     result, if you are compiling with C30 and with MPFS_USE_EEPROM not defined
203     (i.e. storing web pages in internal program memory), the project won't link
204     (throws a undefined reference to `MPFS_Start'). As a workaround, remove the
205     Intermediates Directory in the MPLAB project. Alternatively upgrade MPLAB
206     to a newer version. MPLAB IDE 7.60+ may have this fixed.
207     8. If the DHCP client and DHCP server are used at the same time and you connect
208     two similar boards to each other (ex: two PICDEM.net 2 boards connected via
209     a crossover cable), a race condition can occur where both nodes will disable
210     their DHCP server and neither board will get a successful DHCP lease. If
211     this unlikely scenario occurs, as a work around, simply reset one of the
212     boards to renable it's DHCP server.
213     9. HI-TECH PICC-18 projects may not compile when MPFS_USE_EEPROM is not
214     defined and you are trying to store web page data in internal
215     FLASH program memory.
216     10.HI-TECH PICC-18 projects may not compile when targeting the external
217     ENC28J60 chip on the PICDEM.net 2 development board (instead of the
218     internal Ethernet controller). This problem only applies when a
219     PIC18F97J60 family part is the target. I.e. it compiles correctly for the
220     HPC_EXPLORER + Ethernet PICtail.
221    
222     Testing and Performance Notes:
223     1. This stack version was compiled and tested with the following tool versions:
224     -MPLAB IDE 7.52
225     -Microchip C30 version 3.00
226     -Microchip C18 version 3.10
227     -HI-TECH PICC-18 version 9.50PL3
228     2. Using the UDPPerformanceTest.c module, the stack can transmit around
229     220KBytes/second (1.75Mbits/second) of UDP application data on the
230     PIC18F97J60 with internal Ethernet @ 41.66667MHz core clock, compiled using
231     C18 3.10 with debug optimization settings.
232     3. Using the UDPPerformanceTest.c module, the stack can transmit around
233     392KBytes/second (3.14Mbits/second) of UDP application data on the
234     PIC24HJ256GP610 with external ENC28J60 @ 40 MIPS, compiled using
235     C30 3.00 with debug optimization settings.
236     4. Using the TCPPerformanceTest.c module, the stack can transmit around
237     58KBytes/second (464Kbits/second) of TCP application data on the
238     PIC18F97J60 with internal Ethernet @ 41.66667MHz core clock, compiled using
239     C18 3.10 with debug optimization settings, over Ethernet when using a tiny
240     200 byte TX TCP FIFO. Note that performance can be improved significantly
241     by increasing the FIFO size and performance will drop significantly if the
242     round trip TCP acknowledgement time is increased (ex: testing over the
243     Internet instead of Ethernet).
244     5. Using the TCPPerformanceTest.c module, the stack can transmit around
245     69KBytes/second (558Kbits/second) of TCP application data on the
246     PIC24HJ256GP610 with external ENC28J60 @ 40 MIPS, compiled using
247     C30 3.00 with debug optimization settings, over Ethernet when using a tiny
248     200 byte TX TCP FIFO. Note that performance can be improved significantly
249     by increasing the FIFO size and performance will drop significantly if the
250     round trip TCP acknowledgement time is increased (ex: testing over the
251     Internet instead of Ethernet).
252     6. Using the TCPPerformanceTest.c module, the stack can transmit around
253     178KBytes/second (1.42Mbits/second) of TCP application data on the
254     PIC24HJ256GP610 with external ENC28J60 @ 40 MIPS, compiled using
255     C30 3.00 with debug optimization settings, over Ethernet when using a larger
256     2000 byte TX TCP FIFO. Note that performance will drop significantly if the
257     round trip TCP acknowledgement time is increased (ex: testing over the
258     Internet instead of Ethernet).
259    
260    
261     ********
262     v4.00RC 28 December 2006
263     ********
264     IMPORTANT NOTE: If an external serial EEPROM memory is used to store AppConfig,
265     it's contents will be invalidated the first time you run this
266     version, restoring the AppConfig defaults. The AppConfig
267     structure has been optimized.
268     IMPORTANT NOTE2: If an external serial EEPROM memory for MPFS, you will need to
269     recreate the MPFS image and program your EEPROM. A 32 bit
270     addressing format is now used.
271    
272    
273     Changes:
274     1. Added Simple Mail Transfer Protocol (SMTP) client module and updated
275     MainDemo.c to exercise the Email transmission functionality when a user
276     pushes BUTTON0.
277     2. Added beta Telnet server module. See Known Problems section.
278     3. Completely revamped the TCP module. A real transmit FIFO and receive FIFO
279     are allocated for each TCP socket now. This greatly enhances RFC compliance,
280     communications robustness, and makes application development easier. New
281     APIs were added for putting and getting arrays and strings (including ROM
282     variants). Several TCP related bugs are now fixed as a result. Please
283     report any bugs found in the new implementation.
284     4. Added TCPPutArray() API.
285     5. Added TCPPutROMArray() API.
286     6. Added TCPPutString() API.
287     7. Added TCPPutROMString() API.
288     8. Added TCPGetArray() API.
289     9. Changed TCPIsPutReady() API. Instead of returning a BOOL, it now returns a
290     WORD. The WORD is a count of the number of bytes that TCPPut(),
291     TCPPutArray(), etc. can immediately place in the output buffer. MAKE SURE
292     THAT YOUR CODE DOES NOT COMPARE THE RETURN RESULT OF TCPIsPutReady()
293     DIRECTLY TO TRUE. For example, "if(TCPIsPutReady(MySocket) == TRUE){...}"
294     must be converted over to: "if(TCPIsPutReady(MySocket)){...}".
295     10.Changed TCPIsGetReady() API. Instead of returning a BOOL, it now returns a
296     WORD. The WORD is a count of the number of bytes that TCPGet() or
297     TCPGetArray() can immediately obtain. MAKE SURE THAT YOUR CODE DOES NOT
298     COMPARE THE RETURN RESULT OF TCPIsGetReady() DIRECTLY TO TRUE. For example,
299     "if(TCPIsGetReady(MySocket) == TRUE){...}" must be converted over to:
300     "if(TCPIsGetReady(MySocket)){...}".
301     11.Changed TCPDiscard() return type from BOOL to void.
302     12.Removed TCP_NO_WAIT_FOR_ACK option. It was defaulted to disabled in the
303     last two releases of the stack and is not needed with the new TCP module.
304     13.Updated DNS module to include two new required APIs: DNSBeginUsage() and
305     DNSEndUsage(). These functions control a one bit ownership semaphore to
306     allow multiple applications to use the DNS module in series. If invoked
307     correctly, this will prevent unintended bugs resulting from two applications
308     trying to use the DNS module at the same time. Old applications, such as
309     those based around the GenericTCPClient.c example must be updated to use
310     these functions.
311     14.Started using a new project structure and folders. You must use MPLAB 7.41
312     or higher (stack is tested on MPLAB 7.50) to use the default
313     workspaces/projects, which include files using relative paths. This should
314     improve compatibility with some future code libraries released by Microchip.
315     StackTsk.h was broken into TCPIPConfig.h, HardwareProfile.h, and StackTsk.h.
316     TCPIPConfig.h now includes all stack configuration options and
317     HardwareProfile.h contains all hardware options. No macros need be globally
318     defined in MPLAB project now. TCPIP.h is the only header applications must
319     include now, for any/all modules used.
320     15.Combined ARP.c/ARP.h and ARPTsk.c/ARPTsk.h into a single file pair:
321     ARP.c/ARP.h. Applications built using a prior stack revision must remove
322     all instances including "ARPTsk.h" and replace it with "ARP.h" instead. The
323     ARP module is now simpler, more linear (easier to read), and being in one
324     source file, allows the C compiler to optimize better.
325     16.Added PIC18F67J60_TEST_BOARD hardware profile to HardwareProfiles.h. This
326     hardware profile is designed for 05-60091 (Rev 1), a development board that
327     is not in production at this time.
328     17.Added DSPICDEMNET1 and DSPICDEMNET2 hardware profiles to HardwareProfiles.h
329     for eventual support of the Microchip dsPICDEM.net 1 and dsPICDEM.net 2
330     demo boards. These two boards use the RTL8019AS Ethernet controller and a
331     24LC515 EEPROM. These changes are currently incomplete and these profiles
332     cannot be used.
333     18.Began rewriting I2CEEPROM.c to support 16 bit CPUs, including the
334     dsPIC30F6014 used on the dsPICDEM.net 1 and 2 demo boards. Note that work
335     here is incomplete and cannot be used as a result -- see Known Problems
336     section.
337     19.Partially updated RTL8019AS.c to support 16 bit CPUs, including the
338     dsPIC30F6014 used on the dsPICDEM.net 1 and 2 demo board. Note that work
339     here is incomplete and cannot be used as a result -- see Known Problems
340     section.
341     20.Updated SNMP.c to use new typedefs in GenericTypedefs.h. Also SNMP was
342     tested in this version. SNMP.mib was updated some to better reflect current
343     hardware.
344     21.Added AN870 SNMP callbacks to MainDemo.c (a feature that was missing in
345     3.xx releases). This code will get compiled when STACK_USE_SNMP_SERVER is
346     defined in TCPIPConfig.h.
347     22.Removed all instances of MPFS_USE_PGRM for storing in internal FLASH program
348     memory. Storage in internal program memory is now the default. Define
349     MPFS_USE_EEPROM to override the default and store MPFS in an external EEPROM
350     memory.
351     23.Decreased program memory needed for Announce.c module by about 180 bytes.
352     Multiple inline calls to UDPPut() were removed.
353     24.UDP checksum checking logic has been improved. The UDP layer now avoids
354     writing the pseudo header checksum in the RX buffer.
355     25.Swapped endianess of the returned checksum from CalcIPBufferChecksum().
356     Rewrote CalcIPBufferChecksum() in Helpers.c. This improves consistency.
357     26.Improved swapl() in Helpers.c.
358     27.Improved USART baud rate (SPBRG) calculation for PIC18s. Rounding is now
359     done to chose the most optimal value and the code will automatically select
360     high baud rate mode (BRGH=1) if possible. Additional improvements can be
361     made if using a newer PIC18 with the 16 bit baud rate generator.
362     28.Added GenericTCPServer.c example file to complement GenericTCPClient.c. The
363     server is enabled by defining STACK_USE_GENERIC_TCP_SERVER_EXAMPLE in
364     TCPIPConfig.h.
365     29.Renamed STACK_USE_GENERIC_TCP_EXAMPLE definition to
366     STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE for consistency with new server
367     example.
368     30.Defaulted MPFS.exe to generate binary MPFS images using 32 bit addressing.
369     MPFS.h has been modified to also default to use 32 bit addressing of
370     external EEPROM images. You must rebuild any old MPFS images and reprogram
371     them if upgrading from a previous TCP/IP stack revision, which defaulted to
372     use 16 bit addressing.
373     31.Updated MPFS.exe to #include "TCPIP.h" instead of "..\Headers\Compiler.h" in
374     C files generated by the utility.
375     32.Added MPFSv2.exe PC utility for generating large MPFS images in program
376     memory (ASM30 code) for C30 users. Previously, the C30 compiler placed a
377     limit of less than 32KB of total MPFS size due to the PSV window size
378     limitation on PIC24/dsPIC devices. To get around the limitation, use the
379     new MPFSv2.exe utility to generate an .s file which can be included in your
380     project instead of the .c file generated by the traditional MPFS.exe utility.
381    
382     Fixes:
383     1. Fixed a bug in ARPProcess() which would incorrectly send an ARP response to
384     an incorrect MAC & IP address if a TX buffer wasn't immediately available.
385     2. Fixed a TCP bug where TCPIsGetReady() would return TRUE even if no data was
386     left in the recieved packet. Previously you had to call TCPGet() one last
387     time and have it fail before TCPIsGetReady() would return FALSE.
388     3. Modified TCP state machine. Established connections will no longer
389     automatically close if left idle for approximately 45 seconds. Note that
390     your application needs to ensure that no sockets unintentionally get lost
391     (For example: a server socket that received data only is established and the
392     cable breaks while connected. In this case, the socket would never be
393     detected as being disconnected since the server never attempts to transmit
394     anything).
395     4. Stopped overclocking dsPIC33 and PIC24H devices. Previously PLLFBD was
396     incorrectly set to 39 instead of 38 to yield a resulting Fosc of 84MHz
397     (42MIPS) instead of 80MHz (40MIPS) with the default Explorer 16 development
398     board. Thanks go to Matt Watkins on the Microchip Ethernet Forum for
399     pointing this error out.
400     5. Corrected a bug in IP.c where IPHeaderLen would not be properly initialized
401     if a NON_MCHP_MAC was used (ex: RTL8019AS) and IPSetRxBuffer() was called.
402     This bug did not affect ENC28J60 or PIC18F97J60 family support. Thanks go
403     to Darren Rook for identifying this issue.
404     6. Updated checksum checking code in ENC28J60.c for latest silicon DMA checksum
405     errata.
406     7. Declared TickCount in Tick.c/Tick.h as volatile and implemented an interrupt
407     safe reading procedure in TickGet(). Since this multibyte variable is
408     modified in the ISR and read in the mainline code, these changes are needed
409     to prevent rare inconsistency bugs.
410     8. Fixed Announce.c so the unicast remoteNode of the requesting packet would be
411     used rather than the remoteNode of the last received packet, which may not
412     be correct when transmitting. Thanks go to Brett Caulton for identifying
413     this issue.
414     9. Fixed a DHCP bug which would cause DHCP renewals to continually occur after
415     only 60 seconds once the original lease expired. Thanks go to Brett Caulton
416     for identifying this issue and fix.
417     10.Fixed a potential TCP socket leak in the FTP module. Previously
418     FTPDataSocket would not be reliably initialized nor closed if the connection
419     was killed forcefully (user killed application, cable disconnected while
420     transferring, etc.).
421    
422     Known Problems:
423     1. RTL8019AS MAC layer driver has not been updated for new TCP module. Users
424     requiring RTL8019AS support should continue to use stack version 3.75.
425     2. I2CEEPROM.c has not been tested or completed. Continue to use I2CEEPROM.c
426     from stack version 3.75 if this file is needed.
427     3. Telnet server module is still in development. No user authentication
428     features are currently implemented. Some telnet clients may render the
429     telnet server output incorrectly (in the wrong locations or wrong colors).
430     Testing has only been done with the Microsoft Windows telnet.exe utility
431     that comes Windows XP.
432     4. DHCP will continually send out DHCP Request packets when the lease expires and the
433     original DHCP server that gave the lease is offline. The board will continue to
434     use the expired IP address until the DHCP server comes back online, at which point
435     the lease will be renewed or a new discovery will occur. A new discovery should
436     occur after timing out, instead. It is believed that this problem has always
437     existed in previous stack revisions.
438     5. DHCP will continually send out DHCP Request packets when the lease expires and the
439     original DHCP server that gave the lease does not include Option 54, the Server
440     Identifier. A new discovery should occur after timing out. It is believed that
441     this problem has always existed in previous stack revisions.
442     6. TFTPc module has not been tested with this version.
443     7. Serial numbers >32K will be displayed on the serial port as a negative value when
444     C18 is used and the board is placed in configuration mode (RB0 button is depressed
445     on power up).
446    
447    
448    
449     ********
450     v3.75 14 August 2006
451     ********
452     Changes:
453     1. Added beta DNS client module (DNS.c). DHCP was also updated to obtain a DNS
454     server address. Added AppConfig.PrimaryDNSServer IP address. Added STACK_USE_DNS
455     configuration macro. To use the DNS client, call DNSResolve() with the server name,
456     ex: DNSResolve("www.microchip.com"), and then periodically call DNSIsResolved()
457     until it returns TRUE, ex: DNSIsResolved(&IPAddressDestination). Only one DNS
458     resolution can be in progress at a time. Because the DNS client is a beta module,
459     the API or code may change before being finalized. No formal DNS API documentation
460     is available yet.
461     2. Added beta NetBIOS Name Service responder module (NBNS.c). Added
462     AppConfig.NetBIOSName string. Added STACK_USE_NBNS configuration macro. Added
463     MY_DEFAULT_HOST_NAME macro in StackTsk.h. Now, whenever a NetBIOS broadcast
464     attempting to resolve AppConfig.NetBIOSName arrives, a response will be made.
465     This form of name resolution only works on a single subnet. Off the subnet,
466     manual registration in a DNS server or other means will be needed to allow the
467     local Host Name to be recognized and translated to an IP address. The default
468     NetBIOS name for the board is "MCHPBOARD". To test the NetBIOS Name Service
469     module, try entering http://MCHPBOARD/ into your web browser instead of the board's
470     IP address.
471     3. Added beta HTTP client module (GenericTCPClient.c). This module demonstrates how
472     to make a TCP client application. To test this module, uncomment the
473     STACK_USE_GENERIC_TCP_EXAMPLE macro in StackTsk.h, recompile, and then press the
474     BUTTON1 button while the stack is running. RemoteURL[] should be downloaded from
475     ServerName[] and written to the UART. For the default values of ServerName[] and
476     RemoteURL[], the HTML search page for "Microchip" will be fetched from
477     "www.google.com" and written to the serial port. No formal documentation is
478     available for this example yet.
479     4. Added Embedded Ethernet Device Discoverer PC project to aid in embedded product
480     discovery when connected to a network and demonstrate how to write PC applications
481     which can communicate with embedded devices. The source code for this device is
482     included. It can be built using the Microsoft Visual C# 2005 Express Edition
483     compiler. At the time of stack release, this 3rd party PC development tool can be
484     downloaded at no cost from http://msdn.microsoft.com/vstudio/express/. If using
485     only the Microchip Device Discoverer executable file without the Visual C# compiler,
486     the .NET Framework 2.0 must be installed on the local PC. The application setup
487     utility should allow dynamic downloading of this component if the target machine
488     does not already have it installed.
489     5. Updated Announce.c to listen and respond to discovery requests sent to UDP port
490     30303 starting with the character 'D'. To test this functionality, use the
491     Embedded Ethernet Device Discoverer on a PC connected to the same subnet.
492     6. Updated UART configuration menu to accommodate the new beta module configuration
493     options (DNS server address, device host name).
494     7. Increased MPFS reserve block to 64 bytes from 32. Also, because the APP_CONFIG
495     structure was updated, all current MPFS images and data stored in deployed EEPROMs
496     needs to be updated.
497     8. Added a means to erase (invalidate) the onboard EEPROM using the BUTTON0 momentary
498     switch (right-most switch on demo boards with multiple switches). To erase the
499     EEPROM, hold down BUTTON0, RESET the board (press and release MCLR switch), and
500     then continue to hold down BUTTON0 for an additional 4 seconds. If you press MCLR
501     again, the EEPROM contents will now be invalid. If you press '0' on the UART, the
502     same configuration that was read prior to invalidating the contents will be
503     written back into the EEPROM. Invalidating the EEPROM allows the MY_DEFAULT_*
504     constants to get loaded into a previously programmed EEPROM chip. Because of
505     change #7, this procedure should be done for all currently programmed EEPROMs to
506     prevent anomalous values from being read.
507     9. remoteNode in StackTsk.c was changed from private to global scope. Now external
508     modules can reference the address of the last received packet. Announce.c uses
509     this to send a unicast response to a broadcast discovery request.
510     10.All stack modules that can be disabled (DHCP.c, FTP.c, etc) now will no longer
511     emit a compiler error if you have it in the project without defining the
512     appropriate macro (STACK_USE_DHCP, STACK_USE_FTP, etc). It will simply generate
513     no machine code when compiled and the stack will not use that module. Make sure
514     the proper macro is defined for each module that you wish to use.
515     11.Added SetRXHashTableEntry() to ENC28J60.c. This function can be used to set the
516     appropriate bit in the Hash Table registers to join a particular multicast group.
517     12.Added Realtek RTL8019AS Ethernet controller support to the stack. MAC.c was
518     renamed to RTL8019AS.c. This Ethernet controller is not recommended for new
519     designs. RTL8019AS support was reintroduced to provide ongoing assistance to
520     former Application designs implementing this chip. For new applications, use the
521     Microchip ENC28J60 or PIC18F97J60 family of microcontrollers.
522     13.Added I2C EEPROM support for MPFS storage. In older 2.xx stack revisions, I2C
523     EEPROM was supported by the XEEPROM.c file. This file has been renamed to
524     I2CEEPROM.c. It is mutually exclusive with SPIEEPROM.c, and only one may be
525     included in the project at a time.
526     14.Added new hardware definitions to Compiler.h. Pin mappings for the PICDEMNET and
527     PIC18F97J60_TEST_BOARD boards have been added. FS_USB was also defined; however,
528     it is untested and not recommended. See Compiler.h. The PIC18F97J60_TEST_BOARD is
529     a non-production board that some Early Adopters of the PIC18F97J60 family parts
530     have.
531     15.Changed type definitions for BYTE_VAL, WORD_VAL, DWORD_VAL, and moved the generic
532     typedefs to GenericTypeDefs.h from StackTsk.h. This should improve compatibility
533     with some future code libraries released by Microchip.
534     16.LCDBlocking.c module was modified to support 4-bit interfaces to LCD modules. The
535     PICDEM.net board has the module wired using a 4-bit bus.
536    
537    
538     Fixes:
539     1. Fixed a serious MAC TXBuffer leak in TCP.c. Previously TCP.c would allocate a
540     buffer for each socket in use, but under heavy traffic conditions (ex: user holds
541     down F5 on web browser), the buffer handle might have been discarded before
542     releasing the buffer. As a result all TCP connections would have lost the ability
543     to send any application data after the TXBuffer pool ran out.
544     2. In the TCP_SYN_SENT TCP state, ACKs may only be received (as opposed to SYN+ACK
545     packets) if the remote node thinks the connection is already open. A RST is now
546     sent in response to an unexpected ACK, which may improve reconnection time when
547     this (rare) condition occurs.
548     3. A bug was present in the UDP module where remote MAC addresses would be cached for
549     each socket, even when UDPInit() or UDPClose() was called, or the microcontroller
550     was reset. As a result, responses to incoming packets could have been sent to the
551     wrong MAC address. UDP Sockets are now properly initialized/closed.
552     4. Fixed a potential timing bug in LCDBlocking.c. For lower values of CLOCK_FREQ,
553     insufficient delay time was given to the LCD module, potentially causing improper
554     operation.
555     5. Changed PIC24F to default to the XT oscillator fuse rather than HS. The
556     PIC24FJ128GA010 data sheet, rev. C reports that 8MHz should be used with XT mode,
557     not HS mode like prior data sheets.
558     6. Added a couple of wait states to the Realtek RTL8019AS MAC layer module for
559     NICPut() and NICGet(). Previously, the PICmicro could not operate above
560     approximately 25MHz without losing communication with the RTL8019AS chip.
561     7. Updated PC based MPFS utility. When generating C files to be added to your MPLAB
562     project, the include path to "Compiler.h" is now "..\Include\Compiler.h". The
563     output file, ex: "MPFSImg.c" should be placed in the "Source" subfolder before
564     compiling. For example, if you are in the main stack folder with the MPLAB
565     projects, type: "mpfs /c WebPages Source\MPFSImg.c"
566     8. IP Gleaning will now get properly disabled when, through the RS232 configuration
567     application, DHCP and IP Gleaning are disabled. The stack will still respond to
568     ping requests which have the wrong destination IP address, but a correct MAC
569     address. However, the stack will continue to keep its statically defined IP
570     address when DHCP/IP Gleaning are disabled and the ping arrives.
571     9. SPIEEPROM.c now saves and reconfigures the EEPROM_SPICON1 register (SSPCON1) before
572     reading or writing to the SPI. After the read/write, it restores the saved state.
573     This allows the SPI bus to operate at different speeds, depending on what
574     peripheral is being accessed if other devices share the bus and can support
575     different speeds. In particular, this fixes the SPI @ 10.4MHz problem on the
576     PICDEM.net 2 board when using the ENC28J60.
577    
578    
579     Known Problems:
580     1. DHCP will continually send out DHCP Request packets when the lease expires and the
581     original DHCP server that gave the lease is offline. The board will continue to
582     use the expired IP address until the DHCP server comes back online, at which point
583     the lease will be renewed or a new discovery will occur. A new discovery should
584     occur after timing out, instead. It is believed that this problem has always
585     existed in previous stack revisions.
586     2. DHCP will continually send out DHCP Request packets when the lease expires and the
587     original DHCP server that gave the lease does not include Option 54, the Server
588     Identifier. A new discovery should occur after timing out. It is believed that
589     this problem has always existed in previous stack revisions.
590     3. When an MPFS .c image file is added to a C30 project, a linking error reporting
591     insufficient contiguous .const memory may occur when too much data is in the MPFS
592     image (PSV window size limitation). Using the PSV window, 1 out of every 3 program
593     memory bytes is wasted.
594     4. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested
595     and possibly do not work.
596     5. SNMP, TFTPc modules have not been tested with this version.
597     6. Serial numbers >32K will be displayed on the serial port as a negative value when
598     C18 is used and the board is placed in configuration mode (RB0 button is depressed
599     on power up).
600     7. The C30 linker may misplace the __CONFIG2 section or disallow usage of MPFS images
601     that are too big (add too much to the .const code section). The consequences of
602     this are that the first configuration word at 0x157FC may not get set through code
603     (must use the Configuration Bits dialog instead), and/or the project will not
604     compile. This problem has been observed with C30 ver. 2.02 on the PIC24FJ128GA010
605     product. To work around this problem, the p24FJ128GA010.gld linker script has
606     been modified. Specifically, line 68 has been commented out, which causes the
607     linker to place all .text sections after placing all absolute sections. SSR 25966
608     in the C30 2.02 release notes may be related.
609     8. It is observed with the Realtek RTL8019AS Ethernet controller and the demo AJAX
610     web page which self refreshes rapidly, that occasional HTTP GET requests sent by
611     the computer do not get received by the HTTP server. This is believed to be a
612     RTL8019AS MAC layer bug. The TCP protocol handles the packet loss, but
613     application performance suffers while waiting for the TCP retransmission. This
614     problem is not observed with ENC28J60.c or ETH97J60.c MAC layers.
615     9. The HI-TECH compiler version 9.50PL1 crashes when compiling LCDBlocking.c with 4
616     bit mode (PICDEMNET) and using a warning level of -3 or higher. To work around
617     the problem, the HI TECH projects were set to use warning level -4.
618    
619    
620     Guiding Notes:
621     1. To use the stack on a classic PICDEM.net demo board with the Realtek Ethernet
622     controller, a PIC18F452 processor, and Microchip C18:
623     -Use the C18EEPROM MPLAB project
624     -Change the processor in the MPLAB IDE
625     -Change linker script to "18f452i.lkr" in the MPLAB project. Use the one provided
626     in the Linker subfolder, it has been modified to make more RAM available.
627     -Update the hardware definitions macro. Click on Project -> Build Options... ->
628     Project -> MPLAB C18 -> Add PICDEMNET, remove HPC_EXPLORER)
629     -Remove ENC28J60.c from the project
630     -Remove SPIEEPROM.c from the project
631     -Add RTL8019AS.c to the project
632     -Add I2CEEPROM.c to the project
633     -Enable all compiler optimizations (Project -> Build Options... -> Project -> MPLAB
634     C18 -> Categories Optimization -> Enable all)
635    
636    
637    
638     ********
639     v3.60 12 July 2006
640     ********
641     General Information:
642     This stack version is being publicly released, so the following changes are with
643     respect to the prior public stack release (v3.02). Interim stack changes for version
644     3.16 and 3.50 are documented below for those using non-public releases, but can be
645     ignored by most people.
646    
647    
648     Troubleshooting notes:
649     1. If you have an Ethernet PICtail revision 2.1 and are having reliability issues when
650     viewing the fast-refresh demo web page, you may need to install resistors in series
651     with the ENC28J60 SI, nCS, and SCK pins. The recommended value is 100 to 200 ohms.
652     This will reduce signal undershoot caused by long traces (parasitic inductance),
653     which can violate the absolute maximum electrical specs and cause SPI data
654     corruption. The HPC Explorer Rev 5 has fairly long traces to the PICtail connector.
655     2. Enabling C30 2.02 compiler optimizations on the dsPIC33FJ256GP710, PIC24HJ256GP610
656     ES chips may produce unreliable code.
657     3. When changing a C30 project to a PIC24H or dsPIC33F processor on the Explorer 16
658     demo board, the JTAG configuration fuse should be disabled to free the I/O pins
659     associated with it. JTAG is enabled by default.
660     4. This stack release was tested using MPLAB 7.40, C18 version 3.03, C30 version 2.02,
661     and HI TECH PICC18 version 9.50PL1.
662     5. When using the Ethernet PICtail board and HPC Explorer demo boards, make sure to
663     plug the power into the Ethernet PICtail and not the HPC Explorer. The HPC
664     Explorer's power regulator cannot provide enough current.
665    
666    
667     Changes:
668     1. Source files have been split into separate directories. To compile old
669     applications with this new stack, application source files may need to be updated
670     to include the proper path to the stack header files.
671     2. New MPLAB projects have been created:
672     -C18EEPROM: Equivalent to the previously named "mpnicee" project. Designed for
673     PIC18's using the C18 compiler. Web page content, board's IP address,
674     MAC address, DHCP enabled state, etc. is stored in an external SPI
675     EEPROM (25LC256 on demo boards). FTP Server demo is included.
676     -C30EEPROM: New supporting PIC24 and dsPIC controllers using the C30 compiler.
677     Similar to C18EEPROM.
678     -C18ProgramMem: Equivalent to the previously named "mpnicpg" project. Web page
679     content stored in internal FLASH program memory. Board's IP
680     address, MAC address, DHCP enabled state, etc. is stored only in
681     RAM and defaults are loaded from MY_DEFAULT_* constants in
682     StackTsk.h. FTP Server demo is not included. Web pages cannot be
683     updated remotely.
684     -C30ProgramMem: New supporting PIC24 and dsPIC controllers using the C30 compiler.
685     Similar to C18ProgramMem.
686     -HTC18EEPROM: Equivalent to the previously named "htnicee" project. Designed for
687     PIC18's using the HI TECH PICC18 compiler. Similar to C18EEPROM.
688     -HTC18ProgramMem: Equivalent to the previously named "htnicpg" project. Designed
689     for PIC18's using the HI TECH PICC18 compiler. Similar to
690     C18ProgramMem.
691     3. Created hardware definitions (pins, interrupt flags, special registers, etc) in
692     Compiler.h for easy changing of hardware. Four demo board combinations are
693     supported out-of-box now:
694     -EXPLORER_16: Explorer 16 motherboard + Ethernet PICtail Plus daughter card.
695     Tested with dsPIC33FJ256GP710, PIC24HJ256GP610, and
696     PIC24F128GA010 ES PIMs.
697     -HPC_EXPLORER: PICDEM HPC Explorer motherboard + Ethernet PICtail daughter
698     card. Tested with PIC18F8722 onboard and PIC18F87J10 PIM.
699     -DSPICDEM11: dsPICDEM 1.1 motherboard + Ethernet PICtail daughter card
700     (manually air wired). See Compiler.h for proper pins to air wire.
701     Tested with dsPIC30F6014A PIM.
702     -PICDEMNET2: PICDEM.net 2 motherboard (PIC18F97J60)
703     Change boards by changing the defined macro (Project -> Build Options... ->
704     Project -> MPLAB Cxx -> Add macro). When moving to custom hardware, add an
705     appropriate profile to Compiler.h. YOUR_BOARD is present as a placeholder.
706     4. Added Ethernet PICtail Plus schematic (reference ENC28J60 daughter card design for
707     Explorer 16 demo board). These boards have a Microchip part number of AC164123.
708     5. Latest ENC28J60 rev. B5 errata workarounds added. The code checks the EREVID
709     register and implements the appropriate workarounds as needed for the silicon
710     revision, so rev. B1, B4, and B5 are all supported in this stack release.
711     6. Significantly revised demonstration web page content in WebPages folder to use
712     AJAX technology. Using asynchronous JavaScript code executing in the web browser,
713     the status sections of the page are updated rapidly from the web server without
714     doing a full page refresh. As a result, a virtually real time update of the
715     potentiometer and button values can be displayed. Due to the constant use of new
716     TCP sockets, multiple simultaneous users are not recommended. See the Index.cgi
717     file for a simple static method of retrieving dynamic variables from the HTTP
718     server.
719     7. Changed IP Gleaning procedure. Now, if DHCP is enabled, the DHCP module will
720     continue to look for a new IP address/renew existing IP address if the IP address
721     is configured using IP Gleaning. Previously, the DHCP module would be disabled
722     once a successful ICMP packet was received and used to configure the IP address.
723     8. MAX_RETRY_COUNTS is 3 (previously it was 3, but an interim release changed it to 5).
724     9. Updated TCP state machine. It now includes the TCP_FIN_WAIT_2 state. Some other
725     changes were made to handle errors more robustly.
726     10.AN0String and AN1String now return all characters excluding the null terminator
727     when the HTTP server calls HTTPGetVar (except when the string is 0 length).
728     Previously, the null terminator was returned as well.
729     11.Dynamic pages (ie: .cgi files) are now served with an expired HTTP header to
730     prevent browser caching and allow more dynamic content to be displayed.
731     12.Support for the HI TECH PICC18 compiler has changed. Special Function Register
732     bits and other definitions have changed substantially from the previous HI TECH
733     PICC18 projects in TCP/IP stack version 3.02 and earlier. The C18/C30 SFR and
734     SFRbits naming conventions are now used and special remapping macros in Compiler.h
735     are used to maintain a consistent syntax. The HI TECH PICC18 projects were tested
736     with compiler version 9.50PL1 on the HPC Explorer board (PIC18F8722).
737     13.FTP client hash printing has been added to the FTP server. Now, whenever a chunk
738     of data is successfully uploaded to the device, a '#' character will appear on the
739     FTP client screen. The numbers of bytes each '#' represents is variable.
740     14.To improve maintainability, built in support for the "Compatible" A/D converter
741     present on older PIC18 parts (ex: PIC18F452) has been removed.
742     15.Removed old LCD code originally provided for the PICDEM.net demo board.
743     16.Added LCDBlocking.c and LCDBlocking.h, which implement simple routines for writing
744     to the LCD module on the Explorer 16 and PICDEM.net 2 development boards. The LCD
745     on the dsPICDEM 1.1 board is not supported. The stack version and IP address are
746     shown on the LCD on power up.
747     17.UART functions in MainDemo.c were replaced with C18 and C30 peripheral library
748     functions. However, because the UART peripheral libraries are not being updated
749     for newer silicon devices, the code was copied into UART.c and is compiled with
750     the stack.
751     18.Multiple TX buffer support has been implemented. Most stack layers have been
752     touched. ENC28J60.c has the most extensive changes. Each socket may use only one
753     TX buffer.
754     19.Implemented TCP retransmission support regardless of if TCP_NO_WAIT_FOR_ACK is
755     defined or not.
756     20.TCP_NO_WAIT_FOR_ACK in StackTsk.h has been undefined by default. This should
757     increase default TCP connection robustness. Packets sent from the stack to the
758     remote node will now be detected and retransmitted if lost or corrupted.
759     21.All TCP packets are now retransmitted immediately after being initially transmitted
760     when TCP_NO_WAIT_FOR_ACK is undefined. This improves throughput greatly when
761     communicating with systems which wait a long time before transmitting ACKs. TCP/IP
762     stacks, such as that used by Microsoft Windows, implement the TCP Delayed
763     Acknowledgement algorithm, which is why this retransmission is necessary for high
764     performance. The double transmission feature can be disabled in the Microchip
765     TCP/IP stack by defining "DEBUG" either in the TCP.c file or the project compiler
766     macros section. Using DEBUG mode can be useful when trying to look for errors
767     using Ethreal [ http://www.ethereal/ ].
768     22.Lowered TCP_START_TIMEOUT_VAL from 60 seconds to 3 seconds. 60 seconds is an
769     unreasonably long timeout for modern day network speeds.
770     23.Native support for the SLIP module has been dropped.
771    
772    
773    
774     Fixes:
775     1. A new IP address obtained via IP Gleaning will now update the LCD (if present),
776     invoke the Announce module (for MCHPDetect.exe), and output the new address out
777     the RS232 port.
778     2. DHCP client will now correctly use the first DHCP offer received when connected
779     to a network running multiple DHCP servers. Previously, the board would get no
780     IP address when attached to a network with multiple DHCP servers (unless the DHCP
781     request was transmitted before a second DHCP offer was received -- a relatively
782     rare event). Additionally, DHCPLeaseTime does not get reset to 60 seconds or
783     the value stored in the last DHCP packet received prior to receiving the ACK.
784     3. UDPProces() will now correctly process received UDP packets that have a 0x0000
785     checksum field. The UDP protocol specifies that 0x0000 means the checksum is
786     disabled. Packets with a 0x0000 checksum were previously thrown away unless the
787     calculated checksum also happened to be 0x0000.
788     4. The TCPIsPutReady() function will now honor the remote node's TCP window size. In
789     other words, if the remote application pauses or cannot handle the incoming data
790     rate, the TCP flow control feature will correctly function. Previously, if the
791     remote node ran out of incoming buffer memory, the TCP layer would still allow
792     more data to be transmitted. This would result in the loss or corruption of
793     application data, with a potentially broken connection. The change requires 2 more
794     bytes of RAM per TCP socket (TCB array).
795    
796    
797     Known Problems:
798     1. On PICDEM.net 2 board ENC28J60 and 25LC256 EEPROM share the same SPI1 module. At
799     3.3V, the 25LC256 is only rated to 5MHz SPI clock, but the code is setting it to
800     10.4MHz because the MACInit() function reconfigures the same SPI1 module.
801     2. DHCP will continually send out DHCP Request packets when the lease expires and the
802     original DHCP server that gave the lease is offline. The board will continue to
803     use the expired IP address until the DHCP server comes back online, at which point
804     the lease will be renewed or a new discovery will occur. A new discovery should
805     occur after timing out, instead. It is believe that this problem has always
806     existed in previous stack revisions.
807     3. DHCP will continually send out DHCP Request packets when the lease expires and the
808     original DHCP server that gave the lease does not include Option 54, the Server
809     Identifier. A new discovery should occur after timing out. It is believe that
810     this problem has always existed in previous stack revisions.
811     4. The MPFS utility has not been updated. When creating a .c image file, the include
812     path for the Compiler.h file will be incorrect and need to be manually updated to
813     "..\Include\Compiler.h".
814     5. When an MPFS .c image file is added to a C30 project, a linking error reporting
815     insufficient contiguous .const memory may occur when too much data is in the MPFS
816     image (PSV window size limitation). Using the PSV window, 1 out of every 3 program
817     memory bytes is wasted.
818     6. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested
819     and possibly do not work.
820     7. SNMP, TFTPc modules have not been tested with this version.
821     8. Serial numbers >32K will be displayed on the serial port as a negative value when
822     C18 is used and the board is placed in configuration mode (RB0 button is depressed
823     on power up).
824     9. IP Gleaning may not get disabled when, through the RS232 configuration application,
825     DHCP and IP Gleaning are disabled.
826     10.The C30 linker may misplace the __CONFIG2 section or disallow usage of MPFS images
827     that are too big (add too much to the .const code section). The consequences of
828     this are that the first configuration word at 0x157FC may not get set through code
829     (must use the Configuration Bits dialog instead), and/or the project will not
830     compile. This problem has been observed with C30 ver. 2.02 on the PIC24FJ128GA010
831     product. To work around this problem, the p24FJ128GA010.gld linker script has
832     been modified. Specifically, line 68 has been commented out, which causes the
833     linker to place all .text sections after placing all absolute sections. SSR 25966
834     in the C30 2.02 release notes may be related.
835    
836    
837     Guiding Notes:
838     1. To change processors using a C18* project:
839     -Change the processor in the MPLAB IDE
840     -Change linker script (ex: 18f87j10i.lkr) in the MPLAB project. Use *i.lkr
841     if the ICD2 is going to be used to debug with.
842     -Update the hardware definitions in Compiler.h or change your demo board
843     selection macro. (Project -> Build Options... -> Project -> MPLAB Cxx ->
844     PICDEMNET2, etc)
845     2. To change processors using a HTC18* project:
846     -Change the processor in the MPLAB IDE
847     -Update the hardware definitions in Compiler.h or change your demo board
848     selection macro. (Project -> Build Options... -> Project -> MPLAB Cxx ->
849     PICDEMNET2, etc)
850     3. To change processors using a C30* project:
851     -Change the processor in the MPLAB IDE
852     -Change linker script (ex: p33FJ256GP710.gld) in the MPLAB project.
853     -Update the hardware definitions in Compiler.h or change your demo board
854     selection macro. (Project -> Build Options... -> Project -> MPLAB Cxx ->
855     DSPICDEM11, etc)
856     -Disable JTAG configuration fuse, if enabled
857     4. When using the PICDEM.net 2 board, to write code targeting the PIC18F97J60 family
858     Ethernet module:
859     -Remove ENC28J60.c from the project
860     -Add ETH97J60.c to the project
861     -Plug the Ethernet cable into the left-most RJ45 jack (next to LCD)
862     5. When using the PICDEM.net 2 board, to write code targeting the ENC28J60 Ethernet
863     device:
864     -Make sure ENC28J60.c is in the project
865     -Make sure that ETH97J60.c is not in the project
866     -Plug the Ethernet cable into the right-most RJ45 jack (next to board edge)
867     6. When using the PICDEM.net 2 board, to write code targeting an Ethernet PICtail
868     module (ENC28J60):
869     -Make sure ENC28J60.c is in the project
870     -Make sure that ETH97J60.c is not in the project
871     -Make sure that the Ethernet PICtail J9 jumper is in the 2-3 position (default).
872     -Properly update the hardware profile in Compiler.h. ENC_CS_TRIS and ENC_CS_IO
873     need to be changed from D3 to B3.
874     -Plug the Ethernet cable into the PICtail
875     -Plug power into the PICDEM.net 2 board
876     7. When using the Explorer 16 and Ethernet PICtail Plus demo boards, make sure to mate
877     the PICtail to the motherboard using the topmost socket position, leaving the cable
878     hanging over prototyping area. If SPI2 is desired, the PICtail should have the
879     same orientation but be installed in the middle slot. Using SPI2, the hardware
880     profile will need to be updated in Compiler.h.
881    
882    
883    
884     ********
885     v3.50 13 April 2006
886     ********
887     Changes:
888     1. Improved dsPIC33F and PIC24H support. UART functions are included now instead of
889     precompiled object files for the PIC24F. The 12-bit A/D converter is now shown in
890     use on the demo web content. When changing a C30 project to a PIC24H or dsPIC33F
891     processor on the Explorer 16 demo board, the JTAG configuration fuse should be
892     disabled to free the I/O pins associated with it. JTAG is enabled by default.
893     2. Added LCDBlocking.c and LCDBlocking.h, which implement simple routines for writing
894     to the LCD module on the Explorer 16 development board. The stack version and IP
895     address are shown on the LCD on power up.
896     3. Added "C18ProgramMem" and "C30ProgramMem" MPLAB projects for MPFS storage (web page
897     content) on on-chip program memory. These projects are equivalent to the previously
898     named "mpnicpg" project in prior stack releases.
899     4. Multiple TX buffer support has been implemented. Most stack layers have been
900     touched. ENC28J60.c has the most extensive changes. Each socket may use only one
901     TX buffer.
902     5. Implemented TCP retransmission support when TCP_NO_WAIT_FOR_ACK is undefined.
903     6. TCP_NO_WAIT_FOR_ACK in StackTsk.h has been undefined by default. This should
904     increase default TCP connection robustness.
905     7. All TCP packets are now retransmitted immediately after being initially transmitted
906     when TCP_NO_WAIT_FOR_ACK is undefined. This improves throughput greatly when
907     communicating with systems which wait a long time before transmitting ACKs.
908     8. Lowered TCP_START_TIMEOUT_VAL from 60 seconds to 3 seconds.
909     9. Increased MAX_RETRY_COUNTS from 3 to 5 times.
910     10. The example HTTP server now returns a content expiration date which has already
911     past. This prevents web browser caching and allows more dynamic content to be
912     displayed.
913     11. Added WebPages_JScript folder, with new web pages that support dynamic page updates
914     without a full page reload. A tiny page of dynamic variables is returned by the
915     web server and Javascript executing on the target web browser changes DOM elements
916     as needed. Button S5 (RA7) on the Explorer 16 demo board and S1 (RB0) on the HPC
917     Explorer demo board changes the page color scheme. The rapid dynamic updates do
918     not work on some web browsers (Internet Explorer works, Firefox does not).
919    
920    
921     Known Problems:
922     1. MPFS utility has not been updated. When creating a .c image file, the include path
923     for the compiler.h file will be incorrect and need to be manually updated.
924     2. When an MPFS .c image file is added to a C30 project, a linking error reporting
925     insufficient contiguous .const memory may occur (PSV window size limitation).
926     3. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested and
927     possibly do not work.
928     4. SNMP, TFTPc, SLIP modules have not been tested with this version.
929     5. Serial numbers >32K will be displayed on the serial port as a negative value when
930     C18 is used and the board is placed in configuration mode (RB0 button is depressed
931     on power up).
932     6. IP Gleaning may not get disabled when, through the RS232 configuration application,
933     DHCP and IP Gleaning are disabled.
934     7. The IP address being outputted out the RS232 port and through the Announce module
935     does not happen when the IP address is configured using IP Gleaning.
936     8. On the PIC24F with C30 compiler optimizations enabled (such as Option 3, maximum
937     speed), the project may not work. The PIC24F headers that come with C30 ver. 2.01
938     declare several SFRs without using the volatile keyword.
939     9. dsPIC30 support is incomplete. Currently PIC18, PIC24F, PIC24H, and dsPIC33F
940     processors are supported.
941    
942    
943    
944     ********
945     v3.16.00: 06 March 2006
946     ********
947     Changes:
948     1. Added unified support for both the Microchip C18 and C30 compilers. The intention
949     is to allow one code base to be compiled for any PIC18, PIC24F/H, dsPIC30, or
950     dsPIC33 product (with adequate memory). See the "Tested Using" section for what is
951     known to work.
952     2. To improve maintainability, support for the HI-TECH PICC18 compiler has been
953     dropped.
954     3. New project workspaces have been created, "C30EEPROM.mcw" and "C18EEPROM.mcw".
955     C18EEPROM.mcw is equivalent to the previously named "mpnicee.mcw." C30EEPROM is
956     intended to be used for PIC24 and dsPIC 16-bit controllers.
957     4. Source files have been split into separate directories.
958     5. Latest ENC28J60 rev. B5 errata workarounds added. The code checks the EREVID
959     register and implements the appropriate workarounds as needed for the silicon
960     revision, so rev. B1, B4, and B5 are all supported in this stack release.
961     6. Removed old LCD code originally provided for the PICDEM.net demo board.
962     7. To improve maintainability, built in support for the "Compatable" A/D converter
963     present on older PIC18 parts (ex: PIC18F452) has been removed.
964     8. UART functions in MainDemo.c were replaced with C18 and C30 peripheral library
965     functions.
966    
967     Tested Using:
968     1. Software:
969     -MPLAB version 7.31.01
970     -C18 version 3.02
971     -C30 version 2.01
972     2. Hardware:
973     -PICDEM HPC Explorer rev. 4 (PIC18F8722) + Ethernet PICtail Daughter Board (ENC28J60
974     B1)
975     -Explorer 16 rev. 4 (PIC24FJ128GA010 ES and dsPIC33FJ256GP710 ES) + Ethernet PICtail+
976     Daughter card (ENC28J60 B1).
977     3. Notes:
978     -MPLAB 7.31.01 is a development build. The publicly available version 7.31
979     should work fine, with the exception of being unable to program dsPIC33 and PIC24H
980     parts with the ICD 2.
981     -No dsPIC30 or PIC24H parts have been tested yet.
982    
983     Known Problems:
984     1. MPFS utility has not been updated. When creating a .c image file, the include path
985     for the compiler.h file will be incorrect and need to be manually updated.
986     2. When an MPFS .c image file is added to a C30 project, a linking error reporting
987     insufficient contiguous .const memory may occur.
988     3. On the PIC24FJ128GA010, it is observed that some inbound packets are lost from time
989     to time with no anticipated reason.
990     4. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested and
991     possibly do not work.
992     5. SNMP, TFTPc, SLIP modules have not been tested with this version.
993     6. Serial numbers >32K will be displayed on the serial port as a negative value when
994     C18 is used and the board is placed in configuration mode (RB0 button is depressed
995     on power up).
996     7. IP Gleaning may not get disabled when, through the RS232 configuration application,
997     DHCP and IP Gleaning are disabled.
998     8. The IP address being outputted out the RS232 port and through the Announce module
999     does not happen when the IP address is configured using IP Gleaning.
1000     9. Multiple TX buffer support is not fully inplemented in the MAC layer, ENC28J60.c.
1001     Stack behavior when TCP_NO_WAIT_FOR_ACK is undefined may be unexpected.
1002    
1003    
1004    
1005     ********
1006     v3.02.00: 20 Feb 2006
1007     ********
1008     Fixes:
1009     1. Changed TXSTART in ENC28J60.c to stop wasting a byte.
1010     2. Changed RXSTOP in ENC28J60.c to always be an odd value to properly implement an
1011     ENC28J60 silicon errata workaround.
1012     3. Changed initialization of ERXRDPT in MACInit() to agree with the current errata.
1013    
1014     Changes:
1015     1. Licence agreement
1016     2. Schematics and other board files to the Ethernet PICtail Daughter Board have been
1017     updated to revision 5. Of significant note, the nRESET pin has been freed and
1018     200 ohm resistors were added to the ENC28J60 SI, nCS, and SCK pins. The added
1019     resistors reduce undershoot caused by stray trace inductance and strong host output
1020     drivers.
1021    
1022     Known Problems:
1023     1. Testing on the PICDEM.net demo board with the Realtek RTL8019AS Ethernet controller
1024     has not been done. Moving to the HPC Explorer demo board has resulted in pinout
1025     and other hardware changes.
1026     2. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested and
1027     possibly do not work.
1028     3. SNMP, TFTPc, LCD, SLIP modules have not been tested with this version.
1029     4. The stack may behave incorrectly if compiled using the Hitech compiler with a high
1030     optimizations setting.
1031     5. Serial numbers >32K will be displayed on the serial port as a negative value when
1032     C18 is used and the board is placed in configuration mode (RB0 button is depressed
1033     on power up).
1034     6. IP Gleaning may not get disabled when, through the RS232 configuration application,
1035     DHCP and IP Gleaning are disabled.
1036     7. The IP address being outputted out the RS232 port and through the Announce module
1037     does not happen when the IP address is configured using IP Gleaning.
1038     8. Multiple TX buffer support is not fully inplemented in the MAC layer, ENC28J60.c.
1039     Stack behavior when TCP_NO_WAIT_FOR_ACK is undefined may be unexpected.
1040    
1041    
1042     ********
1043     v3.01.00: 18 Jan 2006
1044     ********
1045     Fixes:
1046     1. Implemented latest ENC28J60 silicon errata workarounds.
1047     2. Fixed a bug in TCP.c and UDP.c which would incorrectly write the packet checksum
1048     into the RX buffer incorrectly when the checksum field was exactly spanning the RX
1049     wrapparound boundary in the ENC28J60. This problem would have caused packets to be
1050     discarded in rare circumstances
1051    
1052    
1053     Known Problems:
1054     1. Testing on the PICDEM.net demo board with the Realtek RTL8019AS Ethernet controller
1055     has not been done. Moving to the HPC Explorer demo board has resulted in pinout
1056     and other hardware changes.
1057     2. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested and
1058     possibly do not work.
1059     3. SNMP, TFTPc, LCD, SLIP modules have not been tested with this version.
1060     4. The stack may behave incorrectly if compiled using the Hitech compiler with a high
1061     optimizations setting.
1062     5. Serial numbers >32K will be displayed on the serial port as a negative value when
1063     C18 is used and the board is placed in configuration mode (RB0 button is depressed
1064     on power up).
1065     6. IP Gleaning may not get disabled when, through the RS232 configuration application,
1066     DHCP and IP Gleaning are disabled.
1067     7. The IP address being outputted out the RS232 port and through the Announce module
1068     does not happen when the IP address is configured using IP Gleaning.
1069     8. Multiple TX buffer support is not fully inplemented in the MAC layer, ENC28J60.c.
1070     Stack behavior when TCP_NO_WAIT_FOR_ACK is defined may be unexpected.
1071    
1072    
1073     ********
1074     v3.00.00: 16 Jan 2006
1075     ********
1076     Changes:
1077     1. The stack now targets the PICDEM HPC Explorer demo board (PIC18F8722 MCU) with an
1078     attached Ethernet PICtail Daughter Board (with the Microchip ENC28J60 Ethernet
1079     controller).
1080     2. IP Gleaning is no longer enabled (STACK_USE_IP_GLEANING is not defined) by any of
1081     the default project files.
1082     3. The IP address, whenever it changes, is outputted out the RS232 serial port in
1083     human readable form. Any terminal program, such as HyperTerminal can be used to
1084     read it. This allows the IP address to be easily determined when DHCP is used.
1085     The serial port defaults to 19200 baud when CLOCK_FREQ in Compiler.h is properly
1086     defined.
1087    
1088    
1089     Additions:
1090     1. Microchip ENC28J60 Ethernet controller support. Support is included through the
1091     ENC28J60.c and ENC28J60.h files. Various other files were modified to take
1092     advantage of ENC28J60 specific features, like the hardware DMA/IP checksum engine.
1093     This new MAC driver incorporates several new functions which can be called from any
1094     layer above the MAC. The functions are:
1095     MACSetDuplex()
1096     MACPowerDown()
1097     MACPowerUp()
1098     MACSetPMFilter()
1099     MACDisablePMFilter()
1100     CalcIPBufferChecksum()
1101     MACCalcRxChecksum()
1102     MACCalcTxChecksum()
1103     MACCopyRxToTx()
1104     See the ENC28J60.c file comments for function descriptions. The ENC28J60.c file
1105     also incroporates TestMemory() which can do a power on self test of various hardware
1106     functions. TestMemory() is included and used when MAC_POWER_ON_TEST is defined in
1107     StackTsk.h. It is undefined by default. Defining it will require some program
1108     memory.
1109     2. Announce module. Announce.c and announce.h have been added. When included in the
1110     project, STACK_USE_ANNOUNCE must be defined. This module will broadcast a UDP
1111     message to port 30303 containing the local MAC address whenever the local IP
1112     address changes. This addition is intended to facilitate device discovery on DHCP
1113     enabled networks and eliminate the need for an RS232 connection if board
1114     reconfiguration is not needed. To retrieve the UDP message on your computer, use
1115     the new MCHPDetect.exe program included in the \MCHPDetect subfolder.
1116     3. The spieeprom.c file was added to support SPI EEPROM chips for MPFS storage.
1117     ENC28J60.c and spieeprom.c may both be included and they will share the same SPI
1118     module.
1119    
1120    
1121     Improvements:
1122     1. Renamed files/edited files so that the HI-TECH compiler won't raise messages stating
1123     that include files were spelled wrong.
1124     2. Moved MAX_ICMP_DATA_LEN from StackTsk.c to ICMP.h file for easier maintenance.
1125     3. Corrected STACK_USE_SIIP typo in dhcp.c file - Thanks to Gisle J.B.
1126     4. Implemented UDP checksum logic in UDPProcess() in UDP.c file.
1127     5. Renamed CalcTCPChecksum() in tcp.c file to CalcIPBufferChecksum().
1128     6. Moved CalcIPBufferChecksum() to helpers.c to reuse it for UDP checksum calculation.
1129     7. Modified UDPProcess() in UDP.c and TCPProcess() in TCP.c to include localIP as third
1130     new parameter. This makes pseudo header checksum calculation correct in both
1131     functions. StackTsk.h, UDP.h and TCP.h files were also modified to reflect these
1132     changes.
1133     8. Modified TCP.C file to include compile-time check of STACK_USE_TCP define. If it is
1134     not defined, an error will be displayed.
1135     9. Removed an unnecessary call to MACDiscardRx() when an IP packet is received but
1136     fails version, options length, or header checksum tests.
1137     10. Changed LCD code to be compile time removable by undefining USE_LCD.
1138    
1139    
1140     Fixes:
1141     1. IPHeaderLen in IP.c is initialized properly now when IPGetHeader() is called.
1142     2. Under some circumstances, HandleTCPSeg() would acknowlege, but throw valid received
1143     TCP packets away, resulting in loss of application data. An invalid comparison in
1144     HandleTCPSeg() has been fixed to prevent this situation from occuring.
1145     *** Thanks go to Richard Shelquist for identifying this problem.
1146     3. Fixed StackTsk.c file so that if a static IP address is used and the LINK is
1147     removed, the node IP address is not cleared.
1148     4. Invalid ICMP echo replies are no longer generated for echo requests with a data
1149     length of 33 (one more than the configured maximum).
1150     5. Changed MAX_OPTIONS_LEN from 20 to 40. The maximum IP options length is now in
1151     agreement with the IP RFC.
1152     6. Changed IPSetRxBuffer() from a macro to a function. The function takes into
1153     account any options which may be present in the header of received IP packets.
1154     Previously, possible options were not taken into account when calculating the
1155     offset.
1156    
1157    
1158     Known Problems:
1159     1. Testing on the PICDEM.net demo board with the Realtek RTL8019AS Ethernet controller
1160     has not been done. Moving to the HPC Explorer demo board has resulted in pinout
1161     and other hardware changes.
1162     2. Sometimes when the FTP sever is used, an attempt to put a file is unsuccessful.
1163     The problem may be caused when an HTTP request to GET a file is made at the wrong
1164     time.
1165     3. MACSetPMFilter(), MACDisablePMFilter(), and MACCopyRxToTx() have not been tested and
1166     possibly do not work.
1167     4. SNMP, TFTPc, LCD, SLIP modules have not been tested with this version.
1168     5. The stack may behave incorrectly if compiled using the Hitech compiler with a high
1169     optimizations setting.
1170     6. Serial numbers >32K will be displayed on the serial port as a negative value when
1171     C18 is used and the board is placed in configuration mode (RB0 button is depressed
1172     on power up).
1173     7. IP Gleaning may not get disabled when, through the RS232 configuration application,
1174     DHCP and IP Gleaning are disabled.
1175     8. The IP address being outputted out the RS232 port and through the Announce module
1176     does not happen when the IP address is configured using IP Gleaning.
1177     9. Multiple TX buffer support is not fully inplemented in the MAC layer, ENC28J60.c.
1178     Stack behavior when TCP_NO_WAIT_FOR_ACK is defined may be unexpected.
1179    
1180    
1181    
1182     ********
1183     v2.20.04.01: 9/24/03
1184     ********
1185     1. Recreated MPLAB projects to avoid problems when source is not at \MCHPStack location.
1186    
1187    
1188     ********
1189     v2.20.04: 9/5/03
1190     ********
1191     Fixes:
1192     1. Modified DHCPReset() in DHCP.c to not reset DHCP state machine if it was previously
1193     disabled using DHCPDisable(). This would make sure that if DHCP module was enabled
1194     and application had run-time disabled DHCP and network cable is disconnected,
1195     stack will not clear its IP address.
1196    
1197     2. Rebuilt mib2bib.exe file with static library options. This fixes problem where
1198     one tries to execute this exe, an error occurs about missing DLLs.
1199    
1200    
1201     ********
1202     v2.20.03:
1203     ********
1204     Improvements:
1205     1. When DHCP is enabled, LINK is monitored and IP address is reset on disconnect.
1206     New IP configuration is obtained on LINK reconnect. - For RealTek only.
1207     Modified DHCP.c to add DHCPReset()
1208     Modified MAC.c to add MACIsLinked()
1209     Modified StackTsk.h to add BYTE_VAL def.
1210    
1211     Changes:
1212     1. Modified SMSC91c111.c to add empty MACIsLinked() - will be populated in next rev.
1213    
1214     Bug Fixes:
1215     1. Corrected DHCP logic to accept first DHCP offer instead of second response.
1216     2. Corrected DHCP logic to check for chaddr in DHCP offer and accept one that
1217     matches with local MAC address. This will fix problem where if multiple
1218     nodes were on bus and all requested DHCP address, all would accept response
1219     from one server instead of verifying who was intended node.
1220     3. Fixed UDPClose() in UDP.c to use INVALID_UDP_PORT instead of INVALID_UDP_SOCKET
1221     because of which a closed socket would not be scanned correctly.
1222     4. Modified UDP.h to use long contsant designators for INVALID_UDP_OPRT
1223     to explicitly state that it is a long.
1224    
1225    
1226    
1227     ********
1228     v2.20.02:
1229     ********
1230     Beta version containing TFTP client module.
1231    
1232     Addition:
1233     1. TFTP Client module - See TFTPc.* and TFTPcDemo.c for more information.
1234     See MpTFTPcDemo and HtTFTPcDemo projects for build information.
1235    
1236     Bug Fix:
1237     1. UDPIsGetReady() was modified to overcome compiler rule where only 8-bit value was
1238     used to evaluate non-zero condition.
1239     2. ARPResolve() in ARPTsk was fixed to clear Cache.IPAddr value.
1240    
1241     ********
1242     v2.20.01:
1243     ********
1244     Bug fix:
1245     1. Fixed SMSC91C111.c where MACInit() would hand if ethernet link is not detected.
1246    
1247    
1248     ********
1249     v2.20:
1250     ********
1251     Bug Fixes:
1252     1. General - Removed most of harmless warnings.
1253     2. C18Cfg.asm - Fixed "include" instead of "define".
1254     3. DHCP.c - Increased DHCP_TIMEOUT_VAL to 2 seconds.
1255     Fixed problem where UDP active socket was not set before calling UDP
1256     functions
1257     in SM_DHCP_BROADCAST state.
1258     4. MAC.c - Fixed MACIsTxReady() where under heavy traffic it would always return
1259     FALSE.
1260     This fixes bug where all high level applications would stop
1261     transmitting.
1262     5. TCP.c - Enabled portion of code that performs timeout logic even if
1263     TCP_NO_WAIT_ACK
1264     is defined. This fixes bug where occasionally, tcp applications such as
1265     HTTP server would stop working after few hours.
1266     6. UDP.c - Fixed UDPGet() where it would return FALSE on last good byte.
1267     Fixed UDPProcess() where it was calculating incorrect length.
1268    
1269     Added bFirstRead flag with UDP sockets similar to TCP sockets
1270     so that whenever first UDP byte is read, MAC read pointer will be
1271     reset to begining of correct packet.
1272     This change fixes problem where if one transmits a packet while
1273     UDP packet is pending in a socket, next get to pending UDP socket would
1274     return wrong data. (This is apparent only when there is heavy network
1275     traffic)
1276    
1277     Known Issues:
1278     1. HiTech v8.20 PL4 with all optimization enabled may not work properly.
1279     2. C18 "Static" and "Auto" mode may not be used - there are too many local variables to
1280     fit
1281     in standard stack of 256 bytes. One may modify linker script file to avoid this
1282     limitation.
1283    
1284    
1285    
1286     Improvements:
1287     1. Modified TICK def. in Tick.h to unsigned long to support 32-bit wide SNMP tick.
1288     2. Added SNMP Module (SNMP.c)
1289     3. Added Two new demo projects - DemoSNMPApp and HtDemoSNMPApp.
1290     4. Created MPLAB 6.X projects for different demo configurations.
1291     5. MAC.c - Added MACGetTxOffset().
1292     6. MPFS.c - Added MPFSSeek(), MPFSTell().
1293     7. MPFSImg.*- Rebuilt to reflect v2.20, footprint changes etc.
1294     8. StackTsk.h- Enhanced WORD_VAL, DWORD_VAL defs.
1295     Added STACK_USE_SNMP and related compile-time checks.
1296     9. UDP.h - Added UDPSetTx and UDPSetRx macros.
1297     Moved UDP_SOCKET_INFO structure to header file.
1298     10. WebSrvr.c- Modifed MCHPStack version message and added DATE info to BoardSetup
1299     menu.
1300     11. Added support for SMSC LAN91C111 10/100 Non-PCI ethernet controller
1301     Use "SMSC91C111.C" instead of MAC.c.
1302     "mpnicee_smsc" is a sample project that uses PIC18F8720 and SMSC NIC.
1303     "MasterDemo.c" is a main source file for above project that includes
1304     all modules - must use device with more than 32KB of memory.
1305    
1306    
1307    
1308    
1309     ********
1310     v2.11:
1311     ********
1312     Bug Fixes:
1313     1. Fixed dhcp.c to make it work with new C18 startup code.
1314    
1315     Improvements:
1316     1. Modified websrvr.c DownloadMPFS() to make use of compiler allocated XMODEM data block
1317     rather than use fixed address block starting at 0x400.
1318    
1319    
1320     ********
1321     v2.10: 7/9/02
1322     ********
1323     Bug Fixes:
1324     1. Fixed HTTP Server bug where a form submission with empty parameter value would not
1325     parse correctly.
1326    
1327    
1328    
1329     ********
1330     v2.0: 5/22/02
1331     ********
1332    
1333     ********
1334     New Modules:
1335     ********
1336     1. Added UDP, DHCP, FTP and IP Gleaning
1337     2. Added PICDEM.net LCD support
1338     3. Added board setup through RS-232.
1339    
1340     ********
1341     Improvements:
1342     ********
1343     1. Optimized serial EEPROM access routines in terms of speed and size
1344     (Replaced ee256.* files with eeprom*.h)
1345     2. Improved board setup through RS-232.
1346    
1347     ********
1348     Known Issues:
1349     ********
1350     1. LCD may not display properly on MCLR only.
1351     Workaround: 1. Debug XLCDInit() routine in "xlcdlh"
1352     2. Always do POR reset.
1353    
1354     2. SLIP connection is not very robust.
1355     Workaround: None at this time.
1356    
1357     3. Hi-Tech Compiler:
1358     1. Aggressive optimization breaks the functionality.
1359     Workaround: Apply optimization listed in each source file comment
1360     header.
1361     2. In order to use V8.12, you will need to remove "FTP Server" from
1362     Ht*.pjt.
1363     You will also need to disable all optimizations.
1364    
1365     4. C18 Compler: 1. Static model does not compile.
1366     Workaround: None at this time.
1367     2. Overlay model breaks the functionality.
1368     Workaround: None at this time.
1369     3. All modules does not fit in 32KB memory.
1370     Workaround: 1. None at this time.
1371     2. Sample project disables some modules.
1372    
1373    
1374     ********
1375     New Files:
1376     ********
1377     ========================================================================================
1378     ====================================
1379     File Purpose
1380     ========================================================================================
1381     ====================================
1382     1. delay.* Provides CLOCK_FREQ depenent delay routines.
1383     2. dhcp.* DHCP client support
1384     3. ftp.* FTP server
1385     4. udp.* UDP socket support
1386     5. xeeprom.* Improved ee256.* and renamed.
1387     6. xlcd.* External LCD support.
1388     7. version.log To track changes and history.
1389    
1390    
1391     ********
1392     Changes:
1393     ********
1394     ========================================================================================
1395     ====================================
1396     File Change
1397     To-do for v1.0 stack applications
1398     ========================================================================================
1399     ====================================
1400     1. arptsk.c 1. Fixed STACK_CLIENT_MODE compile errors.
1401     None
1402     2. Modifed ARPIsResolved() to support IP Gleaning
1403     None
1404    
1405     2. c18cfg.asm 1. Added PIC18F452 configuration
1406     None
1407     2. Fixed "include" errors.
1408     None
1409    
1410     3. compiler.h 1. Included "stdlib.h" in both C18 and Hi-Tech compilers.
1411     None
1412     2. Moved CLOCK_FREQ from "stacktsk.h" to this file.
1413     None
1414     3. Added PORTA defs.
1415     None
1416    
1417     4. htnicee.pjt 1. Removed "ee256.c".
1418     None
1419     2. Added "udp.c", "dhcp.c", "ftp.c", "xlcd.c", "xeeprom.c" files
1420     Add these files if needed.
1421    
1422     5. htnicpg.pjt None
1423    
1424     6. htslee.pjt 1. Removed "ee256.c".
1425     None
1426     2. Added "ftp.c", "xlcd.c", "xeeprom.c" files
1427     None
1428    
1429     7. http.c 1. Included compile-time verification that HTTP module is included.
1430     None
1431     2. Put HTTP message strings into one array "HTTPMessages".
1432     None
1433     3. Modified to return "Service Unavailable" message if MPFS is being
1434     None
1435     remotely programmed.
1436     4. Modified SendFile() to make use of sequential EEPROM read.
1437     None
1438    
1439     8. ip.c 1. Added one more paramter to IPGetHeader() to support IP Gleaning
1440     Custom apps using IP needs to be
1441    
1442     modified.
1443    
1444     9. mac.c 1. Replaced fixed delay routines with CLOCK_FREQ dependent
1445     None
1446     routines
1447    
1448     10. mpfs.c 1. Replaced ee256.h with xeeprom.h.
1449     None
1450     2. Added MPFSFormat(), MPFSPut() etc. routines
1451     None
1452     3. Added sequential read and page write operations
1453     Custom apps using MPFS directly
1454    
1455     needs to be modified.
1456     4. Defined MPFS_WRITE_PAGE_SIZE for MPFSPut operations.
1457     Apps using different EEPROM page size
1458    
1459     needs to be modified.
1460    
1461     11. mpnicee.pjt 1. Removed "ee256.c"
1462     None
1463     2. Added "xcld.c", "xeeprom.c" files
1464     None
1465    
1466     12. stacktsk.c 1. Replaced ee256.h with xeeprom.h
1467     None
1468     2. Added IP Gleaning and DHCP support.
1469     None
1470    
1471     13. stacktsk.h 1. Moved CLOCK_FREQ to compiler.h
1472     None
1473     2. Added STACK_USE_DHCP, STACK_USE_FTP_SERVER etc. options
1474     None
1475     3. Added compile-time enable/disable of modules based on selection
1476     of higher level modules.
1477     None
1478     4. Modified MY_DEFAULT_MAC_BYTE? to use Microchip OUI id.
1479     None
1480     5. Added compiler-time check to confirm available TCP sockets
1481     None
1482     6. Added MSB and LSB macros.
1483     None
1484     7. Added SerialNumber etc. to AppConfig structure
1485     None
1486     8. Commented module selection defines: They are defined by cmopiler
1487     None
1488     command-line options.
1489     Real application should define them here in this file.
1490    
1491     14. tcp.c 1. Moved TCP_STATE and TCP_INFO to .h file.
1492     None
1493     2. Fixed TCPIsConnected()
1494     None
1495     3. Fixed TCPDisconnect()
1496     None
1497     4. Modified TransmitTCP() to set receive window of one segment
1498     None
1499     5. Modified TransmitTCP() to use max segment size equal to
1500     predefined value.
1501     None
1502     6. Improved TCP State machine
1503     None
1504    
1505     15. tick.c 1. Modified TICK type to 16-bit.
1506     None
1507     2. Made use of TICK_PRESCALE_VALUE
1508     None
1509     3. Added code to blink PICDEM.net "System LED"
1510     Remove if not required.
1511    
1512     16. websrvr.c 1. Added LCD support
1513     N/A
1514     2. Made TickUpdate() on Timer0 interrupt
1515     N/A
1516     3. Added code to save/restore board configuration
1517     N/A
1518     4. Added board setup via RS-232.
1519     N/A
1520     5. Added call to FTP modules
1521     If needed, add this.

  ViewVC Help
Powered by ViewVC 1.1.20