📄 tcpip stack version.txt
字号:
14.Changed UDPIsPutReady() to return a WORD instead of a BOOL. The WORD is the
number of bytes that can be put into the buffer.
15.Changed MACGetArray() to accept a NULL pointer. If NULL, the retrieved data
will simply be discarded. This also changes the behavior of UDPGetArray()
and TCPGetArray() to match, throwing bytes away if a NULL pointer is given.
16.Added a very simple DHCP Server module. This module has limitations and is
useful for a single client only. Its purpose is to allow you to directly
connect the board to a standard PC through a crossover cable (no other
network nodes attached). The server is coded to automatically disable
itself if the DHCP client is also enabled and another DHCP server is
detected on the network. This allows both the DHCP server and DHCP client
to coexist without any manual reconfiguration.
17.Added DNSResolveROM() function for resolving host names that are stored in
program memory, ex: literal strings.
18.Added a TCP automatic transmit/window update timer. It defaults to
TCP_AUTO_TRANSMIT_TIMEOUT_VAL (40ms) after the first get or put operation
following the last automatic transmit/window update. This timer enhances
performance, especially when streaming data over the Internet where round
trip times can be several tens to low hundreds of milliseconds. This also
improves application coding flexibility as TCPFlush() need not be called
anymore.
19.Added TCP delayed ACKnowledgement timer. This conserves bandwidth by
transmitting fewer ACKs and prevents inadvertently influencing remote slow
start/collision avoidance and fast retransmit algorithms.
20.Completely rewrote ICMP (ping) server module. It is now much smaller (ROM
and RAM), faster, and can handle packets of 576 bytes or larger, if no IP
fragmentation occurs.
21.Rewrote StackTsk() stack manager. It is much simpler now.
22.Added TCPFind(), TCPFindArray(), and TCPFindROMArray() user API functions.
These functions peek inside a given TCP socket's RX FIFO (without removing
anything) and looks for a particular byte or array of bytes. This should
greatly simplify the creation of application code whenever variable length
fields are used (ex: text strings terminated by \r\n). It supports case
insensitive text searching or binary searching, as well as an offset to
start searching at.
23.Added TCPGetRxFIFOFree() user API. It returns the number of bytes of free
space in the TCP's RX FIFO.
24.Changed default TICK resolution to 1ms (from 10ms) and improved accuracy.
25.Added outbound ping capabilities (i.e. board can now ping another board or a
PC). To enable these features, define STACK_USE_ICMP_CLIENT. This will
enable several new APIs, including ICMPBeginUsage(), ICMPSendPing(),
ICMPGetReply(), and ICMPEndUsage(). The functions should be called in this
order. See the PingDemo() function in MainDemo.c for an example of how to
use them. By default, pushing BUTTON3 (left-most one) will cause a ping to
be sent to 4.78.194.159 (ww1.microchip.com). The response time will be
displayed on the LCD (assuming your development board has an LCD).
26.Cleaned up C30 3.00 signed/unsigned warnings.
27.Removed PIC18F97J60_TEST_BOARD hardware profile support. This stack no
longer supports it due to the old beta silicon (with errata) mounted on
these boards.
28.Added support for ROM pointers for all of the SMTP strings (To, From, CC,
Subject, etc.). If you use a ROM string, you must also set the
corresponding SMTPClient.ROMPointers.xxx bit to let the SMTP module know
which type of pointer was provided. See the SMTPDemo() code in MainDemo.c
for and example calling sequence using both ROM and RAM strings for the
various fields.
Fixes:
1. Fixed a critical TCP buffer corruption issue where the start of a TCB header
overlapped with the last byte of the RX FIFO from the previous socket. This
bug affected version 4.00RC only.
2. ETH97J60.c, TCPIP.h, and TCPIP Stack Version.txt were correctly readded to
the TCPIP Demo App-C18 project using relative paths instead of absolute
paths.
3. UDPOpen() now dynamically assigns a local port number if you call it and
give it a 0x0000 port number. This should fix some UDP applications from
not working (ex: DNS Client module) with some computers/routers/networks
which throw away traffic originating from the invalid port 0x0000 value.
4. Fixed a ENC28J60 bank selection error that would occur if an application
called GetCLKOUT() in ENC28J60. By default, this function is not called.
5. UnencodeURL() function in Helpers.c is now tested and working.
6. Fixed a TCP Window Update problem when TCPGetArray() was used. Before the
problem was fixed, performance could have been terrible on reception.
7. Fixed a unintended TCP connection close if the socket was idle for about a
minute. Now, TCP sockets will remain open indefinitely if there is no
traffic going on.
8. Serial numbers >32K are now displayed correctly on the serial port as a
positive value when C18 is used and the board is placed in configuration
mode (BUTTON0 is depressed on power up).
9. HI-TECH PICC-18 compiler would previously incorrectly initialize the
AppConfig structure.
10.Previously a processor reset was possible when accessing items in the
AppConfig strucutre on 16 bit MCUs (PIC24, dsPIC) due to unaligned word
accesses. This was fixed by reordering the Flags byte in the APP_CONFIG
structure.
11.Rewrote DHCP client state machine, fixing the previously known problem
where it would not perform a new discovery if it was trying to renew a lease
with an offline DHCP server.
12.Fixed a critical deadlock problem in the ETH97J60.c MAC layer driver for
the PIC18F97J60 family Ethernet controller. Previously, it was possible
(although rare) that the DMAST or TXRTS bits would get stuck set if too
much Ethernet traffic was received within a short interval. Previously, the
MACFlush() function was unnecessarily setting TXRST, which it should not do
while the Ethernet interface or DMA is being used.
13.Fixed an HTTP server state machine problem where a new connection occurring
too soon on a previously used socket could cause the HTTP server to no
longer respond.
14.Fixed a potential memory corruption error in the HTTPGetVar() callback
which would exceed the bounds of the VarString array when returning the
VAR_STACK_DATE variable.
15.Fixed a TCP transmission sequence tracking problem whenever data is
retransmitted and new unflushed data is also in the TX FIFO. Thanks go to
Matt Watkins on the Microchip Ethernet forum for identifying this issue.
Known Problems:
1. RTL8019AS MAC layer driver has not been updated for new TCP module. Users
requiring RTL8019AS support should continue to use stack version 3.75.
2. I2CEEPROM.c has not been tested or completed. Continue to use I2CEEPROM.c
from stack version 3.75 if this file is needed.
3. Telnet server module does not implement a lot of Telnet functions. As a
result, it will likely not display correctly or work at all with some Telnet
clients. The server was tested with the Microsoft telnet.exe utility which
is provided with Microsoft Windows.
4. TFTPc module has not been tested with this version.
5. The default demo web pages which use AJAX do not automatically refresh
themselves when viewed in Firefox 2.0.0.1. Earlier Firefox versions
(1.5ish) probably work without any problem.
6. Files may be inaccessible in your MPFS if compiled with C18 for internal
flash program memory and your total MPFS content is large (around 64KB or
larger). The code attempts to access the ROM memory using a near rom
pointer when a far rom pointer is needed.
7. If using MPLAB 7.52 all .s files that are compiled with C30 will not have
the corresponding object file get stored in the correct directory. As a
result, if you are compiling with C30 and with MPFS_USE_EEPROM not defined
(i.e. storing web pages in internal program memory), the project won't link
(throws a undefined reference to `MPFS_Start'). As a workaround, remove the
Intermediates Directory in the MPLAB project. Alternatively upgrade MPLAB
to a newer version. MPLAB IDE 7.60+ may have this fixed.
8. If the DHCP client and DHCP server are used at the same time and you connect
two similar boards to each other (ex: two PICDEM.net 2 boards connected via
a crossover cable), a race condition can occur where both nodes will disable
their DHCP server and neither board will get a successful DHCP lease. If
this unlikely scenario occurs, as a work around, simply reset one of the
boards to renable it's DHCP server.
9. HI-TECH PICC-18 projects may not compile when MPFS_USE_EEPROM is not
defined and you are trying to store web page data in internal
FLASH program memory.
10.HI-TECH PICC-18 projects may not compile when targeting the external
ENC28J60 chip on the PICDEM.net 2 development board (instead of the
internal Ethernet controller). This problem only applies when a
PIC18F97J60 family part is the target. I.e. it compiles correctly for the
HPC_EXPLORER + Ethernet PICtail.
Testing and Performance Notes:
1. This stack version was compiled and tested with the following tool versions:
-MPLAB IDE 7.52
-Microchip C30 version 3.00
-Microchip C18 version 3.10
-HI-TECH PICC-18 version 9.50PL3
2. Using the UDPPerformanceTest.c module, the stack can transmit around
220KBytes/second (1.75Mbits/second) of UDP application data on the
PIC18F97J60 with internal Ethernet @ 41.66667MHz core clock, compiled using
C18 3.10 with debug optimization settings.
3. Using the UDPPerformanceTest.c module, the stack can transmit around
392KBytes/second (3.14Mbits/second) of UDP application data on the
PIC24HJ256GP610 with external ENC28J60 @ 40 MIPS, compiled using
C30 3.00 with debug optimization settings.
4. Using the TCPPerformanceTest.c module, the stack can transmit around
58KBytes/second (464Kbits/second) of TCP application data on the
PIC18F97J60 with internal Ethernet @ 41.66667MHz core clock, compiled using
C18 3.10 with debug optimization settings, over Ethernet when using a tiny
200 byte TX TCP FIFO. Note that performance can be improved significantly
by increasing the FIFO size and performance will drop significantly if the
round trip TCP acknowledgement time is increased (ex: testing over the
Internet instead of Ethernet).
5. Using the TCPPerformanceTest.c module, the stack can transmit around
69KBytes/second (558Kbits/second) of TCP application data on the
PIC24HJ256GP610 with external ENC28J60 @ 40 MIPS, compiled using
C30 3.00 with debug optimization settings, over Ethernet when using a tiny
200 byte TX TCP FIFO. Note that performance can be improved significantly
by increasing the FIFO size and performance will drop significantly if the
round trip TCP acknowledgement time is increased (ex: testing over the
Internet instead of Ethernet).
6. Using the TCPPerformanceTest.c module, the stack can transmit around
178KBytes/second (1.42Mbits/second) of TCP application data on the
PIC24HJ256GP610 with external ENC28J60 @ 40 MIPS, compiled using
C30 3.00 with debug optimization settings, over Ethernet when using a larger
2000 byte TX TCP FIFO. Note that performance will drop significantly if the
round trip TCP acknowledgement time is increased (ex: testing over the
Internet instead of Ethernet).
********
v4.00RC 28 December 2006
********
IMPORTANT NOTE: If an external serial EEPROM memory is used to store AppConfig,
it's contents will be invalidated the first time you run this
version, restoring the AppConfig defaults. The AppConfig
structure has been optimized.
IMPORTANT NOTE2: If an external serial EEPROM memory for MPFS, you will need to
recreate the MPFS image and program your EEPROM. A 32 bit
addressing format is now used.
Changes:
1. Added Simple Mail Transfer Protocol (SMTP) client module and updated
MainDemo.c to exercise the Email transmission functionality when a user
pushes BUTTON0.
2. Added beta Telnet server module. See Known Problems section.
3. Completely revamped the TCP module. A real transmit FIFO and receive FIFO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -