GenBoard/UnderDevelopment/FirmwareChanges (2006-06-19 16:26:02)

This page lists important changes to the firmware. Check this before downloading a firmware that is meant for production

When updating the board with latest firmware, READ EVERYTHING BETWEEN OLD AND NEW REVISION and check if any of the changes affects your configuration. Take action if necessary. For example, if you used an 1.0.13 firmware, and upgrading to (eg. 1.0.23), when reading through all changes for intermediate releases, you will see (at 1.0.14) that fuelcut_min_kpa must be adjusted reasonably. If you skip 10 mins to read through, you'll sit in the cold car for hours and wonder why the engine does not start and notice injector pulsewidth is 0.

Developers: please update GenBoard/Manual matrix when configuration semantics change. Ask on that page (in the relevant matrix element; make a line if necessary and start to put in links you find) for questions about config variables.

You can report problems/bugs on this page: IssueReports


Downloadable firmware releases

Download

Although it has a compiled vems.hex binary (=> no compiling needed by the enduser), at the minimum check my_make if using it. It has MSNS option defined, that should work with MegaTunix or MegaTune. vems.hex and my_make files should probably move to subdirs (several meaningful different my_make options - feel free to compile + package)

Changelog - from 20041124 release

Since 1.0.44 - [1.0.44 experimental prelease]

Since 1.0.43 - [1.0.43 experimental prelease]

Multitooth advanced filter changed - neglect if you don't use it (but read if you like primary_trigger=09)

Multitooth advanced filter OLD semantics - before 1.0.40

If the tg (time-gap) between 2 teeth compared to tg_prev (previous time-gap)

Multitooth advanced filter NEW semantics - since 1.0.41

If the tg (time-gap) between 2 teeth compared to tg_prev (previous time-gap)

As you see, for the missing-tooth condition, original 1.5+m/8 changed to 1.25+m/8 ... Also, the "n" changed, that is the lower nibble of the toothrel_normal. In new, recommended values:

Since 1.0.36 - ALS made nicely configurable (variables not collide with knock2)

Since 1.0.34 - beware that this was accidentally compiled without AUDITRIGGER option (in my_make), that is without 135-tooth support. We'll compile 1.0.35 soon.

Beware, [1.0.32] .. 1.0.35 is not released. Only a compiled snapshot. BMW dualpwm is believed to be fixed. my_make has ALS, SOFTLAUNCH and other enabled in a way that doesn't collide (cheers!) with misc2_output options (like in 1.0.31: therefore 1.0.31 is not recommended even for testing). Requires in-depth megatune (vems.ini) knowledge (it should be a 20 mins vemsv3.ini job for someone knowledgable, plus 80 mins testing!) Don't use it unless you are testing and absolutely know what you are doing.

BEWARE: 1.0.30 is not released - no known problems so far (been used on several cars for weeks now). BMW dualpwm air-valve users made an improvement that should go into 1.1.0 (or 1.0.31, but soon time for 1.1.0 number). Not suitable for recompile, but EasyTherm provides hexpatch utility (and manual method) for changing temp-factors.

since [1.0.29] - Experimental, use at your own risk

since 1.0.23

since 1.0.18

since 1.0.17

since 1.0.16 since 1.0.15:

since 1.0.14:

since 1.0.13 rc5:

since 1.0.13:

since 1.0.12:

since 1.0.11:

since 1.0.9: camsync with coil-type primarytrigger (not restricted to multitooth). VERY IMPORTANT: USE secondary_trigger=02 if you don't use camsync, otherwise (eg. with commonly used FF value, that works no more) you won't get spark nor fuel nor automaticly activated WBO2 !!!!!

Remember:


2005-02-20

2005-02-08

2004-10-31

2004-10-27


2004-10-10

if kpafac value is set to 00 (not recommended), the old behavior is maintained, where (config.config11 & _BV(MAP_SENSOR)) decides if the 2.5 bar or 1.15 bar lookup table is used. This way it is possible to configure nonlinear table (not sure if it is useful), but precision is inferior (anyway, it is possible to make precision better: tell us if you need nonlinear for some reason, and higher precision).

Note that this makes GenBoard/VerThree the first diy ECM that supports boost pressure higher than 150 kPa without hack. (this was the main reason for the change: a racecar runs at 200..240 kPa boost and they asked us to make precision superior)


2004-09-17

CVS head, with eventqueue.c 1.96 (or earlier 1.94, but not 1.95 experiment) is good for production.

Played with eventqueue, make it simpler and faster. For readability and marketing reasons; because some people are concerned about parameters that cannot be measured in engine output, only on oscilloscope. At 15000 RPM measured 6/20 degree average delay in the ign signal, this is now lowered to about 4 / 100 degree (could be even better with further changes). This is so close to theoretical optimum 0.000000 sec that it means less than 0.3C degree in intake temps (MAT).


2004-09-12


2004-08-27

2004-08-25


2004-08-08


2004-07-28


2004-07-27


2004-07-25

That makes tooth_wheel_twidth2 =

2004-07-07

variable intake actuator (simple RPM-based switch) and WOT actuator (that switches at WOT, but only above a certain RPM) for NOS made easily configurable.

Both the RPM and the output channel is configurable. On GenBoard/VerThree you can select a free channel, which can be a 100A FET if you like (like IRL2203, but the connector cannot handle that current). Even several channels (this is only for the injector FETs) can be selected to switch at the same time, according to GenBoard/Manual/DigitalOut

Set all these config variables to FF if you don't need the feature:\n

  uint8_t act_wot_rpm;		// WOT switch RPM threshold (FF=disable)
  uint8_t act_wot_channel;	// WOT switch output channel selector (P259_0)
  uint8_t act_rpm_rpm;		// RPM switch RPM threshold (FF=disable)
  uint8_t act_rpm_channel;	// RPM switch output channel selector  

Iac.conf is extended to select between a ON/OFF idle air valve, and a PWM controlled type by unsetting/setting bit 3 of iac.conf

See IdleControl/IdleValvePWM


2004-05-26

Lambdacorr table is now unconditionally used. If no l-table was used before, then add the following (stoich) table to tables.txt\n

### lambdacorr: afr=14.7 ###
l[0]=38 38 38 38 38 38 38 38
l[1]=38 38 38 38 38 38 38 38
l[2]=38 38 38 38 38 38 38 38
l[3]=38 38 38 38 38 38 38 38
l[4]=38 38 38 38 38 38 38 38
l[5]=38 38 38 38 38 38 38 38
l[6]=38 38 38 38 38 38 38 38
l[7]=38 38 38 38 38 38 38 38

The lambdacorr-values are a multiplied enrichment: \n

lambdacorr = (l+200)/256

You can see that 56 (hexadecimal 38) means a 1.0 (stoich) lambdacorr value.


Plan: Status indicators in megatune\n

;for the following 3 bits, they should indicate if the switch is activated, not function
	indicator = {status1 & 0b00000001}, "ALS Off", "ALS Btn On", white, black, blue, black
	indicator = {status1 & 0b00000010}, "Launch Off", "Launch On", white, black, blue, black
	indicator = {status1 & 0b00000100}, "Shift-cut Off", "Shift-cut On", white, black, red, black
;for the next 2, they should indicate active function (WBO2 sampling, IAC PID control)
	indicator = {status1 & 0b00001000}, "WBO2 Off", "WBO2 On", red, black, green, black
	indicator = {status1 & 0b00010000}, "IAC Off", "IAC On", white, black, green, black

If someone can come up with more bits here, feel free to add them to firmware and i'll commit the needed lines in vemsv3.ini

Remove this bit when firmware part is implemented

//Emil


Discussion about a limphome feature:

GenBoard/UnderDevelopment/FirmwareChanges/LimpHome


Release system discussion:

GenBoard/UnderDevelopment/FirmwareChanges/TestingAndReleases