1*10465441SEvalZero2013-10-17 (REL_1_6_0) Armink <[email protected]> 2*10465441SEvalZero Notes: Added modbus master. 3*10465441SEvalZero 4*10465441SEvalZero2010-05-06 (REL_1_5_0) Christian Walter <[email protected]> 5*10465441SEvalZero Notes: Added support for Atmel AT91SAM3S (Cortex M3) for IAR. 6*10465441SEvalZero 7*10465441SEvalZero Detailed notes: 8*10465441SEvalZero - FEATURES (ATSAM3S) : Added new port. 9*10465441SEvalZero 10*10465441SEvalZero2007-08-28 (REL_1_4_0) Christian Walter <[email protected]>: 11*10465441SEvalZero Notes: Added support for HCS08. Fixed some small bugs in the documentation 12*10465441SEvalZero for the porting layer. 13*10465441SEvalZero 14*10465441SEvalZero Detailed notes: 15*10465441SEvalZero - FEATURES (HCS08) : Added new port. 16*10465441SEvalZero - BUGS (ALL) : Fixed some small bugs in the porting guide. 17*10465441SEvalZero 18*10465441SEvalZero2007-07-17 (REL_1_3_0) Christian Walter <[email protected]>: 19*10465441SEvalZero Notes: Added ARM7/AT91SAM7X port. Added Linux/TCP port from Steven Guo. 20*10465441SEvalZero 21*10465441SEvalZero Detailed notes: 22*10465441SEvalZero - FEATURES (ARM7): Added ARM7/AT91SAM7x port. 23*10465441SEvalZero - FEATURES (LINUX): Added Linux/TCP port from Steven Guo. 24*10465441SEvalZero - BUGS (ALL): Fixed bug in <eMBFuncReadInputRegister> where the high 25*10465441SEvalZero byte of the register count was ignored. This does not have a 26*10465441SEvalZero practical impact because the actual number of registers is always 27*10465441SEvalZero lower. 28*10465441SEvalZero 29*10465441SEvalZero2007-07-17 (REL_1_3_0) Christian Walter <[email protected]>: 30*10465441SEvalZero Notes: Added Linux/TCP port. Fixed bug in MSP430 port. 31*10465441SEvalZero Detailted notes: 32*10465441SEvalZero - FEATURE (LINUX): Added Linux/TCP port. 33*10465441SEvalZero - BUGS (MSP430): Fixed bug with calculating the timer value. 34*10465441SEvalZero 35*10465441SEvalZero2007-04-25 (REL_1_2_0) Christian Walter <[email protected]>: 36*10465441SEvalZero Notes: Added LPC214X ARM port with Keil compiler. Added Z8Encore port for 37*10465441SEvalZero Z8F6422 microcontroller. 38*10465441SEvalZero 39*10465441SEvalZero Detailed notes: 40*10465441SEvalZero - FEATURE (ARM): Added LPC214X ARM port for Keil ARM 2.41. 41*10465441SEvalZero - FEATURE (Z8ENCORE): Added Z8F6422 for Z8Encore using the ZDS II - Z8 42*10465441SEvalZero Encore! development tools. 43*10465441SEvalZero 44*10465441SEvalZero2007-02-18 (REL_1_1_2) Christian Walter <[email protected]>: 45*10465441SEvalZero Notes: Fixed typo with the defined defining the supported Modbus 46*10465441SEvalZero functions. Fixed bug when illegal slave address was passed to eMBInit 47*10465441SEvalZero where the error was not detected. Fixed typo in the holding registers 48*10465441SEvalZero where the frame for write multiple registers was parsed with the wrong 49*10465441SEvalZero constants. The fix is not critical because the values matched. Fixed bug 50*10465441SEvalZero in discrete input registers implementation where the frame was not parsed 51*10465441SEvalZero correctly. Added new support for a CodeWarrior Coldfire port. 52*10465441SEvalZero 53*10465441SEvalZero Detailed notes: 54*10465441SEvalZero - BUG (ALL): Modbus functions are compiled into the stack conditionally 55*10465441SEvalZero by changing the MB_FUNC_XXX defines to either true(1) or false(0). 56*10465441SEvalZero The defines for MB_FUNC_READ_HOLDING and MB_FUNC_WRITE_HOLDING 57*10465441SEvalZero were wrong. 58*10465441SEvalZero - BUG (ALL): eMBInit did not correctly check for addresses. Therefore 59*10465441SEvalZero is was possible to start the Modbus stack with an address of 0 60*10465441SEvalZero or one > 247. 61*10465441SEvalZero - BUG (ALL): eMBFuncWriteHoldingRegister should use 62*10465441SEvalZero MB_PDU_FUNC_WRITE_MUL_ADDR_OFF and not MB_PDU_FUNC_READ_ADDR_OFF. 63*10465441SEvalZero - BUG (ALL): eMBFuncReadDiscreteInputs calculated the number of discrete 64*10465441SEvalZero registers to read wrong. 65*10465441SEvalZero - FEATURE (ALL): Fixed some warnings in the code. 66*10465441SEvalZero 67*10465441SEvalZero2006-11-19 (REL_1_1_1) Christian Walter <[email protected]>: 68*10465441SEvalZero Notes: Fixed bug in Read/Write Multiple Registers function where 69*10465441SEvalZero the registers addresses where calculated wrong. 70*10465441SEvalZero Fixed bug in RTU and ASCII with the resource allocation in case of 71*10465441SEvalZero an error. 72*10465441SEvalZero Changed license to BSD style licsense. 73*10465441SEvalZero 74*10465441SEvalZero Detailed notes: 75*10465441SEvalZero - OTHER (ALL): License is now BSD for protocol stack. 76*10465441SEvalZero - BUG (ALL): The registers address received in a Modbus frame 77*10465441SEvalZero must be converted to application addresses. The code for this 78*10465441SEvalZero conversion was missing and therefore has lead to error when 79*10465441SEvalZero this function was used (Registers of by one, Start at > 1). 80*10465441SEvalZero - BUG (ALL): If the serial initialization within the porting fails 81*10465441SEvalZero a timer is still allocated in eMBRTUInit and eMBASCIIInit. This 82*10465441SEvalZero can lead to a memory leak depending upon the implementation of the 83*10465441SEvalZero porting layer. 84*10465441SEvalZero - FEATURE (MCF5235): Added sample shell scripts for testing. 85*10465441SEvalZero - FEATURE (MSP430): Added sample shell script for testing and 86*10465441SEvalZero changed default values to match the other ports. 87*10465441SEvalZero 88*10465441SEvalZero2006-10-30 (REL_1_1_0) Christian Walter <[email protected]>: 89*10465441SEvalZero Notes: Added support for Read/Write Multiple Registers function 90*10465441SEvalZero (0x17). Added some tips to reduce memory requirements. 91*10465441SEvalZero Added MSP430 Port for GCC and Rowley Crossworks. 92*10465441SEvalZero 93*10465441SEvalZero Detailed notes: 94*10465441SEvalZero - FEATURE (MSP430): Added new MSP430 port. 95*10465441SEvalZero - FEATURE (ALL): Added support for Read/Write Multiple Registers 96*10465441SEvalZero function (0x17). The implementation simply makes two callbacks 97*10465441SEvalZero to the eMBRegHoldingCB function where first the values are 98*10465441SEvalZero written and then the other register values are read. 99*10465441SEvalZero - FEATURE (ALL): Added some tips on reducing memory requirements 100*10465441SEvalZero with the protocol stack. 101*10465441SEvalZero 102*10465441SEvalZero2006-10-30 (REL_1_0_5) Christian Walter <[email protected]>: 103*10465441SEvalZero Notes: eMBDisable and eMBClose can now be called multiple times 104*10465441SEvalZero which makes shutdown of the protocol stack easier. 105*10465441SEvalZero Fixed bug in RTU state machine where we switched from the 106*10465441SEvalZero error state immediately to the idle state. Correct behaviour 107*10465441SEvalZero would be to wait till the end of frame. 108*10465441SEvalZero Added new STR71X GCC port which uses only freely available tools 109*10465441SEvalZero like GNU ARM, OpenOCD (Wiggler) and GDB. 110*10465441SEvalZero 111*10465441SEvalZero Detailed notes: 112*10465441SEvalZero - FEATURE (STR71X): Added GCC standalone port which does not 113*10465441SEvalZero depend on the Rowley Crosswork tools. 114*10465441SEvalZero - FEATURE (ALL): eMBDisable can now be called multiple times 115*10465441SEvalZero and returns MB_ENOERR in case is was already disabled. 116*10465441SEvalZero eMBClose also supports beeing called multiple times in 117*10465441SEvalZero which pvMBFrameCloseCur( ) is called when the protocol stack 118*10465441SEvalZero is in state STATE_DISABLED. 119*10465441SEvalZero - BUG (RTU): Fixed bug in xMBRTUReceiveFSM where the error 120*10465441SEvalZero state is immediately left because of a missing break. Instead 121*10465441SEvalZero we should wait till the damaged frame is finished. 122*10465441SEvalZero 123*10465441SEvalZero2006-10-11 (REL_1_0_4) Christian Walter <[email protected]>: 124*10465441SEvalZero Notes: Fixed bug when more than 255 coils are requested. Fixed bug in 125*10465441SEvalZero Linux/Cygwin port when not all bytes could be written by the first 126*10465441SEvalZero call to write. Added support for removing previously registered 127*10465441SEvalZero function handlers. 128*10465441SEvalZero 129*10465441SEvalZero Detailed notes: 130*10465441SEvalZero - BUG (ALL): mbfunccoils contained a bug which limited the amount 131*10465441SEvalZero of coils to read to 255. 132*10465441SEvalZero - BUG (LINUX): prvbMBPortSerialWrite contained a bug in the loop 133*10465441SEvalZero which writes the RTU/ASCII frame to the serial file descriptor. 134*10465441SEvalZero If not all bytes where written in the first call or write was 135*10465441SEvalZero interrupted the sent frame is corrupted. 136*10465441SEvalZero - FEATURE (ALL): eMBRegisterCB now supports NULL as handler 137*10465441SEvalZero argument in which case a previously registered function 138*10465441SEvalZero handler is deregistered from the protocol stack. 139*10465441SEvalZero 140*10465441SEvalZero2006-09-27 (REL_1_0_3) Christian Walter <[email protected]>: 141*10465441SEvalZero Notes: Added new functions to support registering of custom callback 142*10465441SEvalZero handlers. This makes it possible to implement new Modbus function 143*10465441SEvalZero codes without touching the protocol stack. 144*10465441SEvalZero New port for ATMega128 added. Thanks to Richard C Sandoz Jr. for 145*10465441SEvalZero the patches. 146*10465441SEvalZero 147*10465441SEvalZero Detailed notes: 148*10465441SEvalZero - FEATURE (ALL): Added support for registering new functions handlers 149*10465441SEvalZero with eMBRegisterCB. 150*10465441SEvalZero - FEATURE (AVR): Added patches from Richard C Sandoz Jr. for ATMega128 151*10465441SEvalZero 152*10465441SEvalZero2006-09-06 (REL_1_0_2) Christian Walter <[email protected]>: 153*10465441SEvalZero Notes: Fixed bug in FreeRTOS porting layer for STR71X/lwIP target where 154*10465441SEvalZero memory is not freed in the sys_arch_thread_remove function. 155*10465441SEvalZero Synched MCF5235TCP port with the FreeRTOS/lwIP port for the STR71X. 156*10465441SEvalZero 157*10465441SEvalZero Detailed notes: 158*10465441SEvalZero - BUG (STR71XTCP): Sys_arch_thread_remove did not free the memory from 159*10465441SEvalZero the TCB. 160*10465441SEvalZero - BUG (STR71XTCP): Unnecessary call to vTaskSuspendAll removed. 161*10465441SEvalZero - BUG (STR71XTCP): Bug with counting variable. The first to lwIP tasks 162*10465441SEvalZero got the same name (lwIP0). 163*10465441SEvalZero - FEATURE (MCF5235TCP): Enhanced functions from the STR71X/lwIP port 164*10465441SEvalZero merged into the Coldfire port. 165*10465441SEvalZero 166*10465441SEvalZero2006-09-04 (REL_1_0_1) Christian Walter <[email protected]>: 167*10465441SEvalZero Notes: Fixed bug in serial driver for STR71x target when the ring buffer 168*10465441SEvalZero overflows. 169*10465441SEvalZero 170*10465441SEvalZero Detailed notes: 171*10465441SEvalZero - BUG (STR71XTCP): Under high load the ring buffer in the serial driver 172*10465441SEvalZero functions might overflow. There was an error with counting the number 173*10465441SEvalZero of received characters which corrupted received frames. 174*10465441SEvalZero Now receiver correctly recovers in case of dropped bytes. 175*10465441SEvalZero 176*10465441SEvalZero2006-09-04 (REL_1_0) Christian Walter <[email protected]>: 177*10465441SEvalZero Notes: Added support for ATmega8, ATmega16, ATmega32, ATmega169 and 178*10465441SEvalZero RS485 drivers in the AVR support. Special thanks to Tran Minh Hoang 179*10465441SEvalZero for his contribution. 180*10465441SEvalZero Added a new lwIP port for the STR71X target which uses one serial 181*10465441SEvalZero interface for a PPP connection. This can be used for remote Modbus/TCP 182*10465441SEvalZero devices in combination with a Modem (E.g. GPRS or Analog). 183*10465441SEvalZero 184*10465441SEvalZero Detailed notes: 185*10465441SEvalZero - FEATURES (AVR): Integrated patches from Tran Minh Hoang to support the 186*10465441SEvalZero ATmega8, ATmega16, ATmega32, ATmega169 controllers. 187*10465441SEvalZero - FEATURES (AVR): Added support for RS485 drivers in the AVR code. The 188*10465441SEvalZero example supports the DS76176. 189*10465441SEvalZero - FEATURES (STR71XTCP): implemented function in STR71X/lwIP porting layer 190*10465441SEvalZero to remove running tasks. 191*10465441SEvalZero - FEATURES (STR71XTCP): added new thread creation function in STR71X/lwIP 192*10465441SEvalZero porting layer which allows specifing the stack size. 193*10465441SEvalZero - BUGS (STR71XTCP): pppOpen defined in ppp.c does not check the return 194*10465441SEvalZero value of sys_thread_new. If task creation fails the system crashes. 195*10465441SEvalZero - BUGS (STR71XTCP): pppMain must not return - Instead it should remove 196*10465441SEvalZero its task from the scheduler. 197*10465441SEvalZero 198*10465441SEvalZero2006-08-30 (REL_9) Christian Walter <[email protected]>: 199*10465441SEvalZero Notes: Added lwIP port for the MCF5235 target. The lwIP part is 200*10465441SEvalZero generic and therefore FreeModbus now works on any target with 201*10465441SEvalZero lwIP support. 202*10465441SEvalZero 203*10465441SEvalZero Detailed notes: 204*10465441SEvalZero - FEATURES: Incoperated MCF5235 FreeRTOS/lwIP port done by the 205*10465441SEvalZero author in this project. 206*10465441SEvalZero - FEATURES: Added lwIP port for FreeModbus 207*10465441SEvalZero - FEATURES: Added demo application for FreeModbus and lwIP. 208*10465441SEvalZero 209*10465441SEvalZero2006-08-22 (REL_0_82) Christian Walter <[email protected]> 210*10465441SEvalZero Notes: Fixed bug with Modbus ASCII support 211*10465441SEvalZero 212*10465441SEvalZero Detailed notes: 213*10465441SEvalZero - BUG: During the last upgrade an error was introduced in the 214*10465441SEvalZero initialization code of Modbus ASCII and therefore ASCII 215*10465441SEvalZero support was broken. The bug is fixed now and was tested with 216*10465441SEvalZero the Win32 port. 217*10465441SEvalZero 218*10465441SEvalZero2006-08-22 (REL_0_81) Christian Walter <[email protected]> 219*10465441SEvalZero Notes: Added porting guide 220*10465441SEvalZero 221*10465441SEvalZero Detailed notes: 222*10465441SEvalZero - OTHER: Added a new porting guide to the documentation. 223*10465441SEvalZero - OTHER: Added a empty example for new ports to the project as a 224*10465441SEvalZero starting point. 225*10465441SEvalZero 226*10465441SEvalZero2006-08-01 (REL_0_8) Christian Walter <[email protected]> 227*10465441SEvalZero Notes: Added Linux RTU/ASCII port. 228*10465441SEvalZero 229*10465441SEvalZero Detailed notes: 230*10465441SEvalZero - FEATURES: Added a new Linux RTU/ASCII port. The port should work 231*10465441SEvalZero on any Linux distribution and it should be possible to run it 232*10465441SEvalZero on uCLinux. 233*10465441SEvalZero 234*10465441SEvalZero2006-06-26 (REL_0_7) Christian Walter <[email protected]> 235*10465441SEvalZero Notes: Changed the WIN32 serial port to better fit into the design. 236*10465441SEvalZero 237*10465441SEvalZero Detailed notes: 238*10465441SEvalZero - OTHER: Design of the WIN32 serial port changed. The polling function 239*10465441SEvalZero for the serial device are now called from the event loop. 240*10465441SEvalZero - OTHER: Debugging uses the same interface as the WIN32/TCP port. 241*10465441SEvalZero 242*10465441SEvalZero2006-06-25 Christian Walter <[email protected]> 243*10465441SEvalZero 244*10465441SEvalZero Notes: Initial work on a Modbus/TCP port is available. The port includes 245*10465441SEvalZero an example for a Win32 port which uses the Winsock API. 246*10465441SEvalZero 247*10465441SEvalZero Detailed notes: 248*10465441SEvalZero - FEATURES: added required functions to core protocol stack to support 249*10465441SEvalZero a Modbus/TCP implementation. 250*10465441SEvalZero - FEATURES: added a Win32 port for the Modbus/TCP core. The port is 251*10465441SEvalZero currently limited to one concurrent client. 252*10465441SEvalZero - OTHER: The implementation of eMBClose to shutdown the protocol stack 253*10465441SEvalZero was changed to unify it with the new Modbus/TCP code. 254*10465441SEvalZero - 255*10465441SEvalZero 256*10465441SEvalZero2006-06-18 Christian Walter <[email protected]> 257*10465441SEvalZero 258*10465441SEvalZero Detailed notes: 259*10465441SEvalZero - OTHER: while working on the Win32 port some line feeds got 260*10465441SEvalZero wrong. Also some source files used tabs instead of spaces. 261*10465441SEvalZero - OTHER: prototypes for xMBUtilSetBits and xMBUtilGetBits fixed. 262*10465441SEvalZero usNBits should be ucNBits by convention. 263*10465441SEvalZero 264*10465441SEvalZero2006-06-17 Christian Walter <[email protected]> 265*10465441SEvalZero 266*10465441SEvalZero Notes: Fixed various bugs with the Win32 port 267*10465441SEvalZero 268*10465441SEvalZero Detailed notes: 269*10465441SEvalZero - FEATURES: implement shutdown functionality for protocol stack. 270*10465441SEvalZero - FEATURES: protocol stack can be enabled and disabled during runtime. 271*10465441SEvalZero - FEATURES: interface functions now do more error checking. For 272*10465441SEvalZero example if eMBPool is called in an uninitialized state. 273*10465441SEvalZero - FEATURES: extended Win32 demo application to use the new features. 274*10465441SEvalZero - BUG: fixed bug in Win32 demo for ASCII mode. 275*10465441SEvalZero 276*10465441SEvalZero2006-06-16 Christian Walter <[email protected]> 277*10465441SEvalZero Notes: The new version includes a new port for the 278*10465441SEvalZero Win32 platform 279*10465441SEvalZero 280*10465441SEvalZero Detailed notes: 281*10465441SEvalZero - FEATURES: added Win32 platform 282*10465441SEvalZero 283*10465441SEvalZero2006-05-14 Christian Walter <[email protected]> 284*10465441SEvalZero Notes: The new version includes a new port for the 285*10465441SEvalZero Freescale MCF5235 processor. 286*10465441SEvalZero 287*10465441SEvalZero Detailed notes: 288*10465441SEvalZero - FEATURES: added new MCF5235 port. 289*10465441SEvalZero - OTHER: fixed some missing code headers. 290*10465441SEvalZero 291*10465441SEvalZero2006-05-01 Christian Walter <[email protected]> 292*10465441SEvalZero Notes: This version removes the t1.5 timers from the Modbus RTU 293*10465441SEvalZero implementation because no one actually uses it and the CPU 294*10465441SEvalZero load is very high. T 295*10465441SEvalZero In addition some documentation cleanups has been done and the 296*10465441SEvalZero ARM demo has been updated. 297*10465441SEvalZero 298*10465441SEvalZero Detailed notes: 299*10465441SEvalZero 300*10465441SEvalZero - FEATURES: the t1.5 timeout has been removed. Therefore only 301*10465441SEvalZero one timer is required. 302*10465441SEvalZero - BUG: the ARM demo project missed some files in the project 303*10465441SEvalZero workspace and did not compile cleanly 304*10465441SEvalZero 305*10465441SEvalZero2006-02-28 Christian Walter <[email protected]> 306*10465441SEvalZero Notes: This version includes support for two new command 307*10465441SEvalZero (write multiple coils, read discrete input) 308*10465441SEvalZero 309*10465441SEvalZero Detailed notes: 310*10465441SEvalZero - BUG: some function used the wrong data types 311*10465441SEvalZero - FEATURES: added support for write multiple coils function. 312*10465441SEvalZero - FEATURES: added support for read discrete input. 313*10465441SEvalZero - OTHER: some code cleanups with lint tool. 314*10465441SEvalZero 315*10465441SEvalZero2006-02-28 Christian Walter <[email protected]> 316*10465441SEvalZero 317*10465441SEvalZero Notes: The new version 0.31 adds support for reading and writing the 318*10465441SEvalZero coil registers and add some bug fixes. 319*10465441SEvalZero 320*10465441SEvalZero Detailed notes: 321*10465441SEvalZero - BUG: fixed bug with to small modbus requests being ignored. 322*10465441SEvalZero - FEATURES: added support for write single coil function. 323*10465441SEvalZero - FEATURES: added support for working with byte packed bit fields 324*10465441SEvalZero to support coils and discrete inputs better. 325*10465441SEvalZero - API: API for set slave id functions changed. 326*10465441SEvalZero 327*10465441SEvalZero2006-02-26 Christian Walter <[email protected]> 328*10465441SEvalZero 329*10465441SEvalZero Notes: First public release which includes an ARM and AVR port. 330