ECU Version Definitions

Developer topics relating to software that provides a tuning UI to alter ECU code and data

Moderator: Freon

Postby qoncept » Mon Feb 13, 2006 5:14 am

Kha0S wrote:
qoncept wrote:I've had to make a few changes to the XML format to facilitate some creature comforts and calculations of values that couldn't be done with just the offset and scalefactor. So I ended up using epifan's method of expressions for real value calculations.


What linear function can't be represented with simply a scale factor and offset?

What nonlinear conversion is required in the Subaru ECU?

I couldn't calculate AFR with just the scalefactor and offset. So really, you're right -- everything can be represented with just the scalefactor and offset, but to convert fuel to a number familiar to most people, something needed to be done.
qoncept
 
Posts: 249
Joined: Tue Oct 04, 2005 6:43 pm
Location: Montgomery, AL

Postby Kha0S » Mon Feb 13, 2006 5:45 am

Good point... found that one myself this morning. :D
Kha0S
 
Posts: 106
Joined: Tue Jan 11, 2005 12:30 pm
Location: MY02 USDM WRX / Nashua, NH

Postby qoncept » Tue Feb 28, 2006 8:25 am

Colby, did you have any plans for dealing with different ROM filesizes? I'm trying to figure a way that would work for different manufacturers that could possibly have configurations we haven't seen (ie, tables before/after RAM, ECUs that maybe have 2 sections of RAM?).

Do you think any ECUs out there would have RAM in 2 different places? It seems pretty unlikely, but I don't want to make an assumption that will bite me in the future.
qoncept
 
Posts: 249
Joined: Tue Oct 04, 2005 6:43 pm
Location: Montgomery, AL

Postby cboles » Tue Feb 28, 2006 9:43 am

Yes. I have that completely covered. I use "memory models" for each ROM definition. For example, here the ROM metadata "wrxbase" references the memory model 68HC16Y5 for a WRX:

Code: Select all
<rom>
   <romid>
      <xmlid>wrxbase</xmlid>
      <internalidaddress>200</internalidaddress>
      <internalidstring>--------</internalidstring>
      <memmodel>68HC16Y5</memmodel>
   </romid>
        .
        .
        .
</rom>


And the memory model itself looks like this:

Code: Select all
<ecumemmodels>
   <ecumemmodel version="1.0" model="68HC16Y5">
       <memsegment name="FB01" type="FLASH" start="00000000" length="4000" />
       <memsegment name="FB02" type="FLASH" start="00004000" length="4000" />
       <memsegment name="FB03" type="FLASH" start="00008000" length="4000" />
       <memsegment name="FB04" type="FLASH" start="0000C000" length="4000" />
       <memsegment name="FB05" type="FLASH" start="00010000" length="4000" />
       <memsegment name="FB06" type="FLASH" start="00014000" length="4000" />
       <memsegment name="FB07" type="FLASH" start="00018000" length="4000" />
       <memsegment name="FB08" type="FLASH" start="0001C000" length="4000" />
       <memsegment name="RAM"  type="RAM"   start="00020000" length="2000" />
       <memsegment name="FB09" type="FLASH" start="00028000" length="4000" />
       <memsegment name="FB10" type="FLASH" start="0002C000" length="4000" />
   </ecumemmodel>
        .
        .
        .
<ecumemmodels>


This allows my code to deal with sparse memory spaces, know which areas are modifiable in what ways (e.g. FLASH, ROM, RAM), and also know how the flash blocks are sized for erasing.
cboles
Site Admin
 
Posts: 1233
Joined: Wed Dec 29, 2004 5:45 pm
Location: Seattle, WA

Previous

Return to Tuning Software

Who is online

Users browsing this forum: No registered users and 12 guests