The firmware revision history is available
here.
=================
== Version 4.6 ==
=================
dr8_1409_release_v4-6
10 Aug 2017
- VM: Fixed InputOM that was returning wildly incorrect values.
- DR8: default SEXI app now supports address change on the fly and auto detect of TTL/485 ports.
- DR8, SEXI app timeout increased to 1 second
- NVEM may now report SPxNoResp instead of NVEMPtrOOB if there's a problem communicating with an external EEPROM
- Xwire: the Xwire slave thread could run out of stack and cause a reset
- ARM: fixed a reset that could occur if Xwire Slave was restarted when it & MODBUS Slave were operating simultaneously.
- ARM: WarmBoot now doesn't cause an error, it just restarts the VM. This is the same behaviour as the 8bit controllers.
- ARM: SEXI was incorrectly calculating the output size limit, so a value of 37 outputs which is legal was throwing a "too big" error.
- VM: floatFromU and fixToU were corrected to treat W as big endian when transferring between U
- ARM STMicro boards: If MODBUS was set to 8 data bits even parity, a 0x00 would cause a LIN break and resulted in the packet being dumped resulting MODBUS errors (typically no response if the SPLat is a MODBUS slave).
- VM: sometimes a controller running MODBUS would reset when SPLat/PC connected due to an incorrect method of mutex release when closing the MODBUS port.
- ARM: a 16bit and 24bit ID is now available on all ARM boards. These are a CRC of a bigger ID so there's a small chance two controllers may have the same ID (chance is obviously less with the 24bit version).
- ARMF3: volatile in typedef was placing constants in the .data segment, moved volatile keyword to variables themselves.
- SPLatVM: MemToUV and UVToMem were ignoring the u[n] offset and always starting from u[0].
=================
== Version 4.5 ==
=================
dr8_1409_release_v4-5
12 Sep 2016
- VM: fixed a serious bug in fSTTimeSince & STTest that 2 days after the controller is turned on made both functions think the elapsed time is always greater than 167772.16s.
- ARM: The SPLat/VM on ARM boards was throwing a RAM OutOfBounds error when trying to access byte 250 which is actually the legal last address.
=================
== Version 4.4 ==
=================
dr8_1409_release_v4-4
08 Jun 2016
- DR8: new SEXI app with twice the performance. Requires firmware 4.4.
- DR8: added full production test
- VM: Doing a fGetTimer or Test quickly after starting a timer may sometimes have caused the timer to expire immediately.
- VM: WtoU, QtoU, UtoW, UtoQ, fixToU, floatFromU, would incorrectly error when loading a float into U[16+]
- VM: WaitOnKT wasn't working (incorrect opcode length)
- OS: Created IO_UNUSED() macro
- VM: Created a generic conductivity module.
- VM: GoIfInOn/Off/K were ignoring "J"
- VM: Fixed STTest which was not working correctly due to a typo. It was especially worse with small delays.
- VM: NVReadRec & NVWriteRec were incorrectly expecting a 16 bit address but it's only an 8 bit address.
- STM32F3: EEPROM driver is working
- DR8: NVEM1 is now available; now using generic bi-LED driver
- VM: A change to detect duplicated slave entries in the Xwire table was preventing correct parsing of the table, meaning slaves often weren't being added to the I/O map.
- OS: Saw the 1 second timer getting delayed, manifested by ComTestStartTimer taking 13 seconds dignal rather than 10. Due to timers being deleted before the next timer was fetched.
- VM: ComTestStartTimer now using fast tick to avoid expiring after 9 - 10 seconds (only following RUN from SPLat/PC, power on was always 10s).
- VM: XwireGetPollCntr now increments as soon as a packet is received rather than at the start of sending the response, this also fixed a problem where poll count was not incrementing if the slave had no data to return; interpacket time delays have been shortend to increase throughput.
- VM: Fixed display of PermStore values in the "Module" window in SPLat/PC as all bytes were off by 1, thus the first byte was always missing and the "status" was never correct.
- VM: the Xwire LCD master now sends zeroes for the command bytes (blink, etc) otherwise sending these bytes sent garbage and stuffed up the LCD.
- VM: SEXI was not working when analogue I/O didn't start at 0
- OS: analogue output number is now contigous as there would have been problem if a DAC was in the middle of PWM
- VM: now able to report analogue I/O when numbering doesn't start at 0
- VM: low speed digital (OBCB) counting now works on ARM controllers.
- SPLatVM: SEXI was not turning off blinking outputs when SPLat/PC connected
- VM: More than 10 analogues, in or out, are now correctly sent to SPLat/PC.
- DR8: Adjust COM port assignment, now TTL is 251, 485 is 252 and USB is 253
- VM: Now ensure countdown timers are cleared on VM reset
- VM: loss of SPLat/PC will now stop I/O update messages from being sent.
- VM: now able to have a dout plugin without a read function
- VM: SEXI was not receiving any _additional_ buffer from the slave device.
- VM: Analogue output PWM frequencies can now only be set for outputs exposed to the VM
- OS: New functionality allows timers to each have a different default PWM frequency
- VM: fixes to Xwire slave LCD, esp when LCD isn't 20x4.
- VM: An ARM based controller running as an Xwire slave can now display LCD text broadcast from a Master Xwire controller.
- VM: A SPLatLink "Get" was returning 1 byte less than it should.
- SPLatVM: Fixed "Not" which was converting 0 to 1 but should have been and is now converting it to 255. This bring ARM boards in line with HC08 boards.
- SEXI: can now handle 64 analogue inputs (that's 8 DA8's!)
- ARM: fGoIfPos was getting confused by a -0.0, changed it and fGoIfNeg to use the signbit macro.
- ARM: Fixed error in SEXI that was preventing analogue output value to be sent to the slave.
- VM: Xwire error counters were only incrementing in debug builds; Xwire was not incrementing the error counter if the received packet's length was wrong.
- VM SEXI:a bug occurred when slaves did not have inputs in multiples of 8 and this would cause inputs from one slave to overwrite inputs from another.
- VM: A recent fix for Xwire caused a regression in Xwire Master that caused it to access a NULL func ptr for XwirePhys when starting Xwire.
=================
== Version 4.3 ==
=================
24 Mar 2015
- ARM: STM32 serial port lines weren't being correctly configured, the DR8 Xwire & RS485 ports weren't working; Changing interface no longer resets the port, it now just notifies the app and let's it do whatever it needs to.
- SEXI: All digital I/O's have been compacted so there are no unused lines. This means the Xwire table is now actual number of I/O's rather than blocks of 8.
- SPLat VM ARM:Any button press will now automatically turn on the backlight even if InputK isn't called.
- ARM VM: Permstore was not being correctly erased on program download and instead was returning a status of "success" but with all 0 bytes.
- The SEXI protocol could incorrectly report multiple InputK's as it wasn't confirming a change in sequence number from the slave.
- ARM: ComRunScript can now be called anytime to change MODBUS master scripts. The current transaction will finish before the new script starts.