xswrex wrote:New2Scoobs wrote:Again, which cars have a 32bit denso ECU?
if it matters so much, if rom size is 512kb or 1024kb then it is 32bit
Cool, 1 thing less for me to worry about
Moderator: Freon
xswrex wrote:New2Scoobs wrote:Again, which cars have a 32bit denso ECU?
if it matters so much, if rom size is 512kb or 1024kb then it is 32bit
xswrex wrote:struct2D :
rowcnt :2bytes Rows count
databits :2bytes Type of data (0=32bit,4=8bit,8=16 bit)
rowofs :4bytes Rows offset
datofs :4bytes Data offset
if databits <> 0x0000 (32bit data dont have scalings, this is strange....)
mult :4bytes Multiplier for data
add :4bytes Addition to data
struct3D :
colcnt :2bytes Cols count
rowcnt :2bytes Rows count
colofs :4bytes Cols offset
rowofs :4bytes Rows offset
datofs :4bytes Data offset
databits :4bytes Type of data (0=32bit,4=8bit,8=16 bit)
mult :4bytes Multiplier for data
add :4bytes Addition to data
The mult and add must be interpreted as floating point numbers (4byte single)
Expression for data in XML: [data]*mult+(add)
2 things remaining
find the axis scalings (if they are in there)
match map definitions to map names
Freon wrote:I played with it a bit on some 3D maps I found (where I could only find the data). It sorta makes sense. I'm doing searches on data with the data offsets I know and found a portion of the rom that seems to have all the map definitions.
NeverLies wrote:
One thing remaining:
Axis scalings is IEE 754:
Conversion: The value of a IEEE-754 number is computed as:
sign * 2exponent * mantissa
The sign is stored in bit 32. The exponent can be computed from bits 24-31 by subtracting 127. The mantissa (also known as significand or fraction) is stored in bits 1-23. An invisible leading bit (i.e. it is not actually stored) with value 1.0 is placed in front, then bit 23 has a value of 1/2, bit 22 has value 1/4 etc. As a result, the mantissa has a value between 1.0 and 2. If the exponent reaches -127 (binary 00000000), the leading 1 is no longer used to enable gradual underflow.
Epifan, it would be nice if we could write such formula in EcuEdit
<scaling name="Timing" units="degrees" toexpr="x*90/256-20" frexpr="(x+20)*256/90" format="%.1f" min="-20" max="70" inc="1" storagetype="uint8" endian="little"/>
<scaling name="RPM" units="RPM" toexpr="x" frexpr="x" format="%.0f" min="0" max="10000" inc="50" storagetype="float" endian="little"/>
<scaling name="Load" units="" toexpr="x" frexpr="x" format="%.2f" min="0" max="4" inc="0.05" storagetype="float" endian="little"/>
xswrex wrote:also in ecuedit should be fairly easy to implement. I suppose it is coded in delphi, so "single" is the specific coding type. As is it implemented now [value] is an integer type. Add a [valuesomething] in the expression parser which is "single" and it is done
NeverLies wrote:Axis scalings is IEE 754:
Conversion: The value of a IEEE-754 number is computed as:
sign * 2exponent * mantissa
The sign is stored in bit 32. The exponent can be computed from bits 24-31 by subtracting 127. The mantissa (also known as significand or fraction) is stored in bits 1-23. An invisible leading bit (i.e. it is not actually stored) with value 1.0 is placed in front, then bit 23 has a value of 1/2, bit 22 has value 1/4 etc. As a result, the mantissa has a value between 1.0 and 2. If the exponent reaches -127 (binary 00000000), the leading 1 is no longer used to enable gradual underflow.
xswrex wrote:also in ecuedit should be fairly easy to implement. I suppose it is coded in delphi, so "single" is the specific coding type. As is it implemented now [value] is an integer type. Add a [valuesomething] in the expression parser which is "single" and it is done
cboles wrote:I've added support for float and double types in EcuFlash for the next release. Here's an example for an Ignition map based on what was presented here. The scalings for the map look like this:
Users browsing this forum: No registered users and 3 guests