📄 tcpip stack version.txt
字号:
********
Microchip TCP/IP Stack Version Log:
********
Note: Please file bug-reports/bug-fixes at http://support.microchip.com/ or post
to the Microchip TCP/IP -> Ethernet Forum at http://forum.microchip.com/
Look for stack updates at http://www.microchip.com/tcpip/
********
v4.18 28 November 2007
********
Changes:
1. Added C32 and PIC32MX support. Some things were cleaned up in the process.
2. Removed linker scripts from C30 MPLAB projects. MPLAB IDE 8.00
can automatically select the correct linker script for 16-bit and 32-bit
products.
3. Updated TCPPerformanceTest.c module. Now it automatically calculates the TX
throughput and displays it for you. Also, there is now an RX throughput
testing mode, which listens on a separate TCP socket (port 9763) when a TCP
socket of type TCP_PURPOSE_TCP_PERFORMANCE_RX is allocated in TCPIPConfig.h.
The RX socket is by default not enabled to save memory, so you must create a
TCP_PURPOSE_TCP_PERFORMANCE_RX socket in TCPIPConfig.h and ensure that enough
memory is allocated to accommodate it to test the RX performance test. When
connected to port 9763, send a large amount of data and the PIC
microcontroller will send back a count of how many bytes were received per
second.
4. UDPPerformanceTest.c module now transmits 1024 packets on start up and then
stops to prevent continually broadcast flooding your network. To transmit
more packets after 1024 is reached, hold down BUTTON3 (left-most button on
most boards).
5. Significantly improved the speed of the MD5 and SHA-1 functions. Gains for
the 8-bit compilers were 50-75%, while 16-bit parts saw more modest
improvements (~10%).
6. Reimplemented TCP_CLOSE_WAIT TCP state ("CLOSE WAIT" in RFC793). Now, TCP
sockets that receive a FIN from the remote node will hold off transmitting
a FIN back to the remote node until the TCP_CLOSE_WAIT_TIMEOUT (defined at
the top of TCP.c) elapses or immediately when the application calls the
TCPDisconnect() function. This makes it possible for the application to
transmit a response back to the remote node before the socket becomes closed
on our end. Similarly, it simplifies application usage of the last RX bytes
received as these bytes are now assured to still be in the RX FIFO for at
least TCP_CLOSE_WAIT_TIMEOUT seconds. TCP_CLOSE_WAIT_TIMEOUT defaults to
200ms in this stack version.
7. Pushed the SNTP requery on failure timeout up some. It was ~14 seconds and
is now ~20 seconds.
8. Added TFTPOpenROMFile() API to complement TFTPOpenFile() when using PIC18
products.
9. Added a fourth parameter to newAJAXCommand() in mchp.js, allowing data to be
POSTed along with the AJAX request.
10.Deprecated the TCP Loopback functions, which includes TCPOpenLoopback,
TCPCloseLoopback, TCPIsLoopback, TCPInject, and TCPSteal. These functions
were added in 4.10 for future SSL support, but have since become
unnecessary. They are of limited usefulness, and so are being removed to save
code space. The functions are still available in this version, but will
be removed in the next release.
11.Added SMTPClient.ServerPort field to the SMTP API. This allows the remote
server port number to be specified dynamically at run time instead of being
hard coded to the SMTP_PORT value defined at the top of SMTP.c. SMTP_PORT is
now only a default.
12.Added web interface to the SMTP module in the TCPIP Demo App applications.
You can now configure the SMTP module and send emails directly from within
your web browser. The HTTPPostEmail() function in CustomHTTPApp.c also
demonstrates how to send MIME encoded attachments in emails. The default demo
will send button states, LED states, and the current potentiometer reading as
a CSV file attached to the email.
13.Changed SMTPDemo() in MainDemo.c to trigger on BUTTON2 and BUTTON3
simultaneously held down instead of BUTTON0 only.
Fixes:
1. Fixed an ENC28J60.c MACGetArray() bug which would overwrite one byte of memory
at address 0xFFFFFFFF if you provided NULL for the destination address pointer.
2. Fixed an MPFS2.c MPFSGet() bug which would overwrite memory address 0x00000000
if a NULL pointer was provided as the destination.
3. Fixed a bug in the HTTP2 server accessing incorrect sockets if an inadequate
number of sockets were available on POR.
4. Fixed Internet Bootloader project from failing with a timeout if an ARP packet
arrived during the Erase/Write operation.
5. Fixed DHCP client RFC non-compliance where it would send the ciaddr field in
the initial SELECTING state. Also, in the RENEWING state, the Requested IP
Address option was being sent, which is illegal. These changes may fix
compatibility problems with certain DHCP servers.
6. Fixed TFTP Client's TFTPCloseFile() function from sending data using a wrong
UDP socket if StackTsk() was called after TFTPIsFileOpened() was last called.
7. Added two zero bytes to the ICMP echo request payload to improve compatibility
with some buggy NAT routers.
Known Problems:
1. 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.
2. 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 reenable it's DHCP server.
3. 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.
4. MAC.h RXSIZE precompiler test for proper range doesn't work. This is not a
functional problem, just a compile-time configuration test. Ensure that you don't
over allocate TCP_ETH_RAM_SIZE or MAX_HTTP_CONNECTIONS.
********
v4.16 06 November 2007
********
Changes:
1. Added Internet Radio application. This is a TCP client application which
downloads streaming MP3 audio from a Shoutcast server and then plays it back to
stereo earphones via a VLSI VS1011 audio decoder.
2. Added SPIRAM.c module. This module is intended for interfacing to an AMI
Semiconductor N256S0830HDA SPI RAM chip. The TCP module can now interface
directly to this SPIRAM module to store TCP socket FIFO buffers and other TCB
data in the external RAM.
3. Added TCP_OPTIMIZE_FOR_SIZE compile time configuration macro to TCP.c file. When
optimizing for small code size, the TCP module ROM footprint shrinks up to 6KB,
but performance may slow down on some processors (namely PIC18s, where the
penalty is approximately 15%).
4. Added USE_EEPROM_25LC1024 compile time configuration macro to TCPIPConfig.h.
Enable this definition if you are storing your MPFS[2] on a 1Mbit 25LC1024 or
similar EEPROM device that uses 24-bit addressing and a 256 byte write page size.
5. Changed LCDBlocking.c module initialization code. It should now be possible to
use 4-bit mode on certain "unusual" LCD controllers, like the Samsung S6A0032.
Most PICDEM.net 2 and Explorer 16 boards use an LCD with this controller.
6. SNTP client now attempts to requery the SNTP server about every 14 seconds if the
last query attempt fails. This allows the internal time value to become valid
quickly should the board be powered up before an Ethernet cable is attached or if
the DHCP client doesn't obtain an IP address quickly enough. Previously, it would
take up to 10 minutes after plugging the Ethernet cable in to get a correct time
value from the SNTP server.
7. Added UDP_USE_TX_CHECKSUM compile time configuration macro to TCPIPConfig.h.
When enabled, all UDP packets will have a correct UDP checksum computed and
inserted into the UDP header of outbound packets. If you do not define this
macro, the UDP checksum will be disabled (left as 0x0000), which is how previous
stack versions operated. Note that enabling checksum generation cuts your
maximum UDP TX throughput by nearly half due to the required computations.
8. Substantially changed TCP socket RX and TX FIFO allocation. Now, sockets can be
stored either in Ethernet RAM, PIC RAM, or external (SPI) RAM. Previously,
sockets could only be allocated in Ethernet RAM, which was not scalable.
9. Added TCPOpen() API function. This replaces TCPListen() and TCPConnect().
TCPOpen() supports a large number of options that will make the creation of
client mode sockets much easier. You can specify the remote node as a hostname
that needs DNS and ARP resolution, an IP address that only needs ARP resolution,
or legacy NODE_INFO pointer for direct compatibility with the previous
TCPListen() and TCPConnect() APIs. TCPOpen() also supports a socket type
parameter which will allow you to use the new TCP socket RAM allocation system.
10.Added TCP Keep Alive mechanism defined by RFC 1122 section 4.2.3.6 to the TCP
module. This helps automatically detect lost connections. If the remote node
sends back an RST, this immediately closes the lost connection on our end.
Currently, no action is taken if the keep alive gets no response. Note that this
feature deviates from the standard by defaulting to only 10 seconds instead of
over 2 hours. Also deviating from the standard, this feature is enabled by
default. To disable it, undefine TCP_KEEP_ALIVE_TIMEOUT at the top of TCP.c.
11.Moved TCPPerformanceTest.c module from default port 12345 to 9762.
12.Moved UDPPerformanceTest.c module from default port 12345 to 9, the "discard"
protocol port.
Fixes:
1. The DHCP client now specifically requests the previous IP address when a DHCP
renewal occurs.
2. The SNTP client now correctly maintains time when repetitively calling
SNTPGetUTCSeconds() between an NTP requery event. Thanks go to Rob Haverkort on
the Microchip Ethernet forum for noticing the time value incrementing far faster
than it should have.
3. TCP module will not transmit a bunch of unnecessary duplicate ACK packets when
data is ready to be transmitted but the remote RX window is zero. This previously
didn't cause anything to break, but would waste CPU time and bandwidth sometimes.
4. TCP sockets will no longer automatically close if the remote RX window stays zero
for several seconds.
5. Fixed TFTP Internet Bootloader project from corrupting the configuration fuses.
Previously, this would result in the Watchdog timer being enabled and causing an
unintentional reboot every few minutes with the demo TCP/IP stack.
Known Problems:
1. 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.
2. TFTPc module has not been tested with this version.
3. 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 reenable it's DHCP server.
4. 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.
5. MAC.h RXSIZE precompiler test for proper range doesn't work. This is not a
functional problem, just a compile-time configuration test. Ensure that you don't
over allocate MAX_TCP_SOCKETS, TCP_TX_FIFO_SIZE, TCP_RX_FIFO_SIZE, or
MAX_HTTP_CONNECTIONS.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -