RomRaider Logo

RomRaider

Open Source ECU Tools
 FAQ •  Register •  Login 

RomRaider

Documentation

Community

Developers

It is currently Sat Feb 21, 2026 4:10 pm

All times are UTC





Post new topic Reply to topic  [ 356 posts ]  Go to page 1, 2, 3, 4, 5 ... 24  Next
Author Message
 Post subject: Realtime tuning
PostPosted: Tue Nov 14, 2006 5:30 am 
Offline
Administrator
User avatar

Joined: Fri Jan 13, 2006 4:33 pm
Posts: 2079
Location: Palo, IA
We all want realtime tuning (and other modifications to the stock ECU). It turns out we're really not as close as I thought/hoped. As it is, there is really no realtime tuning in sight, and I definately don't have the skills to do it. So I thought I'd try to get some things together in hopes that it'll help someone get it done.

Basically, there's a short list of what needs to be done. Doing it is, of course, the hard part.
- Disassemble stock ECU code
- Write new table lookup code pointing to RAM instead of ROM, with fallbacks (in case if reset ECU or whatnot)
- Recompile new code

Now, there have been a few people who have started doing this and their progress is unknown or they may have stopped. A couple ideas have been presented to me. What it comes down to is the only viable option, other than stumbling upon someone (which hasnt happened), is rentacoder.com. We could take donations to pay someone to do it. (I did luck out and find Paul to write the logger but I don't see that happening again)

The issues with that..
- We aren't going to collect enough donations to pay someone even close to fair market value for such a task. If someone were to do it, they'd have to 1) be a nerd up for the challenge and/or 2) have an interest in the result. Please discuss this. We need to have a clear set of requirements and deliverables to provide to the potential developer of this and we'll need to get that ready before asking for donations or posting a request.

- I counted today and we have exactly 100 unique ROMs in the ECU definition file. Adding realtime tuning to a ROM would mean doing the above steps for each of them. We'd at the very least need to compile a list of what revisions can run on what ECU and eliminate duplicates. If we can run a 2005 STi map on all Forresters, the Forrester ROMs aren't necessary (we can copy tables over or whatever). This is what the Honda guys on pgmfi.org do. I took a look at Crome today and it has all four (FOUR!!!) ROMs that Honda guys, using OBD-I ECUs on EVERY Honda made from 1991-2005, need. 100 ECU revisions isn't going to happen. We need to make the list as short as possible.

- We need the compiler. I'd link the thread but I'm too tired right now. $99 -- no big deal. We can get the donations for it in a couple hours.

I'm rambling now and talking about things I have a very limited understanding of. The points I am sure of and adament about have been stated above. Thoughts?

_________________
- Jared


Last edited by qoncept on Tue Nov 14, 2006 5:46 am, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 5:44 am 
Offline
Experienced
User avatar

Joined: Mon Sep 18, 2006 2:55 pm
Posts: 229
No matter what happens, people need to start Donating if haven't already


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 6:02 am 
Offline
RomRaider Developer

Joined: Wed Jul 12, 2006 1:25 am
Posts: 1025
First thing we need to get is the source from Colby. I've saved off some sample source of his that deals with 16 bit roms. When we get his c++ source for the 32 bit rom flashing, well be in a good spot. Just a matter of translating his code to Java... which considering some of his hand assembly tuning on the kernels, might complicate things. (I've not thought through all of the above obviously).


Top
 Profile  
 
 Post subject: Re: Realtime tuning
PostPosted: Tue Nov 14, 2006 5:13 pm 
Offline
Experienced

Joined: Fri Feb 10, 2006 8:41 pm
Posts: 483
Location: toggle switch envy, PA
qoncept wrote:
We all want realtime tuning (and other modifications to the stock ECU). It turns out we're really not as close as I thought/hoped. As it is, there is really no realtime tuning in sight, and I definately don't have the skills to do it. So I thought I'd try to get some things together in hopes that it'll help someone get it done.

