Notices
ECU Flash

status of 2 byte load?

Thread Tools
 
Search this Thread
 
Old Mar 2, 2007 | 06:19 PM
  #76  
tephra's Avatar
EvoM Guru
15 Year Member
iTrader: (6)
 
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
Originally Posted by chrisw
correct. the memory is in the MUT table as the previous poster pointed out.
but i dont see any new code for ECU to actually update the MUT table..?
Reply
Old Mar 2, 2007 | 06:38 PM
  #77  
jfitzpat's Avatar
Evolving Member
 
Joined: Dec 2006
Posts: 276
Likes: 0
Originally Posted by tephra
but i dont see any new code for ECU to actually update the MUT table..?
Think of it this way. The MUT command is an ID. The ID is an offset into a table of addresses in memory, each address in the table points to a byte to be returned.

The MUT 'handler' for this is very simple:

Receive ID, multiply ID times 4, add result to base address of MUT lookup table. Fetch address from the table, fetch byte from fetched address, transmit it...

They are not talking about recoding the ECU, just changing what addresses are examined by a couple of seemingly not very useful MUT IDs. The hard part would seem to be finding the two bytes to repoint the MUT table at.

-jjf
Reply
Old Mar 2, 2007 | 06:43 PM
  #78  
chrisw's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2003
Posts: 2,217
Likes: 0
From: Santa Cruz
Originally Posted by tephra
but i dont see any new code for ECU to actually update the MUT table..?

correct.

what is happening is we are assigning MUT table entries 0 and 1 to point to the memory addresses identified by the address parameter

the MUT table entries are identified by the "name" parameter, the memory address for the load is idenified by the "address" parameters.
Code:
<table name="00" address="38062" type="1D" level="1" scaling="uint16" /> 
  <table name="01" address="38066" type="1D" level="1" scaling="uint16" />
the problem is the MUT table is arranged in 1 byte sizes which limits the range of data that we can retreive from each MUT request. What this trick does is split the load value into 2 byte sized portions for you to read. the second part of the equation is to combine those bytes on the logger side to get the actual load value.

this post
https://www.evolutionm.net/forums/sh...2&postcount=45

contains the formula for using the 2 byte load in evoscan, it's similar to the formula you will need if you want to use Mitsulogger.

2 byte load =((256*[00])+[01])*0.3125
Reply
Old Mar 2, 2007 | 06:46 PM
  #79  
tephra's Avatar
EvoM Guru
15 Year Member
iTrader: (6)
 
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
ahh ok gotcha.

so we are telling the MUT table where to look in memory via the entry number (requestID) in the table..

seems simple enough.. :P

so for the average user to get this to work we need to update the ECU's MUT table with new memory pointers (to the real load bytes) and then we need to get our logging software to request those updated RequestID's... and log it
Reply
Old Mar 2, 2007 | 07:00 PM
  #80  
jfitzpat's Avatar
Evolving Member
 
Joined: Dec 2006
Posts: 276
Likes: 0
Originally Posted by chrisw
2 byte load =((256*[00])+[01])*0.3125
I take it: ((256*[00])+[01]) means UINT16, Big Endian?

That's what I coded for, but it never hurts to make sure!

-jjf
Reply
Old Mar 2, 2007 | 07:03 PM
  #81  
tephra's Avatar
EvoM Guru
15 Year Member
iTrader: (6)
 
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
I think I'm still missing some thing here, I put those 2 tables into EcuFlash, and opened and saved my ROM, but when I compared my new ROM to my old they are exactly the same...??

Are the 38062 and 38066 memory positions universal amongst different ECU's? Ie will that work for my AUDM??
Reply
Old Mar 2, 2007 | 07:08 PM
  #82  
chrisw's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2003
Posts: 2,217
Likes: 0
From: Santa Cruz
Originally Posted by tephra
I think I'm still missing some thing here, I put those 2 tables into EcuFlash, and opened and saved my ROM, but when I compared my new ROM to my old they are exactly the same...??

Are the 38062 and 38066 memory positions universal amongst different ECU's? Ie will that work for my AUDM??
no, I see that you have a Evo 9, the memory addresses stated here are only for the EVO 8 ROM.

You are not changing anything on the ROM image itself, only pointing to an existing memory address that contains the actual load value.
Reply
Old Mar 2, 2007 | 07:11 PM
  #83  
tephra's Avatar
EvoM Guru
15 Year Member
iTrader: (6)
 
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
ok so I can still use 38062/38066 because they are 00 and 01 MUT entries?

but I need to find the real memory load positions??

How the hell do I do that :P
Reply
Old Mar 2, 2007 | 07:20 PM
  #84  
tephra's Avatar
EvoM Guru
15 Year Member
iTrader: (6)
 
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
Originally Posted by jcsbanks

88590013/885900014:
&H3EE66=decimal 27458

&H3EE6A=decimal 27459

88590015:
&H3EE86=decimal 27458

&H3EE8A=decimal 27459
ahh ok I think I get it...

so for a 13/14 RequestID 00 is @ 0x3EE66, and 01 is @ 0x3EE6A....

So it shouldn't be too hard for me to find the memory address of RequestID 00 on my AUDM?

is 27458 and 27459 universal memory positions for Evo9's for Load??

