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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 15 - (show 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 ********
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