Basically, there's a short list of what needs to be done. Doing it is, of course, the hard part.
- Disassemble stock ECU code
- Write new table lookup code pointing to RAM instead of ROM, with fallbacks (in case if reset ECU or whatnot)
- Recompile new code

Now, there have been a few people who have started doing this and their progress is unknown or they may have stopped. A couple ideas have been presented to me. What it comes down to is the only viable option, other than stumbling upon someone (which hasnt happened), is rentacoder.com. We could take donations to pay someone to do it. (I did luck out and find Paul to write the logger but I don't see that happening again)

The issues with that..
- We aren't going to collect enough donations to pay someone even close to fair market value for such a task. If someone were to do it, they'd have to 1) be a nerd up for the challenge and/or 2) have an interest in the result. Please discuss this. We need to have a clear set of requirements and deliverables to provide to the potential developer of this and we'll need to get that ready before asking for donations or posting a request.

- I counted today and we have exactly 100 unique ROMs in the ECU definition file. Adding realtime tuning to a ROM would mean doing the above steps for each of them. We'd at the very least need to compile a list of what revisions can run on what ECU and eliminate duplicates. If we can run a 2005 STi map on all Forresters, the Forrester ROMs aren't necessary (we can copy tables over or whatever). This is what the Honda guys on pgmfi.org do. I took a look at Crome today and it has all four (FOUR!!!) ROMs that Honda guys, using OBD-I ECUs on EVERY Honda made from 1991-2005, need. 100 ECU revisions isn't going to happen. We need to make the list as short as possible.

- We need the compiler. I'd link the thread but I'm too tired right now. $99 -- no big deal. We can get the donations for it in a couple hours.

I'm rambling now and talking about things I have a very limited understanding of. The points I am sure of and adament about have been stated above. Thoughts?


ok, notable ecu differences that might require deviation from standard (lets call 05 sti standard)
don't know much about 16bit DBC WRXes, someone else should know the differences.


04 dbw has half sized rom with no immobilizer

05-06 lgt/obxt have different tables and different sized tables (AVCS most notably; however, lgt and obxt can use the same roms interchangably, as I know c0bb does this)

06wrx/fxt/ 07 DBW have air injector pumps


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 5:48 pm 
Offline
Experienced
User avatar

Joined: Fri Jul 14, 2006 3:30 pm
Posts: 258
Dont give up hope yet qconcept, we found taulon<sp?> and I dont think we were trying to find him....nor do I know how he found us?

I'll ask around and see If I cant find some die hard programmers who are up to the challenge.

_________________
Owner of AWDTuning.com
2005 CGM WRX
2009 DGM Spec.b


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 6:21 pm 
Offline
RomRaider Donator
User avatar

Joined: Thu Mar 30, 2006 2:38 am
Posts: 5336
I think the easiest method to implement real-time tuning would be to store the real-time tables in ram exactly as the tables are stored in rom. That is, for 16bit ecus, you'll use the map type definition byte, row/column count, etc. Then you would just need to change the map offset in the rom to point to the specific location in ram. There would be no need to modify the functions that are repeatedly called to interpolate and return the target map value.

The issue with this would be what happens after a reset. Ram is cleared and therefore you lose the real-time data. You would need to add code to copy over the values from the base map to the real-time locations in ram after a reset so that it is never empty.

From here, all you would need was an application that could be integrated into RomRaider to write the real-time changes to ram.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 6:54 pm 
Offline
Administrator
User avatar

Joined: Fri Jan 13, 2006 4:33 pm
Posts: 2079
Location: Palo, IA
What you are saying could work reasonably well like this -- use a ROM with the alternate address, tune your car, apply the changes to a image that still looks at the original address in ROM and flash that.

That's a pretty big liability though. What if someone forgets? What if they keep using the RAM based tables and get stuck somewhere without a laptop?

_________________
- Jared


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 7:34 pm 
Offline
Experienced
User avatar