Last edited by tephra; Mar 2, 2007 at 07:27 PM.
Reply
Old Mar 2, 2007 | 07:46 PM
  #85  
chrisw's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2003
Posts: 2,217
Likes: 0
From: Santa Cruz
Originally Posted by tephra
ahh ok I think I get it...

so for a 13/14 RequestID 00 is @ 0x3EE66, and 01 is @ 0x3EE6A....

So it shouldn't be too hard for me to find the memory address of RequestID 00 on my AUDM?

is 27458 and 27459 universal memory positions for Evo9's for Load??
no they are not. That is the problem. Finding the correct memory addresses is like looking for a needle in a haystack.
Reply
Old Mar 2, 2007 | 09:55 PM
  #86  
tephra's Avatar
EvoM Guru
15 Year Member
iTrader: (6)
 
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
hrmm ok - if i want to try and find these memory addresses what do I need todo?

presumably start disassembling the ROM?
Reply
Old Mar 3, 2007 | 07:02 AM
  #87  
chrisw's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2003
Posts: 2,217
Likes: 0
From: Santa Cruz
Originally Posted by tephra
hrmm ok - if i want to try and find these memory addresses what do I need todo?

presumably start disassembling the ROM?
yeah, welcome to the wonderful world of hacking your car...

I think there are some efforts going on to find these addresses, and basically decode the EVO 9 roms, but I don't know the status of these projects.
Reply
Old Mar 3, 2007 | 10:55 AM
  #88  
JoeBee's Avatar
Evolving Member
 
Joined: Sep 2006
Posts: 152
Likes: 0
From: Germany
2 Byte Adresses for EVO7, ID: 99860002

2 Byte Load:
Load high byte: FFFF885C
Load low byte: FFFF885D

2 Byte Airflow:
Airflow high byte: FFFF88B4
Airflow low byte: FFFF88B5

Mut Table IDs begins at: 0x302d8

So, if you want to patch MUT ID0 and ID1 to log load, then you must change:
Address 0x302da to 0x885C (load high byte)
Address 0x302de to 0x885D (load low byte)
Calculation of load: 5/16*(LoadHigh*256+LoadLow) (orig. load is 5/8*..)

If you want to patch MUT ID2 and ID3 to log airflow, then you must change:
Address 0x302e2 to 0x88B4 (airflow high byte)
Address 0x302e6 to 0x88B5 (airflow low byte)
Calculation: 6.29/64*(256*AirHigh+AirLow)
Reply
Old Mar 3, 2007 | 11:16 AM
  #89  
l2r99gst's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2004
Posts: 3,499
Likes: 4
From: CA
Nearly certain on these...someone can double check if they wish:

05 ROM, Internal ID 96940011

MUT table is defined at address 3F314 and it looks like this:



The 2 byte load address is FFFF899A and FFFF899B. So, change the first two values in your MUT table to these two values. If you don't have the whole MUT table defined in ECUFlash, you need address 3F316 and 3F31A.

If you want to add the MUT table to your ECUFlash definition, just add this to the 96940011.xml file in the rommetadata\mitsubishi\evo folder:

PHP Code:
<table name="MUT table" address="3f314" type="3D" level="1" scaling="Hex16">
        <table name="X" type="Static X Axis" elements="16" scaling="Hex16">
            <data>4</data>
            <data>6</data>
            <data>8</data>
            <data>A</data>
            <data>C</data>
            <data>E</data>
            <data>10</data>
            <data>12</data>
            <data>14</data>
            <data>16</data>
            <data>18</data>
            <data>1A</data>
            <data>1C</data>
            <data>1E</data>
            <data>0</data>
            <data>2</data>
        </table>
        <table name="Y" type="Static Y Axis" elements="32">
            <data>3f314</data>
            <data>3f334</data>
            <data>3f354</data>
            <data>3f374</data>
            <data>3f394</data>
            <data>3f3B4</data>
            <data>3f3D4</data>
            <data>3f3F4</data>
            <data>3f414</data>
            <data>3f434</data>
            <data>3f444</data>
            <data>3f474</data>
            <data>3f494</data>
            <data>3f4B4</data>
            <data>3f4D4</data>
            <data>3f4F4</data>
            <data>3f514</data>
            <data>3f534</data>
            <data>3f554</data>
            <data>3f574</data>
            <data>3f594</data>
            <data>3f5B4</data>
            <data>3f5D4</data>
            <data>3f5F4</data>
            <data>3f614</data>
            <data>3f634</data>
            <data>3f654</data>
            <data>3f674</data>
            <data>3f694</data>
            <data>3f6B4</data>
            <data>3f6D4</data>
            <data>3f6F4</data>
            <data>3f714</data>
        </table>
    </table> 


Eric
Attached Thumbnails status of 2 byte load?-05-mut-table.jpg  

Last edited by l2r99gst; Mar 4, 2007 at 06:03 AM.
Reply
Old Mar 3, 2007 | 01:01 PM
  #90  
chrisw's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2003
Posts: 2,217
Likes: 0
From: Santa Cruz
Originally Posted by jfitzpat
I take it: ((256*[00])+[01]) means UINT16, Big Endian?

That's what I coded for, but it never hurts to make sure!

-jjf
I think that is correct...
Reply



All times are GMT -7. The time now is 03:11 AM.