ADVANCED VEHICLE TECHNOLOGIES, Inc.
AVT-716 Firmware Version Descriptions
Updated: 16 March 2005

Version 1.0
General release: 13 August, 1997

Version 1.1
General release: 5 September, 1997

VPW: Added code to monitor for bus short conditions. If a short to high condition is detected for for more than one second a $21 $1A error message is sent to the host and transmissions are inhibited until the short condition is removed. If a short to ground condition is detected (NETF bit) then a $21 $19 error message is sent to the host. Found and corrected a bug in the message transmit routine when the DLC transmit FIFO is checked prior to loading a new message for transmission.

PWM: No changes.

ISO: Implemented a short to ground monitor routine. If a short to ground is detected for more than one second a $21 $44 error message is sent to the host and transmission is inhibited until the short is removed. If the short persists for more than 5 seconds the keep alive message cannot be sent and the unit will automatically disconnect.

Version 1.2
General release: 4 October 1997

MAIN: Made changes to the way in which the SCC interrupt mask register was handled and the copy (IMRC) was updated. No interrupts allowed when making changes to the SCC mode.

VPW: Made changes to the DLC-S interrupt service routine. Changed the exit method to take into account the case when the receive fifo overflows or when there is more than one message in the receive fifo.

PWM: No changes.

ISO: Made changes to the way the IMR and IMRC are updated or modified. All interrupts are disabled whenever changing the IMR and IMRC values.

Version 1.3
General release: 29 October, 1997

MAIN: Re-organized variables, initialize all RAM to a value of $EE in the code start up segment. Added tattle-tale variables and write to them upon reception of a clear match table command and if the code ever enters other modes.

VPW: Added tattle-tale variables and write to one upon reception of a clear match table command. Also write to one when this routine is entered. Changed the 3x command handler so that the code and comments look like the rest of the code.

PWM: Significant changes to the organization of the code. Removed most subroutines. Organized code as mostly top down. Changed the look of all the comments so that the code looks like all the rest.

ISO: Changed the organization of the 3x command handler. All editorial changes. Cleaned up the comments so that it looks like the rest of the code. Added tattle-tale variables in case any other problems are ever found.

Version 2.0
General release: 24 November, 1997

MAIN: Significant changes from previous versions. A lot of changes made, primarily, to the VPW code. Several new commands added. Added many new commands and re-organized a lot of the code, especially the command handler routine(s). Made many commands common, so that other routines can access them.

VPW: Added the following functions: Message forwarding for messages 'from this device'; message time stamp (millisecond resolution); bus loading statistic report; bus loading report interval; auto time notification (alarm clock); message playback with time stamp; block data transfer. Moved some command handler functions to the common routines in MAIN.

PWM: Changes only made to the command handler to make use of common routines.

ISO: Changes only made to the command handler to make use of common routines.

Version 2.1
General release: 5 December, 1997

MAIN: Many changes to all modules. Goal was to bring all operation modes to the same level of functionality (VPW had more functions in version 2.0, then the others). Bug found and corrected in match table operation. Refer to notes for each mode for more details on the changes. Deleted one of the "Elapsed Time" routines. The ISO mode no longer disables the real time clock alarm function. Most operational variables are "not" cleared or initialized when moving from one mode to another. Examples: match table, auto time notification, and bus loading.

VPW: Only made changes to program structure. Moved some variable initializations to a common routine. Added a byte counter to the block transfer routine. Any block received (including transmitted from this node) is counted and the count reported upon completion. Added a no-echo feature to block transfer mode. If the block is being transmitted from this node the no-echo function can be enabled thus shutting off the echo from being reported to the host. Even with no-echo enabled the transmitted status and byte count is still reported to the host (the host can then check for errors and byte count).

PWM: Moved variable initializations to the common module. Added message time tagging, bus loading statistic, and auto time notification. Changed the commands for reading and writing to the HBCC registers and RAM.

ISO: Moved variable initialization to the common module. Added message time tagging, bus loading statistic, and auto time notification. Changed how times are stored and tested (for elapsed time interval). Changes were made so that the alarm clock function of the real time clock does not have to be disabled; it is now left active. All millisecond timer readings are slaved to the real time clock, as in all other routines. Only one common "Elapsed Time" routine is now needed.

Version 2.2
General release: 15 December, 1997

MAIN: Minor change to PWM mode to correct a bug. No other changes to any modules.

VPW: No changes.

PWM: Corrected a bug in the HBCC read RAM routine. The routine would return the contents of the same memory location regardless of the location specified. No other routines or functions were affected.

ISO: No changes.

Version 2.3
General release: 27 February, 1998

MAIN: Added 8192 UART mode and Keyword Protocol 2000 mode modules.
Added several routines that are now common to several operational modules.