Joined: Fri Jul 14, 2006 3:30 pm
Posts: 258
It would work for me, I rarely get into my car without my trusty laptop. :)

_________________
Owner of AWDTuning.com
2005 CGM WRX
2009 DGM Spec.b


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 7:55 pm 
Offline
RomRaider Donator
User avatar

Joined: Thu Mar 30, 2006 2:38 am
Posts: 5336
qoncept wrote:
What you are saying could work reasonably well like this -- use a ROM with the alternate address, tune your car, apply the changes to a image that still looks at the original address in ROM and flash that.

That's a pretty big liability though. What if someone forgets? What if they keep using the RAM based tables and get stuck somewhere without a laptop?

Yeah, that would work somewhat. That is, the real-time tuning would be temporary. You flash the temporary real-time enabled ROM. Then you edit your real-time maps in RAM. Do your tuning for a bit and figure out what works best. Transfer these values over to a normal ROM. Flash that ROM replacing the temporary RT rom. If you forgot to flash and left the temporary RT rom on there and the ecu was reset as some point, and assuming that injector scaling was a real-time map, then the car just wouldn't start because the returned value would be, I assume, zero. You could actually setup something like this with a hex editor and the 32bit ecus because the map structure offsets are literal offsets which you could just replace with RAM locations. You could do the same with 16bit ecus as well.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 8:49 pm 
Offline
Administrator
User avatar

Joined: Fri Jan 13, 2006 4:33 pm
Posts: 2079
Location: Palo, IA
I'd really prefer not to do it that way. I think it would result in a lot of broken cars. Aren't the fuel tables in the 16-bit ECUs inverse? ie, 0 = rich?

_________________
- Jared


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 11:03 pm 
Offline
RomRaider Donator
User avatar

Joined: Thu Mar 30, 2006 2:38 am
Posts: 5336
0 = no enrichment. Basically 14.7 afr. You could do it this way, you would just need code to rewrite the base to ram after a reset. If you did, there would always be a real-time map there even after a reset, although then there would be basically a copy of your base map.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 11:06 pm 
Offline
Administrator
User avatar

Joined: Fri Jan 13, 2006 4:33 pm
Posts: 2079
Location: Palo, IA
Right.. so we're back to reverse engineering the ROM.. ;)

_________________
- Jared


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 14, 2006 11:38 pm 
Offline
Administrator
User avatar

Joined: Fri Jan 13, 2006 4:33 pm
Posts: 2079
Location: Palo, IA
Alright, in a short conversation with a few people in #asm on efnet, the initial impressions are our best bet would be 1) ask Subaru for the source or 2) write our own from scratch. :(

_________________
- Jared


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 15, 2006 12:26 am 
Offline
Experienced

Joined: Wed Jul 26, 2006 7:19 pm
Posts: 650
Location: Connecticut, USA
merchgod wrote:
0 = no enrichment. Basically 14.7 afr. You could do it this way, you would just need code to rewrite the base to ram after a reset. If you did, there would always be a real-time map there even after a reset, although then there would be basically a copy of your base map.
It should be easy to find the code that initializes RAM after a reset before the engine starts. It's probably the only code which references or includes the address of the default IAM. You simply hook it to branch to a little subroutine which copies the ROM maps to their proper place within the realtime maps.


Last edited by Jon [in CT] on Wed Nov 15, 2006 12:39 am, edited 2 times in total.

Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 15, 2006 12:26 am 
Offline
RomRaider Developer

Joined: Wed Jul 12, 2006 1:25 am
Posts: 1025
qoncept wrote:
Alright, in a short conversation with a few people in #asm on efnet, the initial impressions are our best bet would be 1) ask Subaru for the source or 2) write our own from scratch. :(


I was in Japan a few months ago, I was in Subaru head quarters.... had I known you wanted the source....


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 356 posts ]  Go to page 1, 2, 3, 4, 5 ... 24  Next

All times are UTC


Who is online

Users browsing this forum: Google [Bot] and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subsilver by phpBBservice.nl