⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpip stack version.txt

📁 完整的tcp-ip协议栈,可以用于单片机和arm上
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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 + -