VPW: Updated the block transmit routine so that if an error occurs during a block transmit operation, FIFO #1 (from the host) is flushed of bytes remaining from the aborted block transmit operation. Also, an error message is sent to the host to indicate that an error was detected and the block transmit operation was terminated. Added the switches to UART and KWP modes in the command handler.

PWM: Added the switches to UART and KWP modes.

ISO: Removed the routine "Disable_1_RTC". We no longer disable the one second alarm. Removed the "Enable_1_RTC" routine. We no longer use this function since the 1 second alarm is never disabled. Added the switches to UART and KWP modes in the command handler. Corrected jumps in routines checking for receive buffer time outs. Corrected an error receive buffer #2 time out check function, a jump was incorrect. Minor correction in initialization routine (not vs. eori of keyword #2 inversion). Changed $61 $01 command. When disconnecting I now leave the UART-B receive and tx functions enabled. I just disconnect from the external bus and set the ISO mode to idle.

UART: Original release. This mode of operation conforms to GM's 8192 UART protocol.

KWP: Original release. This mode of operation conforms to the Keyword Protocol 2000 specification (ISO 14230-1 and -2).

Version 2.4
General release: 13 March, 1998

MAIN: Added TPU channel 2 and 3 functions. TPU channel 0 is used to sense and determine the sync byte baud rate during initialization of Keyword Protocol 2000 mode. TPU channels 1 and 3 are initialized as input DIO pins. Channel 2 generates the 16 KHz square wave for the millisecond timer function.
This modification is in conjunction with changes in the hardware corresponding to revision level 'C.'

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: No changes.

Version 2.5
General release: 28 August, 1998

MAIN: Several changes made.
Changed affected routines and variables to support really long messages in KWP 2000 mode.
Added a watchdog type of function to the read command routine. (If a partial command is received from the host and the rest doesn't show up within 562 milliseconds, the command is flushed and an error message is sent to the host.)
Made a minor change in the routine to calculate the incoming baud rate during the KWP 2000 5-Baud initialization function. This change was made to compensate for the fact that the TPU is not solely responsible for measuring the incoming data stream.

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: Added support for really long messages (as supported by KWP 2000 specification).

Version 2.6
General release: 31 January, 1999

MAIN: Made changes in KWP and VPW modes.

VPW: Added the trigger function. Refer to the application note for details.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: Corrected a bug in the 5-Baud initialization routine that resulted in calculation of an out-of-spec baud rate. Implemented changes permitting multiple fast initialization attempts without requiring an existing connection to be closed. Changed the way an open buffer is handled during fast initialization.

Version 2.7
General release: 10 March, 1999

MAIN: On power up the 1 second alarm in the Real Time Clock (RTC) is disabled. This function is only enabled when the "Auto Time Notification" function is enabled by the user. Also updated was the "Elapsed Time" routine.
It was discovered that the 1 second alarm in the RTC was creating inaccuracies in the millisecond timer (hardware). Those inaccuracies were affecting operations while in ISO and KWP modes of operation. With the 1 second alarm function turned off the accuracy and reliability of the millisecond timer has been restored. Operations in ISO and KWP mode are now much more accurate and reliable.
Note that if the user turns on the "Auto Time Notification" function (command $52 $0E $01) then the millisecond timer inaccuracy is restored and communications in ISO and KWP modes may rarely encounter a random problem.

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: No changes.

Version 2.8
General release: 19 March, 1999

MAIN: Made changes to ISO and KWP modes. Changes were minor but useful to some customers. (Also moved the 5x 03 command processing to a subroutine; took it out of ISO and KWP mode files.)

VPW: No changes.

PWM: No changes.

ISO: Added the 51 13 command to query for the 5-Baud initialization address. Added the 52 13 xx command to set the 5-Baud initialization address to value xx.

UART: No changes.

KWP: Added the 51 13 command to query for the 5-Baud initialization address. Added the 52 13 xx command to set the 5-Baud initialization address to value xx.

Version 4.1
General release: 31 January, 1999

MAIN: This version, and later, is only for AVT-716 hardware revision "E" units.
This code incorporates all functions and changes as that of firmware version 2.6.
Also included is support for Chrysler's CCD mode of operations.

VPW: Initial release.

PWM: Initial release.

ISO: Initial release.

UART: Initial release.

KWP: Initial release.

CCD: Initial release.

Version 4.2
General release: 10 March, 1999

MAIN: On power up the 1 second alarm in the Real Time Clock (RTC) is disabled. This function is only enabled when the "Auto Time Notification" function is enabled by the user. Also updated was the "Elapsed Time" routine.
It was discovered that the 1 second alarm in the RTC was creating inaccuracies in the millisecond timer (hardware). Those inaccuracies were affecting operations while in ISO and KWP modes of operation. With the 1 second alarm function turned off the accuracy and reliability of the millisecond timer has been restored. Operations in ISO and KWP mode are now much more accurate and reliable.
Note that if the user turns on the "Auto Time Notification" function (command $52 $0E $01) then the millisecond timer inaccuracy is restored and communications in ISO and KWP modes may rarely encounter a random problem.

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: No changes.

CCD: No changes.

Version 4.3
General release: 17 March, 1999

MAIN: Made changes to ISO and KWP modes. Changes were minor but useful to some customers. (Also moved the 5x 03 command processing to the subroutine file; took it out of ISO and KWP mode files.)

VPW: No changes.

PWM: No changes.

ISO: Added the 5x 12 command to enable and disable special receive message handling. Added the 51 13 command to query for the 5-Baud initialization address. Added the 52 13 xx command to set the 5-Baud initialization address to value xx.

UART: No changes.

KWP: Added the 51 13 command to query for the 5-Baud initialization address. Added the 52 13 xx command to set the 5-Baud initialization address to value xx.

CCD: No changes.

Version 4.4
General release: 14 April, 1999

MAIN: Added the "51 15" command to save the current operational mode and the status of some functions. Once saved, the operational mode and the status of the functions, are restored on power up or software reset. Refer to the document "AVT-716 Saving Operational Parameters" for additional information on the use of this new command.

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: No changes.

CCD: No changes.

Version 4.5
General release: 3 May, 1999

MAIN: Corrected a bug in CCD operations.

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: No changes.

KWP: No changes.

CCD: Corrected a bug that showed up during high volume traffic transmit operations.

Version 4.6
General release: 14 July, 1999

MAIN: Changed multiple files so that the time tag (when enabled) reported with a message is 1 millisecond resolution. (Previously it had been inconsistent between operational modes - some were 1 millisecond and some were 0.5 millisecond resolution.) Nearly all modes of operation have been affected.

VPW: Minor modifications.

PWM: Minor modifications.

ISO: Modifications to the interrupt service routine and the receive buffer manager.

UART: Modifications to the interrupt service routine and the receive buffer manager.

KWP: Modifications to the interrupt service routine, the receive buffer manager, and the buffer forwarding routine.

CCD: Modification to the interrupt service routine.

Version 4.7
General release: 25 January, 2000

Summary: Added the 5x 3C command to the ISO and KWP routines. This command permits turning on and off the ability to immediately close the open receive buffer as soon as the message being transmitted is completed. This is done independently of the receive buffer time out function. This ability eliminates the concatenation of the transmitted message with a quick response message.
The command is:
51 3C: Status query.
52 3C 00: Disable early termination function.
52 3C 01: Enable early termination function.
Responses are:
62 3C 00: Early termination function is disabled.
62 3C 01: Early termination function is enabled.

MAIN: Corrected the "sendrecbuf2" function, it was incorrectly dividing the time stamp by two before transmitting it to the host.

VPW: No changes.

PWM: No changes.

ISO: Added support for the 5x 3C command.

UART: No changes.

KWP: Added support for the 5x 3C command. Corrected the KWP error byte from $41 to $45.

CCD: No changes.

Version 4.8
General release: 3 February, 2000

Summary: Corrected an error in the UART mode of operation that was limiting the length of a transmitted or received message to 100 bytes. The limit on a message for transmission is now $AC and the limit on a received message is now $AD (add one for the checksum byte).

MAIN: Changed the limit checking function in the SCI interrupt service routine.

VPW: No changes.

PWM: No changes.

ISO: No changes.

UART: Changed the limit on the length of a message for transmission to $AC bytes.

KWP: No changes.

CCD: No changes.

Version 5.0
General release: 15 February, 2000

Summary: Incorporated several changes to KWP mode in an effort to bring it more up-to-date with the current specification and customer requirements. The user should obtain and read the manual supplement that provides detailed information on all the changes incorporated into this new release. The manual supplement is available from our Download page. The following new commands were implemented: 5x 25, 5x 26, 5x 27, and 5x 28. Two new error messages were also added: 21 49 and 21 4A.

MAIN: Host communications baud rate selection has been changed. JP1 and JP2 now provide baud rate selection of: 19.2, 38.4, 57.6, and 115.2 kbaud. The method of obtaining an incoming command, parsing it, and processing it has been changed for all modes of operation. This change should result in better overall performance of the unit.

VPW: Incoming command processing routine updated.

PWM: Incoming command processing routine updated.

ISO: Incoming command processing routine updated. Added support for loss of arbitration during transmission of a message.

UART: Incoming command processing routine updated.

KWP: Incoming command processing routine updated. Added support for loss of arbitration during transmission of a message. Added support for switching K-line communications to 115.2 kbaud. Added support for processing a received message based on the format byte. Added support to enable and disable the automatic computation and inclusion of the checksum byte to a transmitted message. Added support to change time parameter P4_MIN.

CCD: Incoming command processing routine updated.

Version 5.1
General release: 1 May, 2000

Summary: All times have been changed to 0.5 millisecond increments.
Added a new timer function.
TIMER0 is the default (original) timer: 0.5 millisecond resolution, rollover at $7FF; 1.0235 milliseconds.
TIMER1 is a new timer: 0.5 millisecond resolution, rollover at $FFFF; 32.7675 milliseconds.
The timer changes affect all modes of operation.
Note that the use of TIMER1 requires a hardware modification to the 716#1 board.
Made several changes to KWP mode of operations and added new commands.
Refer to the engineering note on firmware version 5.1 for more details.

MAIN: No changes.

VPW: Added the 5x 29 command to select TIMER0 or TIMER1.

PWM: Added the 5x 29 command to select TIMER0 or TIMER1.
Corrected a bug in processing a message acknowledgement. (It was probably never seen by anyone.)

ISO: Added the 5x 29 command to select TIMER0 or TIMER1.

UART: Added the 5x 29 command to select TIMER0 or TIMER1.

KWP: Added the 5x 29 command to select TIMER0 or TIMER1.
Added the 5x 2A command to set/query for P3_MIN.
Added the 5x 2B command to set/query for buffer time out in 0.5 millisecond increments.
Added the 51 2C query for the most recently received keywords.
Added the 5x 2D command/query for first byte notification function.
Changed the 21 4A error message (one byte message) to 22 4A xx where xx is the one byte received.

CCD: Added the 5x 29 command to select TIMER0 or TIMER1.

Version 5.2
General release: 11 August, 2000

Changes to KWP mode only. All other modes were unchanged.

5-baud and CARB initialization modes.
Extended the W1_max time delay to a true 300 milliseconds. This was to take into account the fact that the SCC samples the stop bit at the half way point, terminates receive and interrupts. So one-half a baud period is still to be expended.

5-baud and CARB initialization modes.
The L-line is left enabled for the entire duration of the initialization attempt.

Fast initialization.
Enabled format byte checking when in the initialization routine.
Correct the 1-second failure alarm. The one second failure alarm is reset just before the wait for the response from the module. Once the first byte from the module is received the one second failure alarm is no longer active. A simple buffer time out takes over.

Transmit.
Permit queueing a full length message when automatic checksum is disabled. The transmit message size limits are
Auto checksum enabled: 259 bytes.
Auto checksum disabled: 260 bytes.

Transmit.
Permit P4_min to be set to zero.

Receive.
In the format byte processing section, correct the handling of the situation when the format byte length L5..L0 is zero and the message length byte is zero. Terminate reception at this point and close the buffer.
Renamed the variable P2_min to P1_max. This makes more sense. After time P1_max has elapsed, message being received must be over.
The default value for P1_max is set to 23 milliseconds.
Reset the P3 timer after closing a buffer in the format processing routine.
Increment the bus load counter after closing a buffer in the format processing routine.
Added the P1 threshold monitor function.
Once message reception is in-progress, monitor to see if P1_threshold is ever exceeded, if so set bit #1 in the receive status byte.
Added the P2 threshold monitor function.
At all times monitor to see if the P2 threshold is ever exceeded. If so, set bit #2 in the receive status byte of the very next message. Do not attempt to differentiate between request/response. (Ignore the actual definition of P2 for this function.)


Version 5.3
Limited release: 16 July 2001
Special version for one customer.

Version 5.4
General release: 12 November 2004.
Updated watchdog routines in ISO and KWP mode to watch for and recover from transmit mode in illegal state or stuck in state 8.
If either condition is observed for 0.5 seconds, the transmit mode is reset to state 0 and bit #2 of the error message is set.

Version 5.5
General release: 15 November 2004.
Updated all ISO and KWP initialization routines. An error code is issued if the initialization attempt fails for any reason. This will, hopefully, provide some insight and reason for the initialization attempt failure. The same error codes were used as defined for the AVT-718. The code is: 22 54 xx. All codes are defined in the Master Commands and Responses document.

Version 5.6
General release: 23 February 2005
Updated ISO operations. Added a transmit watchdog function. I check the progress of a message that is pending transmission. If, at any time during transmission, more than 250 msec passes without activity (that is time measured between bytes) then the transmit message is purged, the transmit buffer and mode are reset and an error message is sent to the host.

Version 5.7
General release: 16 March 2005
Completely revamped ISO and KWP modes of operation. ISO mode now more closely resembles KWP mode of operation. Revamped various timers. Revamped periodic status routines. Removed all unused variables. Clear all RAM space on startup. Set 'auto buffer terminate' function to enabled as the default condition. Removed all previous watchdog functions and replaced it with a completely different transmit watchdog function. Added failure and error code messages to host to better understand when, where, and why problems arise. Removed the 23 57 xx yy error code. The default 'keep alive' interval is now 4.0 seconds.



Site Map