Advanced Vehicle Technologies, Inc. - AVT-423 Firmware
ADVANCED VEHICLE TECHNOLOGIES, Inc.
AVT-423
Firmware Version Descriptions
Updated: 21 October 2023
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 User's 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 User's 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 User's 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.
The User's Manual has been 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 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 User's 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.
There is still some testing that needs to be completed including large
block transfers and timing tests (with regards to compiler optimization
level).
The User's Manual has been updated and posted.
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 User's 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 User's 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 User's 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 User's 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 User's Manual has been 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 User's Manual has been 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 User's 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.
The User's Manual has been updated and posted.
Version 0036
Release date: 6 September 2019
Taken from version 0035
I changed two parameters in how the microcontroller accesses the CAN-FD FPGA
(CAN2 and CAN3). During testing using a customer supplied software
application, it was possible that a received CAN frame 'appeared' to be
a transmit acknowledgement and, hence, was discarded.
I changed the 'start-up' responses sent to the client. There are three
different reasons a 'start-up' response is sent to the client. In previous
versions they were all the same code. Therefore, it was ambiguous as to
the reason the client received a 'start-up' response. A unique response
has been assigned to each. They are:
Power-on reset: 91 0A.
An 'F1 A5' reset: 91 0F.
A client connection: 91 3A.
The User's Manual has been updated and posted.
Version 0037
Release date: 19 December 2019
Taken from version 0036
Very limited release; to one customer only - for testing.
Trying to track down one or more problems with CAN2 and/or CAN3 while
ISO15765 processing is enabled.
Changed a number of '22 5F yy' error codes to '23 5F yy 0z' where 'z' is
either '2' or '3' for CAN2 or CAN3.
The following '22 5F yy' error codes were changed: 43, 44, 45, 46, 48, 49,
4A, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 56, 57, 58, 68, 69, 6B, 6C, 6D, 70,
71, 72, 73, 81, 83.
The "Nagle" algorithm or function has been disabled in the AVT-423.
Note that this only affects TCP packets send by the AVT-423 to the Client.
The Client is urged to disable the "Nagle" function for TCP packets sent
by the Client to the AVT-423.
In the older Microsoft environment this was known as setting the parameter
"TCP_NODELAY" to true ('1', one).
Exactly how this is done depends on the Client operating system and
application development environment.
The User's Manual has NOT been updated, yet.
Version 0038
Release date: 21 December 2019
Taken from version 0037
Very limited release; to one customer only - for testing.
Still working on tracking down the CAN2 and CAN3 problems.
Lost frames, invalid '02 02 A2' and '02 03 A2' responses, and
'23 5F 56 0y' errors.
The User's Manual has NOT been updated, yet.
Version 0039
Release date: 8 January 2020
Taken from version 0038
Very limited release; to one customer only - for testing.
Still working on the CAN2 and CAN3 problems.
I think I found the problem and implemented changes to CAN2 only.
The User's Manual has NOT been updated, yet.
Version 0040
Release date: 16 January 2020
Taken from version 0039
Customer testing seems to indicate that I found and solved the problems
with CAN2.
Implemented the changes to CAN3. This version is still in customer testing.
I am confident that I have (finally) found the root cause of the problems and
have fixed them.
The "Nagle" algorithm or function was disabled in the AVT-423 with version
'0037'.
This only affects TCP packets send by the AVT-423 to the Client.
The Client is urged to disable the "Nagle" function for TCP packets sent by
the Client to the AVT-423.
In the older Microsoft environment this was known as setting the parameter
"TCP_NODELAY" to true (which is '1', one).
Exactly how this is done depends on the Client operating system and
application development environment.
The User's Manual has been updated and posted.
Version 0041
Release date: Never released.
Taken from version 0040.
Added KWP support to the two K-line transceivers.
Basic transmit and receive functionality. Added format byte processing to
the receive function. No periodic message support.
Moved to version 0042 before this could be released.
Version 0042
Release date: Never released.
Taken from version 0041.
Started work on changes to channels CAN2 and CAN3.
Changed my mind about how I want to proceed.
Dropped this version and moved to 0043.
Version 0043
Release date: 21 July 2020
Taken from version 0042.
Lots of changes and updates. These notes are a summary of all changes
from version 0040.
Added KWP support for the two K-line transceivers.
KWP operations using the transceiver assigned to pin #23 of the DB-25P
connector is known as KWP0 and is channel 8.
KWP operations using the transceiver assigned to pin #11 of the DB-25P
connector is known as KWP1 and is channel 6.
Or, another way to look at this:
Pin # 23 of the DB-25P connector is either:
LIN0, channel 7
KWP0, channel 8
Pin # 11 of the DB-25P connector is either:
LIN1, channel 5
KWP1, channel 6
Updated many commands to support KWP operations.
At present, KWP operations are transmit and receive with format byte
processing optional for receive operations.
There is no periodic message support, yet, for either KWP channel.
For channels CAN2 and CAN3 there are now 64 (decimal) receive and transmit
objects available for use.
Note that this means there are 64 receive objects 'AND' 64 transmit objects.
The objects are numbered 0x00 to 0x3F.
(Note that channels CAN0 and CAN1 are different. For those two channels
there are a total of 16 objects that can be configured for one operation
or the other.)
(Channels CAN0 and CAN1 have not been changed or affected.)
Many commands have been updated to support the new objects. Those commands
include:
'7x 04'
'7x 17'
'7x 27'
'7x 28'
'7x 29'
'7x 2A'
'7x 2C'
'7x 30'
There are several new formats of the transmit commands to support all the
new objects.
The format of the transmit ack has also changed.
Refer to the manual for details on all the new, changed, and updated commands.
The User's Manual has been updated and posted.
Version 0044
Release date: Never released.
Taken from version 0043.
Corrected KWP receive message status bit 7.
The User's Manual has NOT been updated.
Version 0045
Release date: 22 November 2020.
Taken from version 0044.
Very limited release.
Modified the '7x 18' periodic message definition command to support KWP
operations.
Put in some other KWP periodic message support routines.
None of that has been tested.
Removed a lot of volatile keywords from many LIN variables as well as FIFO3
and FIFO4.
The new AVT-424 board will be a mezzanine or daughter board to/for the
AVT-423 board.
The AVT-424 will be mounted on top of the AVT-423.
The AVT-424 will add six new LIN channels to the AVT-423.
The new LIN channels are:
LIN2 thru LIN7.
They will be designated channel numbers: 'A' thru 'F'.
Started work on communications with the new AVT-424 LIN Expansion board.
It will use QSPI channel 1.
Removed many (all ?) references to Flexray.
Modified the following commands to recognize the new LIN channels.
'5x 01' - received checksum to client
'5x 02' - receive buffer timeout
'5x 08' - time stamps
'5x 40' - transmit ack
'5x 50' - LIN bus baud rate
'5x 52' - max frame time
'5x 5A' - checksum type
'5x 66' - 'ID byte only' error response
'5x 69' - disable/enable channel operations
'5x 7E' - short to ground counter
'7x 18' - define periodic message
'7x 1A' - disable/enable periodic message
'7x 1B' - periodic message interval
'7x 1C' - disable all periodic messages
Created the following new commands:
'21 30' - hardware reset of mezzanine board (AVT-424)
'21 31' - firmware reset of mezzanine board (AVT-424)
'5x 6B' - mezzanine board heartbeat blink rate
'B1 05' - request AVT-424 firmware version number
'B1 06' - request mezzanine board model number
The '7x 1C' command has been changed.
To disable ALL periodic messages, the command is now: '72 1C FF'
The User's Manual has NOT been updated.
Version 0046
Release date: 1 December 2020.
Taken from version 0045.
Very limited release.
Corrected the '7x 18' command to allow for zero length periodic message
response to client.
Made some changes to several QSPI1 routines to correct AVT-424 comms
failures.
The User's Manual has NOT been updated.
Version 0047
Release date: 10 December 2020.
Taken from version 0046.
Multiple changes to the code to correct the comms failure issue with the
AVT-424 board using the DSPI1 channel.
Defined all DSPI1 registers. I now access those registers directly (do not
use the 'sim2.dspi1.xxx' calls - they take too much time).
I changed the entire interrupt priority scheme. All interrupts have been
downgraded by one level. There are no interrupts above level 6.
Critical routines are now wrapped with level '7' to block all defined
interrupts.
Other changes were implemented with respect to how interrupt routines are
defined. I removed all manipulations of 'clmask' in the interrupt
controller.
Removed remaining references to Flexray. They were in the assembly
language routines.
The User's Manual has NOT been updated.
Version 0048
Release date: 11 December 2020.
Taken from version 0047.
Identical to the last (final) version 0047.
I created this version so that there would not be any confusion with any
other versions named '0047' that were used for testing.
The User's Manual has NOT been updated.
Version 0049
Release date: 1 February 2021
Taken from version 0048
Updates to KWP mode.
Corrected several periodic message routines.
Added the '5x 2A' command to adjust the inter-message time, "P3".
Added the '5x 46' command to specify the bus idle time ('W5')before a Fast
Init attempt.
Added the '5x 47' command to specify the Fast Init low time.
Added the '5x 48' command to specify the Fast Init high time.
Added the '6x 13' Fast Init command and related function.
Tested all KWP functions.
KWP operations are now fully operational for KWP0 (channel 8) and KWP1
(channel 6)
Added the '22 1B ss' error response for UART1 (LIN0 and KWP0).
Added the '22 1C ss' error response for UART2 (LIN1 and KWP1).
The User's Manual has been updated and posted.
Version 0050
Release date: 8 February 2021
Taken from version 0049
One change to all CAN channels with ISO15765 processing enabled.
One customer reported a problem where the AVT-423 was transmitting
consecutive frames a little faster than the inter-frame spacing as
specified by the receiving device flow control frame.
To solve this I added the '7x 25' command to specify a time (1 msec
increment) that is added to the time specified by the received flow
control frame. The default is 0. For example, if the received
flow control frame specifies an inter-frame spacing of 2 msec, and the
client sets the "extra" time to 1 msec (using the '7x 25' command), then
the AVT-423 will set the inter-frame spacing to 3 msec.
Added the '7x 25' command to specify the extra time for inter-frame
spacing when transmitting a multi-frame message.
The User's Manual will be updated and posted as soon as possible.
Version 0051
Release date: 4 April 2021
Taken from version 0050
For testing only. Never released.
Customer experience indicates fifo2 overflows and CPU crash; possibly due
to fifo2 overflow.
This occurs under extremely heavy traffic moving from the AVT-423 to the
client.
Revamped the main loop. Added additional calls to fifo2 manager.
Added 'overrun' space to fifo2.
Added additional buffer space to tcp send buffer.
Changed '21 03' error code for fifo1 overflow to:
'22 03 01' for fifo1p1 overflow.
'22 03 02' for fifo1p2 overflow.
'22 03 03' for fifo1p3 overflow.
Version 0052
Release date: 5 April 2021
Taken from version 0051
For testing only. Never released.
Changed the CAN_B receive manager. If fifo2 can not hold a response, I
exit the routine.
Added a 'syslog' call to CAN_B lost frame manager. This might be the only
way I can watch for lost frames.
Version 0053
Release date: 15 April 2021
Taken from version 0052
A customer reported that occasionally, under high traffic, the AVT-423
stops responding, the Ethernet connection is lost, they cannot establish a
new Ethernet connection, the CPU heartbeat LED has stopped, and the only
way to recover is to power cycle the AVT-423.
Lots of changes.
Modified tcp1_send_task.
If I get 5 write failures in a row, I close the connection.
If a keep alive error is detected, I close the connection.
If a receive error is detected, I close the connection.
I reviewed all the source files.
If any routine writes to fifo2, they first check to see if fifo2 can hold
it.
If not, the write is either ignored (lost) or left pending.
A LIN lost frame counter is implemented as well as a LIN lost frame
manager.
Added new error responses for LIN:
LIN0: 23 3A xx yy: 'xx yy' is the lost frame counter.
LIN1: 23 3B xx yy: 'xx yy' is the lost frame counter.
Added a 'syslog' call in the LIN lost frame manager.
A KWP lost frame counter is implemented as well as a KWP lost frame
manager.
Added new error responses for KWP:
KWP0: 23 3C xx yy: 'xx yy' is the lost frame counter.
KWP1: 23 3D xx yy: 'xx yy' is the lost frame counter.
Added a 'syslog' call in the KWP lost frame manager.
Added a new KWP error response:
22 3F xx - where 'xx' is the channel id in KWP lost frame manager.
If a buffer42 packet does not fit into fifo2, it is deleted.
Added a buffer42 lost packet error response.
23 3E xx yy: 'xx yy' is the count of lost packets.
Added a 'syslog' call in the buffer42 lost frame manager.
If no client connection exists, there will be no 'syslog' transmissions.
The User's Manual has been updated and posted.
Version 0054
Release date: 7 May 2021
Taken from version 0053
Added support for long periodic messages for channels CAN2 and CAN3
(CAN-FD).
Since the '7x 18' periodic message definition can not support a data field
of more than 8 bytes, a new command was implemented.
New command to define a periodic message for channels CAN2 or CAN3 with 0
to 64 bytes in the data field.
Command format. (Either form is valid.)
--------------
11 bb 2r y0 pp tt vv ww zz mm nn ...
12 00 bb 2r y0 pp tt vv ww zz mm nn ...
11 or 12 - is the header for a long command.
bb - count of bytes to follow.
2 - indicates a long periodic message command.
r - channel number, 2 or 3.
y - b7: IDE where 0 = 11-bit ID or 1 = 29-bit ID.
. - b6: RTR where 0 = not an RTR frame or 1 = is an RTR frame.
. - b5: EDL where 0 = Classical CAN frame or 1 = CAN-FD frame.
. - b4: BRS where 0 = normal for entire frame or 1 = high speed data
field.
pp - periodic message number $00 to $2F.
tt vv - 11-bit ID.
tt vv ww zz - 29-bit ID.
mm nn ... - data field (0 to 64 (decimal) bytes).
Query format. (Either form is valid.)
------------
11 03 2r 00 pp
12 00 03 2r 00 pp
11 or 12 - is the header for a long query.
03 - count of bytes to follow.
2 - indicates a long periodic message command.
r - channel number, 2 or 3.
00 pp - periodic message number $00 to $2F.
Notes
-----
- A long form definition command will always yield a long response.
- A long form query will always yield a long response.
- A short form query (7x 18 query) will yield a short form response if the
data field is less than or equal to 8 bytes.
- A short form query (7x 18 query) will yield a long form response if the
data field more than 8 bytes.
- Data field length 'must' be a defined CAN-FD length. An invalid data
field length will yield a command error. The valid data field byte counts
are:
- 0 to 8 bytes (inclusive), 12, 16, 20, 24, 32, 48, 64.
The User's Manual has been updated and posted.
Version 0055
Release date: 8 July 2021 (limited release)
Taken from version 0054
Corrected several errors in the '7x 17' command.
The User's Manual was not updated.
Version 0056
Release date: 14 August 2021
Taken from version 0055
IMPORTANT NOTE:
The maximum number of CAN periodic messages has been reduced to 32
(decimal).
(previously, the maximum was 48 (decimal).)
For all CAN channels, periodic messages are numbered: 0x00 to 0x1F.
Added EDL and BRS checks to several commands.
If BRS is '1', then EDL must also be '1'.
Added the 'Frame Buffer' capability for channels CAN2 and CAN3 only.
Added the following 'Frame Buffer' commands:
7x 50
7x 51
7x 52
7x 53
7x 54
The User's Manual was not updated.
Version 0057
Release date: 7 September 2021
Taken from version 0056
Some changes to how I update various timers. An attempt to save some CPU
time.
Added a transmit echo feature for CAN2 and CAN3 only.
When enabled,this forces the AVT-423 to echo the received copy of
transmitted CAN frames.
The echo includes the time stamp of when it was received. When enabled.
Added a new option to the '5x 40' transmit ack command.
The new option allows the Client to select 'echo' for channels CAN2 and
CAN3 only.
The transmit echo function, when enabled, will only echo CAN frames
transmitted by a transmit command or a Frame Buffer operation.
As a consequence of implementing the transmit echo function, several
routines were updated. My testing shows these routines are functioning
properly. However if a user discovers a problem, let me know and I will
fix it as quickly as I can.
These functions were affected: storing a long periodic message, CAN mirror
function.
Added the '5x 06' command. When enabled, the AVT-423 will report all
received CAN frames in long format (12 xx yy) format always.
Updated several error messages.
The '7x 08' command is now deprecated and will be removed soon.
The Client should use the '5x 40' command.
Previously the '7x 05' command was declared to be deprecated. It will be
removed soon.
Previously the 'F0' command was declared to be deprecated. It will be
removed soon.
The User's Manual was not updated.
Version 0058
Release date: 24 September 2021
Taken from version 0057
Added a digital output feature.
A solid state relay is attached to the top of the AVT-423 board. It is
controlled by the AVT-423 CPU through a command. The switch side of the
solid state relay is connected to pins # 6 and # 19 of the DB-25P
connector.
Added the '5x 05' command to control the digital output as well as clear
or not clear the time stamp counter.
This allows the Client to send a digital output signal (rising or falling
edge) that is synchronized to the clearing time stamp counter.
The User's Manual has been updated and posted.
Version 0059
Release date: 30 October 2021
Taken from version 0058
A customer noticed 'bad' data in several CAN-FD frames.
I re-wrote a portion of the interrupt service routine to add some time
between consecutive reads of the CAN2 and CAN3 controller.
I believe this problem is related to previous problems with fast
successive reads of the FPGA.
My suspicion is in the handshake signal NB_/TA
No manual update required.
Version 0060
Release date: 26 January 2022
Taken from version 0059
A customer asked me to add a fourth TCP port.
It is numbered '10004'.
Added new error response '22 03 04' for fifo1p4 overflow.
The User's Manual has not been updated, yet.
Version 0061
Release date: 6 February 2022
Taken from version 0060
A customer noticed a problem where, during heavy transmit activity, an
occasional transmit command is 'lost'.
This happens only with CAN2 (probably also CAN3).
I modified the code flow in the transmit command processing routine (in
sub_131).
No manual update required.
Version 0062
Release date: never released
Taken from version 0061
Version 0063
Release date: 23 February 2022
Taken from version 0062
A customer noticed that while receiving very heavy CAN traffic, I will
sometimes miss/lose a byte on either LIN channel (LIN0 and/or LIN1).
I modified the code flow for the main loop. Spend a little less time
servicing the CAN2 and CAN3 receive managers so that some time is
available to service the LIN0 and LIN1 new byte processing function.
Added the '7x 09' command to set the maximum number of CAN frames to be
processed by the receive manager before returning to the main loop.
In the early stages of trying to figure out the true source of the
problem, I looked into and modified the number of buffers allocated to
various TCP functions.
Added the '5x 31' command to give the Client access to the 'no push' and
'no nagle' settings.
Added the '2x 0E' error response for TCP configuration errors.
Some of the changes helped, but did not solve the problem.
At the same time as I was trying to fix the LIN problem - another customer
asked me to put in a means of controlling the CAN transceivers - put them
into standby mode.
I added the '7x 13' command to use four I/O ports on the FPGA to control
the CAN transceivers 'STBY' pin.
The states of those I/O pins can be stored in non-volatile memory using
the existing '5x 80' command.
Version 0064
Release date: 14 April 2022
Taken from version 0063
Lots of testing and code 'debug' functions while trying to figure how to
solve the LIN missing byte problem.
I completely re-wrote all the routines having to do with servicing the two
UARTS that are for LIN0 and LIN1.
Also re-wrote all the related KWP code.
Made lots of changes in variable organization and declarations to speed up
processing.
Made lots of changes to main loop organization.
I removed ten error responses.
The User's Manual has not been updated, yet.
Version 0065
Release date: 28 April 2022
Taken from version 0064
Only released to one customer.
Modified the '7x 17' command processor.
If the command is 'short' form, then the response will be 'short' form.
Likewise, for the 'long' form command.
However, for a query, the response depends on the object number.
I added the '7x 01' command to allow CAN-FD operations using the original
Bosch CRC method (otherwise known as non-ISO method).
Note that it was changed to the '7x 02' command in version 0068.
The User's Manual was not updated.
Version 0066
Release date: 8 October 2022
Taken from version 0065
Never formally released.
Added the '7x 5F' command to disable/enable the RC6 function for CAN2 and
CAN3 periodic messages.
The User's Manual was not updated.
Version 0067
Release date: 14 October 2022
Taken from version 0066
Only released to one customer.
Added the 'long format response' only feature to CAN2/3 received ISO messages.
The User's Manual was not updated.
Version 0068
Release date: 19 November 2022
Taken from version 0067
Lots of changes.
Updates to the LIN receive routines related to disabling interrupts when
updating FIFOs.
Changed a bunch of "if, else-if, .." statements to use a defined array --
as related to CAN-FD DLC defines.
Updated a lot of CAN2/3 ISO15765 processing routines, especially the
transmit managers. Made the code cleaner and (hopefully)
faster. All lessons learned from the AVT-425 project.
Removed the '7x 05' command.
Removed the '7x 08' command.
Added the '7x 01' command to query/set the ISO 15765 buffer timeout value.
Added the '7x 02' command to select non-ISO CAN-FD operations.
Changed the '23 5F 68 0y' error response to: '24 5F 68 0y ss'.
Removed 5 error responses.
The User's Manual has been updated and posted.
Version 0069
Release date: 12 December 2022
Taken from version 0068
Corrected an error in the '7x 0B' command when performing direct writes to
the CAN2 or CAN3 core.
Previously, this command did not function for CAN2 or CAN3.
No changes to the User's Manual were necessary.
Version 0070
Release date: 6 February 2023
Taken from version 0069
With regards to the CPU -- FPGA interface.
Disabled external /FB_TA. That pin (J1-13, PA4) is now an un-used GPIO input.
Enabled internal Auto Acknowledge. Set the auto acknowledge to 72 nsec.
Removed all the 'nop' delays in the CAN2 and CAN3 interrupt routines.
This should finally fix the problem of errors when the CPU accesses the
FPGA too quickly and the /FB_TA has not risen sufficiently to be in
the not-active state.
Unfortunately, it took me a long time to figure out this problem and a solution
that did not involve a change to the FPGA load.
The /CS4 chip select active time might be a bit long for many accesses,
but at least it should stop the error and I was able to remove
the 'nop' instructions. I am hopeful this will make it overall faster
and more reliable.
No changes to the User's Manual were necessary.
Version 0071
Release date: 6 March 2023
Taken from version 0070
I discovered that the variable length DLC feature for CAN2/3 ISO15765 transmitting
multiple frames - does not work.
The first frame was the correct length, but all consecutive frames were 0x40 bytes long.
The problem was corrected and tested.
The User's Manual has been updated and posted.
The changes to the manual were not related to firmware updates.
Rather the manual changes were to emphasize that the maximum supply voltage for the
AVT-423 should not exceed +18 VDC.
I also updated the section on over-voltage protection to emphasize that the fuse would
blow if the supply voltage exceeded about +20 VDC.
Version 0072
Release date: 28 April 2023
Taken from version 0071
No operations changes to the firmware.
A new build of both AVT-423 and Netburner CPU boards.
When I started putting them together and testing, I would occassionally notice an error
when sending a block of data from CAN2 to CAN3.
The errors would be rare, maybe 4 out of every 200 transfers. The errors were very
specific. That may only apply to my test scenario.
Troubleshooting revealed that the possible cause of the errors was either cross-talk or
coupling between some of the signal lines connecting the CPU to the CAN-FD controller.
(That is the 32-bit wide FlexBus connection.)
The solution was to decrease the drive level of those signal lines.
One other minor change to the '7x 0A' command.
For all CAN channels, if you try to enable an un-initialized periodic message, the command
will be refused and the '31 74' command error will be returned.
No updates to the User's Manual necessary.
Version 0073
Release date: 7 October 2023
Taken from version 0072
Added type2 periodic message support for channels CAN2 and CAN3 (only).
Type2 periodic messages are also known as sequential periodic messages.
The User's Manual has been updated and posted.
Version 0074
Release date: 21 October 2023
Taken from version 0073
Corrected errors in the type2 periodic message routines for channels CAN2 and CAN3.
Corrected several errors in the '7x 1A' and '7x 1C' commands.
Added type2 periodic message support for channels CAN0 and CAN1.
The User's Manual has been updated and posted.
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