Advanced Vehicle Technologies, Inc. - AVT-423 Firmware
ADVANCED VEHICLE TECHNOLOGIES, Inc.

AVT-423
Firmware Version Descriptions
Updated: 14 June 2019

Version 0001
Release date: Never released. Very early testing only.

Version 0002
Release date: Never released. Early testing only.

Version 0003
Release date: 4 August 2016
Taken from version: 0002.
First 'real' release.

Version 0004
Release date: Never released.
Taken from version 0003.

Version 0005
Release date: 22 January 2017.
Taken from version 0004.
Moved all TCP/IP functions to interrupt driven routines.
That removed all application delays associated with reading data from the control computer.
Added support for LIN0 and LIN1.
Some corrections to CAN commands and other CAN routines.

Version 0006
Release date: 4 July 2017
Taken from version 0005
Lots of changes and updates. Corrected many CAN control bits: IDE, RTR, EDL, and BRS.
Commands affected: 0x (transmit), 7x 18 (periodic message set-up), 7x 2A (object set-up), 7x 2C (object mask).
Error checking for invalid CAN bit definitions.
Updated error responses.
Increased number of CAN periodic messages to 48 (each CAN channel).
Moved the CAN timer update routine to an assembly language routine to speed it up.
Some Flexray routines have been implemented (comms between the Netburner CPU and the Flexray CPU).

Version 0007
Release date: 5 July 2017
Taken from version 0006
No general release. Only released to one customer for testing.
Primarily changes to FIFO2 manager. Investigating problems a customer has encountered.

Version 0008
Release date: 25 July 2017
Taken from version 0007
No general release. Only released to one customer for testing.
Rewrote tcp_error_manager. Changes to fifo2_manager. Corrections to fifo2_manager. Changes to tcp_rcv_manager task. Changed TICKS_PER_SECOND to 100. Changes to predef.h and constants.h. Rebuilt all system files. Rewrote CAN0 and CAN1 protection code when updating receive message fifo pointers and flags.

Version 0009
Release date: 30 July 2017
Taken from version 0008
Added SysLog feature; messages are broadcast (no ip address specified).
Lots and lots of changes. Primarily in how data is moved into FIFO2 and how it is moved off the board to the client. Created a new tcp send task. Re-ordered the priority of the three tasks. The three tasks are, in order of priority (high to low): tcp send, tcp receive, and usermain. Corrections to a number of commands and responses. At least one new error response, one error response corrected, and one error response deleted. The manual has been updated and posted. For CAN2 and CAN3, if the "error counter ii" rolls over (any element therein), that CAN channel is NOT reset (it used to be), only the client is notified of the condition but operations continue un-interrupted. Completely re-wrote the two tcp tasks and the fifo2_manager routines.
Users are encouraged to load this new version of firmware and work with it. It is much more reliable and moves data quicker.

Users are invited to let me know of any problems, questions, or corrections that need to be addressed.

Version 0010
Release date: 8 August 2017
Taken from version 0009
Converted to new development system (2.7.7).
Corrected /CS4 timing parameter.
Moved periodic message timers to FAST SRAM.
For all CAN channels removed the 'auto reset' feature from the error managers.  Now I only inform the user that an error occurred.  The user is responsible for handling recovery of the CAN channel.

Version 0012
Release date: 14 November 2017
Taken from versions 0010 and 0011
Version 0011 was never released.  Major upgrade from previous versions.  Lots of changes to improve code efficiency and maintainability.  Cleaned up many routines.  Corrected many errors.  (Details can be found in notes in "main.cpp".)
Biggest change of note is the addition of ISO 15765 support for CAN0 and CAN1.
The following previously existing commands were changed and are not compatible with previous versions.

0x - transmit command
11 xx - transmit command
12 xx yy - transmit command
7x 2A - object set-up ID command
7x 2C - object set-up acceptance mask

New commands
7x 05 - object set-up
7x 06 - object set data
7x 07 - transmit status
7x 08 - transmit acknowledgements
7x 0E - outbound flow control separation time
7x 27 - padding
7x 28 - object pairing

The manual has been updated and posted.
As always - if you find an error in the manual, please let me know so that I can correct it.
If you have any questions - contact me.  I will answer as quickly and as best I can.  Call if you need a fast answer.

Version 0013
Release date: 26 November 2017
Taken from version 0012
Corrected several errors in the CAN mask command (7x 2C).
Corrected an error in the CAN acceptance ID commands (7x 05 and 7x 2A).

Version 0014
Release date: never released
Taken from version 0013
One correction to an ISO15765 processing routine.

Version 0015
Release date: never released
Taken from version 0014
One correction to an ISO15765 processing routine.

Version 0016
Release date: 12 March 2018
Taken from version 0015
Considerable re-work of all the ISO15765 processing routines.
Changed the defined states.
Corrected the non-zero block size functionality.
Incorporated changes from versions 0014 and 0015.
A number of other changes to correct or improve ISO15765 message processing.
Removed a few "22 5F xx" error responses and added a few others.
The manual has been updated and posted.

Version 0017
Release date: 15 March 2018
Taken from version 0016.
Lots of changes on how errors are detected and handled for CAN0 and CAN1.
Previously certain failure conditions would result in a non-stop (fast) series of error responses to the client.
CAN0 and CAN1 error registers are now monitored by a polling routine (not interrupt driven).
Those two channels are monitored on a alternating basis.
If a 'bus off' condition is detected: a 'bus off' message is sent to the client, the CAN channel is reset, and a reset response is sent to the client.
There were also changes to the '7x 0A' and '7x 0B' baud rate routines to stop writing fixed values.

Version 0018
Release date: 22 April 2018
Taken from version 0017.
For CAN0 and CAN1:
The timing register load values were changed to put the number of time quanta and the sample point more in line with CAN-CiA recommendations.
For CAN2 and CAN3:
A new CAN-FD IP core version was introduced.
For core version '0004' the CAN clock was 128.0000 MHz.
For core version '0010' the CAN clock is 160.0000 MHz.
The firmware was updated to query for the core version number to determine CAN2 and CAN3 timing register load values.
The timing register load values were changed for both the previous and the new core to put the number of time quanta and the sample point more in line with CAN-CiA recommendations.
CAN-CiA recommends the sample point be at nominal 87.5% (85% to 90%); where possible.
Manual updated and posted.

Version 0019
Release date: 30 May 2018
Taken from version 0018
Real world testing indicated that the new sample points were not working very well.
Changed all CAN sample points back to 75% (where possible).  Bench testing indicates this works much better.  Time in the real world will be the real test; I am confident.
(I do not know why the 87.5% sample point does not work, but it doesn't.)
Experience with the AVT-718 and AVT-85x products would seem to indicate that a 75% sample point is 'good' - that is where (I believe) the sample point is for those interfaces.
Added the new '24 97 0y rr tt' error response for CAN2 and CAN3.  'y' is the CAN channel number.  'rr tt' are the Classical CAN receive and transmit error counters.
The manual has been updated and posted.

Version 0020
Release date: 10 October 2018
Taken from version 0019
Implemented ISO 15765 for the CAN-FD channels (CAN2 and CAN3).
Channels CAN2 and CAN3 now have 16 receive objects and 16 transmit objects.
New command '7x 17' is used to set-up a transmit object.
You must now include the object number in the transmit command.  (Previously it was zero and ignored.)
The '7x 30' command to query for and control 'AE' byte use was in previous releases but was not documented in the manual.
The following commands have been updated to include channels 2 and 3:
'7x 0E'
'7x 17'
'7x 27'
'7x 28'
'7x 30'
The maximum transfer size for CAN2 and CAN3 is currently limited to 8192 bytes.
That can be increased if necessary.  Use with real modules will tell me what limit is necessary and appropriate.
The User's Manual has been updated and posted.

There is still some testing that needs to be completed including large block transfers and timing tests (with regards to compiler optimization level).

Version 0021
Release date: 17 October 2018
Taken from version 0020
Corrected an error in ISO15765 transmit buffer manager routine for CAN2 and CAN3 in how consecutive frames were constructed.
The manual has been updated and posted.

Version 0022
Release date: very limited release 7 November 2018
Taken from version 0021
Added the '7x 63' command.  See version 0023 below.

Version 0023
Release date: 15 November 2018
Taken from version 0022
Corrected the '7x 63' command.
The new '7x 63' command allows the user to set the number of transmit attempts channels CAN2 and CAN3 will make before aborting the transmission and discarding the message.
The default value for both channels is 400 attempts (0x0190).  A value of '0x0000' means continuous attempts (no limit).
Other changes include:
Conducted timing tests of two routines while varying the compiler optimization settings.  Decided to continue to use optimization level 2.
Corrected the "AppName" issue.  The model number and firmware version number now appear in both the IPSetup and AutoUpdate functions.
Minor changes to the periodic message manager routines to try and improve processing speed.
Investigated, but did not implement, the disable Nagle algorithm (function) for Ethernet traffic from the AVT-423 to the client.  In high volume situations I feel this would needlessly increase Ethernet network traffic and reduce network efficiency.

The manual has been updated and posted.

Version 0024
Release date: 13 December 2018
Taken from version 0023
Corrected an error in the '7x 27' command.
I was not saving the new pad byte value if it was a disable padding command.

No manual update required.

Version 0025
Release date: 12 January 2019
Taken from version 0024
Completely re-vamped CAN2 and CAN3 ISO 15765 processing routines.
Added the '7x 29' command which allows the user to specify the 'max_dlc' value to use in processing ISO 15765 CAN-FD transmit frames.

The manual has been updated and posted.

Version 0026
Release date: 17 January 2019
Taken from version 0025
Corrections to channels CAN0 and CAN1 periodic message managers.  Minor changes to CAN0 and CAN1 transmit managers.
A problem was discovered with CAN0 and CAN1 periodic messages.  If they were run at an interval of about 10 msec or less, the message would cease after only a few seconds.  The message would resume if a transmit command was processed.  That problem was corrected with this release.

No manual update required.

Version 0027
Release date: 11 February 2019
Taken from version 0026
Corrections to the 'F1 A5' reset command processing routine.  It was discovered that on fairly rare occasion the execution of that command could 'lock-up' the AVT-423.  The interface would become un-responsive.

No manual update required.

Version 0028
Release date: 22 March 2019
Taken from version 0027
In the hardware initialization routine I added the call to enable the passive pull-up to UART0 receive data line.  UART0 is the serial debug port.  The pin was floating; which was wrong.

No manual update required.

Version 0029
Release date: N/A
Taken from version N/A
This version number was skipped.

Version 0030
Release date: 25 March 2019
Taken from version 0028
Two changes.

1. Added the ability to have multiple clients connect to and communicate with the AVT-423.  I do not allow multiple clients to connect to a single port number.  Instead, I have allocated Port # 10001 (as before), Port # 10002, and Port # 10003 for client connections.  All three ports operate identically.  A client can connect to any one of them, as desired (assuming no one else is already connected to that port.
Commands from all three ports are processed as they arrive.
One important operational note.  All responses from the AVT-423 are issued to all connected clients.  For example, client #1 sets up a CAN receive object.  All messages received through that object are passed to all connected clients.  In other words, everyone sees all responses from the AVT-423.

2. Added the '5x 80' command to query for and store start-up parameters.  This function allows the user to specify certain AVT-423 start-up parameters and store them in non-volatile memory.  A 32-bit long word is stored in non-volatile memory.  It is read whenever the AVT-423 initializes (power-on reset, or the 'F1 A5' software reset).  The stored long-word is a bit map.  At this time only bits 0 through 3 are used.  They indicate the state of the CAN bus termination for channels CAN0 through CAN3 - respectively.  A stored value of '1' indicates the CAN bus termination for that channel is enabled on start-up.  Likewise, a '0' indicates the termination is disabled.  The stored value does not take effect until the next reset following storing the new values.
All un-used (reserved) bits should be set to '1'.

The manual has been updated and posted.

Version 0031
Release date: 24 April 2019
Taken from version 0030

Added the 'B1 03' command to query for model number.  This will eventually replace the 'F0' command.

Added the 'B1 04' command to query for 'my' MAC address.

Fixed the '7x 04' command.  If you queried for object status, that object would no longer receive.

(The 'mirror' function for CAN and LIN was developed for a customer.)

Added the CAN 'mirror' function for CAN0 and CAN1 only (at this time).
(Channels CAN2, CAN3, and LIN are pending.)

Added three new commands to support the CAN 'mirror' function.
'7x 20' to specify the receive ID.
'7x 21' to specify the transmit ID.
'7x 22' to disable/enable the CAN 'mirror' function.

The manual was not updated.

Version 0032
Release date: 6 May 2019
Taken from version 0031

Added the CAN 'mirror' function for CAN2 and CAN3.

The manual was updated and posted.

Version 0033
Release date: 22 May 2019
Taken from version 0032

Fixed the CAN0 and CAN1 receive manager.  If RTR is true, the 'mirror' function is not executed.
(A CAN RTR frame is NOT 'mirror'ed.)

Fixed two error responses for CAN2 and CAN3 receive manager.
Those responses were '22 7F 25' and '22 7F 26'.  But there was a conflict as those two error responses were already defined.
They were changed to '22 7F 21' and '22 7F 22'.
The definitions for '22 7F 25' and '22 7F 26' were updated.

Removed an un-used LIN checksum variable/flag.  Corrected at least one LIN routine related to the use of that variable.

Added the LIN 'mirror' function for LIN1 and LIN0.
Added two new commands for this function.
'5x 11' is the setup command.
'5x 12' is the disable/enable command.

The manual was updated and posted.

Version 0034
Release date: 10 June 2019
Taken from version 0033

Very limited release.

Updated both LIN init routines to initialize all LIN variables.  I discovered that some variables had been missed in the previous version.

In CAN0 and CAN1 init routines I corrected the value to write to 'errstat' to clear any and all pending error flags.

The response (to the client) to an 'F1 A5' reset command used to be:
'91 3A'
'94 04 xx yy'

The response (to the client) to an 'F1 A5' reset command is now:
'91 0F'
Note that the firmware version report has been removed.  Did not make sense to send it.

I did this to allow the client to differentiate between a 'connect' response and an 'F1 A5' reset response.

One user has observed the AVT-423 complete a CPU reset for no apparent reason.  It was observed to occur about once every half hour while the board was idle (doing nothing) or at some point after completing an 'F1 A5' reset.  No more information available at this time.

The manual was not updated.  See next entry.

Version 0035
Release date: 12 June 2019
Taken from version 0034

Corrected an error in the LIN mirror function 'lin_mirror_xmt_mgr'.
Error would appear as:  If the re-transmit ID showed up within 3 msec of the last byte of the first frame, then the re-transmitted frame would contain the ID byte in the data field.

Manual has been updated and posted.

Version 0036
Release date: xxx pending
Taken from version 0035

I anticipate one or more changes in 'start-up' responses to the client.  I want to make all the possible 'start-up' responses to the client to be unique so that the client (user) can tell where the different responses came from.


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx



Site Map