📄 tcpip stack version.txt
字号:
are allocated for each TCP socket now. This greatly enhances RFC compliance,
communications robustness, and makes application development easier. New
APIs were added for putting and getting arrays and strings (including ROM
variants). Several TCP related bugs are now fixed as a result. Please
report any bugs found in the new implementation.
4. Added TCPPutArray() API.
5. Added TCPPutROMArray() API.
6. Added TCPPutString() API.
7. Added TCPPutROMString() API.
8. Added TCPGetArray() API.
9. Changed TCPIsPutReady() API. Instead of returning a BOOL, it now returns a
WORD. The WORD is a count of the number of bytes that TCPPut(),
TCPPutArray(), etc. can immediately place in the output buffer. MAKE SURE
THAT YOUR CODE DOES NOT COMPARE THE RETURN RESULT OF TCPIsPutReady()
DIRECTLY TO TRUE. For example, "if(TCPIsPutReady(MySocket) == TRUE){...}"
must be converted over to: "if(TCPIsPutReady(MySocket)){...}".
10.Changed TCPIsGetReady() API. Instead of returning a BOOL, it now returns a
WORD. The WORD is a count of the number of bytes that TCPGet() or
TCPGetArray() can immediately obtain. MAKE SURE THAT YOUR CODE DOES NOT
COMPARE THE RETURN RESULT OF TCPIsGetReady() DIRECTLY TO TRUE. For example,
"if(TCPIsGetReady(MySocket) == TRUE){...}" must be converted over to:
"if(TCPIsGetReady(MySocket)){...}".
11.Changed TCPDiscard() return type from BOOL to void.
12.Removed TCP_NO_WAIT_FOR_ACK option. It was defaulted to disabled in the
last two releases of the stack and is not needed with the new TCP module.
13.Updated DNS module to include two new required APIs: DNSBeginUsage() and
DNSEndUsage(). These functions control a one bit ownership semaphore to
allow multiple applications to use the DNS module in series. If invoked
correctly, this will prevent unintended bugs resulting from two applications
trying to use the DNS module at the same time. Old applications, such as
those based around the GenericTCPClient.c example must be updated to use
these functions.
14.Started using a new project structure and folders. You must use MPLAB 7.41
or higher (stack is tested on MPLAB 7.50) to use the default
workspaces/projects, which include files using relative paths. This should
improve compatibility with some future code libraries released by Microchip.
StackTsk.h was broken into TCPIPConfig.h, HardwareProfile.h, and StackTsk.h.
TCPIPConfig.h now includes all stack configuration options and
HardwareProfile.h contains all hardware options. No macros need be globally
defined in MPLAB project now. TCPIP.h is the only header applications must
include now, for any/all modules used.
15.Combined ARP.c/ARP.h and ARPTsk.c/ARPTsk.h into a single file pair:
ARP.c/ARP.h. Applications built using a prior stack revision must remove
all instances including "ARPTsk.h" and replace it with "ARP.h" instead. The
ARP module is now simpler, more linear (easier to read), and being in one
source file, allows the C compiler to optimize better.
16.Added PIC18F67J60_TEST_BOARD hardware profile to HardwareProfiles.h. This
hardware profile is designed for 05-60091 (Rev 1), a development board that
is not in production at this time.
17.Added DSPICDEMNET1 and DSPICDEMNET2 hardware profiles to HardwareProfiles.h
for eventual support of the Microchip dsPICDEM.net 1 and dsPICDEM.net 2
demo boards. These two boards use the RTL8019AS Ethernet controller and a
24LC515 EEPROM. These changes are currently incomplete and these profiles
cannot be used.
18.Began rewriting I2CEEPROM.c to support 16 bit CPUs, including the
dsPIC30F6014 used on the dsPICDEM.net 1 and 2 demo boards. Note that work
here is incomplete and cannot be used as a result -- see Known Problems
section.
19.Partially updated RTL8019AS.c to support 16 bit CPUs, including the
dsPIC30F6014 used on the dsPICDEM.net 1 and 2 demo board. Note that work
here is incomplete and cannot be used as a result -- see Known Problems
section.
20.Updated SNMP.c to use new typedefs in GenericTypedefs.h. Also SNMP was
tested in this version. SNMP.mib was updated some to better reflect current
hardware.
21.Added AN870 SNMP callbacks to MainDemo.c (a feature that was missing in
3.xx releases). This code will get compiled when STACK_USE_SNMP_SERVER is
defined in TCPIPConfig.h.
22.Removed all instances of MPFS_USE_PGRM for storing in internal FLASH program
memory. Storage in internal program memory is now the default. Define
MPFS_USE_EEPROM to override the default and store MPFS in an external EEPROM
memory.
23.Decreased program memory needed for Announce.c module by about 180 bytes.
Multiple inline calls to UDPPut() were removed.
24.UDP checksum checking logic has been improved. The UDP layer now avoids
writing the pseudo header checksum in the RX buffer.
25.Swapped endianess of the returned checksum from CalcIPBufferChecksum().
Rewrote CalcIPBufferChecksum() in Helpers.c. This improves consistency.
26.Improved swapl() in Helpers.c.
27.Improved USART baud rate (SPBRG) calculation for PIC18s. Rounding is now
done to chose the most optimal value and the code will automatically select
high baud rate mode (BRGH=1) if possible. Additional improvements can be
made if using a newer PIC18 with the 16 bit baud rate generator.
28.Added GenericTCPServer.c example file to complement GenericTCPClient.c. The
server is enabled by defining STACK_USE_GENERIC_TCP_SERVER_EXAMPLE in
TCPIPConfig.h.
29.Renamed STACK_USE_GENERIC_TCP_EXAMPLE definition to
STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE for consistency with new server
example.
30.Defaulted MPFS.exe to generate binary MPFS images using 32 bit addressing.
MPFS.h has been modified to also default to use 32 bit addressing of
external EEPROM images. You must rebuild any old MPFS images and reprogram
them if upgrading from a previous TCP/IP stack revision, which defaulted to
use 16 bit addressing.
31.Updated MPFS.exe to #include "TCPIP.h" instead of "..\Headers\Compiler.h" in
C files generated by the utility.
32.Added MPFSv2.exe PC utility for generating large MPFS images in program
memory (ASM30 code) for C30 users. Previously, the C30 compiler placed a
limit of less than 32KB of total MPFS size due to the PSV window size
limitation on PIC24/dsPIC devices. To get around the limitation, use the
new MPFSv2.exe utility to generate an .s file which can be included in your
project instead of the .c file generated by the traditional MPFS.exe utility.
Fixes:
1. Fixed a bug in ARPProcess() which would incorrectly send an ARP response to
an incorrect MAC & IP address if a TX buffer wasn't immediately available.
2. Fixed a TCP bug where TCPIsGetReady() would return TRUE even if no data was
left in the recieved packet. Previously you had to call TCPGet() one last
time and have it fail before TCPIsGetReady() would return FALSE.
3. Modified TCP state machine. Established connections will no longer
automatically close if left idle for approximately 45 seconds. Note that
your application needs to ensure that no sockets unintentionally get lost
(For example: a server socket that received data only is established and the
cable breaks while connected. In this case, the socket would never be
detected as being disconnected since the server never attempts to transmit
anything).
4. Stopped overclocking dsPIC33 and PIC24H devices. Previously PLLFBD was
incorrectly set to 39 instead of 38 to yield a resulting Fosc of 84MHz
(42MIPS) instead of 80MHz (40MIPS) with the default Explorer 16 development
board. Thanks go to Matt Watkins on the Microchip Ethernet Forum for
pointing this error out.
5. Corrected a bug in IP.c where IPHeaderLen would not be properly initialized
if a NON_MCHP_MAC was used (ex: RTL8019AS) and IPSetRxBuffer() was called.
This bug did not affect ENC28J60 or PIC18F97J60 family support. Thanks go
to Darren Rook for identifying this issue.
6. Updated checksum checking code in ENC28J60.c for latest silicon DMA checksum
errata.
7. Declared TickCount in Tick.c/Tick.h as volatile and implemented an interrupt
safe reading procedure in TickGet(). Since this multibyte variable is
modified in the ISR and read in the mainline code, these changes are needed
to prevent rare inconsistency bugs.
8. Fixed Announce.c so the unicast remoteNode of the requesting packet would be
used rather than the remoteNode of the last received packet, which may not
be correct when transmitting. Thanks go to Brett Caulton for identifying
this issue.
9. Fixed a DHCP bug which would cause DHCP renewals to continually occur after
only 60 seconds once the original lease expired. Thanks go to Brett Caulton
for identifying this issue and fix.
10.Fixed a potential TCP socket leak in the FTP module. Previously
FTPDataSocket would not be reliably initialized nor closed if the connection
was killed forcefully (user killed application, cable disconnected while
transferring, etc.).
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 is still in development. No user authentication
features are currently implemented. Some telnet clients may render the
telnet server output incorrectly (in the wrong locations or wrong colors).
Testing has only been done with the Microsoft Windows telnet.exe utility
that comes Windows XP.
4. DHCP will continually send out DHCP Request packets when the lease expires and the
original DHCP server that gave the lease is offline. The board will continue to
use the expired IP address until the DHCP server comes back online, at which point
the lease will be renewed or a new discovery will occur. A new discovery should
occur after timing out, instead. It is believed that this problem has always
existed in previous stack revisions.
5. DHCP will continually send out DHCP Request packets when the lease expires and the
original DHCP server that gave the lease does not include Option 54, the Server
Identifier. A new discovery should occur after timing out. It is believed that
this problem has always existed in previous stack revisions.
6. TFTPc module has not been tested with this version.
7. Serial numbers >32K will be displayed on the serial port as a negative value when
C18 is used and the board is placed in configuration mode (RB0 button is depressed
on power up).
********
v3.75 14 August 2006
********
Changes:
1. Added beta DNS client module (DNS.c). DHCP was also updated to obtain a DNS
server address. Added AppConfig.PrimaryDNSServer IP address. Added STACK_USE_DNS
configuration macro. To use the DNS client, call DNSResolve() with the server name,
ex: DNSResolve("www.microchip.com"), and then periodically call DNSIsResolved()
until it returns TRUE, ex: DNSIsResolved(&IPAddressDestination). Only one DNS
resolution can be in progress at a time. Because the DNS client is a beta module,
the API or code may change before being finalized. No formal DNS API documentation
is available yet.
2. Added beta NetBIOS Name Service responder module (NBNS.c). Added
AppConfig.NetBIOSName string. Added STACK_USE_NBNS configuration macro. Added
MY_DEFAULT_HOST_NAME macro in StackTsk.h. Now, whenever a NetBIOS broadcast
attempting to resolve AppConfig.NetBIOSName arrives, a response will be made.
This form of name resolution only works on a single subnet. Off the subnet,
manual registration in a DNS server or other means will be needed to allow the
local Host Name to be recognized and translated to an IP address. The default
NetBIOS name for the board is "MCHPBOARD". To test the NetBIOS Name Service
module, try entering http://MCHPBOARD/ into your web browser instead of the board's
IP address.
3. Added beta HTTP client module (GenericTCPClient.c). This module demonstrates how
to make a TCP client application. To test this module, uncomment the
STACK_USE_GENERIC_TCP_EXAMPLE macro in StackTsk.h, recompile, and then press the
B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -