Since supported Pids are not always best for tuning, which RAM addresses needs to be logged for best tuning of ls1.
I will try to find some sequence to find the needed RAM address, across all ls1 OS. But have no idea which needs to be logged.
Any suggestions are welcomed.
LS1 Ram log parameters
-
kur4o
- Posts: 1154
- Joined: Sun Apr 10, 2016 11:20 am
-
Tazzi
- Posts: 3627
- Joined: Thu May 17, 2012 10:53 am
- cars: VE SS Ute
- Location: WA
Re: LS1 Ram log parameters
This is something I always thought about, but never thought of a simple way of identifying the ram address.
The only method I can think of, is if you simulate a sensor reading to the ECU, so its a perfect exact value, and then compare the PID value to RAM address values, until you find matches.
Change the value slightly and compare if the RAM value changes to match the PID value.
Its alot of work.. but.. is a potential method??
The only method I can think of, is if you simulate a sensor reading to the ECU, so its a perfect exact value, and then compare the PID value to RAM address values, until you find matches.
Change the value slightly and compare if the RAM value changes to match the PID value.
Its alot of work.. but.. is a potential method??
Your Local Aussie Reverse Engineer
Contact for Software/Hardware development and Reverse Engineering
Site:https://www.envyouscustoms.com
Mob:+61406 140 726

Contact for Software/Hardware development and Reverse Engineering
Site:https://www.envyouscustoms.com
Mob:+61406 140 726

-
Gampy
- Posts: 2332
- Joined: Fri Dec 14, 2018 9:38 pm
Re: LS1 Ram log parameters
Inquiring minds would like to know why supported pids are not always best for tuning ??
Intelligence is in the details!
It is easier not to learn bad habits, then it is to break them!
If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
It is easier not to learn bad habits, then it is to break them!
If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
-
turbo_v6
- Posts: 513
- Joined: Tue Apr 10, 2018 10:50 pm
Re: LS1 Ram log parameters
I would say one reason is that the SAE PID's are limited to certain ranges that could be exceeded (such as MAP being maxed out at 255 kpa).Gampy wrote:Inquiring minds would like to know why supported pids are not always best for tuning ??
LS1 Boost OS Version 5 Available Here. For feature suggestions post in here Development Thread.
-
MudDuck514
- Posts: 402
- Joined: Tue Jul 04, 2017 10:30 pm
- cars: 2001 Pontiac Grand AM SE
LD9 2.4l I4, 4T40E
2005 Chevrolet Venture
LA1 3400 V6, 4T65E - Location: North TX, USA
Re: LS1 Ram log parameters
Hi all;Tazzi wrote:This is something I always thought about, but never thought of a simple way of identifying the ram address.
The only method I can think of, is if you simulate a sensor reading to the ECU, so its a perfect exact value, and then compare the PID value to RAM address values, until you find matches.
Change the value slightly and compare if the RAM value changes to match the PID value.
Its alot of work.. but.. is a potential method??
And THIS is why I grabbed the ENTIRE wiring harness WITH ALL SENSORS etc. when I pulled the LA1 3400 V6 replacement for my Venture!
Next up, a complete harness etc for a V8!
Mike
-
Gampy
- Posts: 2332
- Joined: Fri Dec 14, 2018 9:38 pm
Re: LS1 Ram log parameters
I thank you sir!bubba2533 wrote:I would say one reason is that the SAE PID's are limited to certain ranges that could be exceeded (such as MAP being maxed out at 255 kpa).
Learn something new everyday, I always thought PIDs were just standardized pointers to a raw value address ...
Intelligence is in the details!
It is easier not to learn bad habits, then it is to break them!
If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
It is easier not to learn bad habits, then it is to break them!
If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
-
NSFW
- Posts: 802
- Joined: Fri Feb 02, 2018 5:13 am
Re: LS1 Ram log parameters
Some of the PIDs are indeed exactly the same information you'd get from reading RAM.
Some of them have reduced precision (1 byte instead of 2) or use weird units (load as a percentage rather than as grams/cylinder).
And some of thing things you want for tuning don't have PIDs, like when I was tuning idle I wanted to see how the PID feedback values were contributing.
I'm pretty sure the only way to get RAM addresses is to reverse engineer the bin file, but it's not as hard as it might sound.
It's pretty straightforward to find a table in the ROM that maps from PID values to pointers to functions that fetch those PID values. Those functions tend to be really simple (they will always read a value from RAM, and maybe do some very simple arithmetic on it) so you can easily find the RAM addresses associated with each PID.
You can also start with table addresses from XDFs, and find the code that does the lookup (the disassembler make that easy). Right before the table lookup instruction, there will be instructions that read the RAM addresses associated with the table's inputs, and right after the table lookup there's usually code that stores the table's output value.
The more RAM addresses you find, the easier it is to figure out what other code is doing, because when you look at a random bit of code it'll have some of the addresses already defined, which makes it easier to figure out (or at least guess) what the remaining addresses are.
Anyway, when you find an address that seems interesting, you put it into the logger XML and see how it behaves. Sometimes it's what I thought, sometimes it isn't, so I usually take a couple/few guesses based on what I find in the disassembly. That raises the odds that one them will turn out to be right.
I was working on 3358 (because it was in my car) and lately I've been looking into 7603 (because that's what I'm switching to). 3358 is not something I'll spend more time on though - almost nobody else is using it or should be using it.
This stuff takes time, so I really think we should focus on 2156 and 6125 for P01s, and 7603 for P59s. Those will help the biggest number of users with the smallest amount of time.
Some of them have reduced precision (1 byte instead of 2) or use weird units (load as a percentage rather than as grams/cylinder).
And some of thing things you want for tuning don't have PIDs, like when I was tuning idle I wanted to see how the PID feedback values were contributing.
I'm pretty sure the only way to get RAM addresses is to reverse engineer the bin file, but it's not as hard as it might sound.
It's pretty straightforward to find a table in the ROM that maps from PID values to pointers to functions that fetch those PID values. Those functions tend to be really simple (they will always read a value from RAM, and maybe do some very simple arithmetic on it) so you can easily find the RAM addresses associated with each PID.
You can also start with table addresses from XDFs, and find the code that does the lookup (the disassembler make that easy). Right before the table lookup instruction, there will be instructions that read the RAM addresses associated with the table's inputs, and right after the table lookup there's usually code that stores the table's output value.
The more RAM addresses you find, the easier it is to figure out what other code is doing, because when you look at a random bit of code it'll have some of the addresses already defined, which makes it easier to figure out (or at least guess) what the remaining addresses are.
Anyway, when you find an address that seems interesting, you put it into the logger XML and see how it behaves. Sometimes it's what I thought, sometimes it isn't, so I usually take a couple/few guesses based on what I find in the disassembly. That raises the odds that one them will turn out to be right.
I was working on 3358 (because it was in my car) and lately I've been looking into 7603 (because that's what I'm switching to). 3358 is not something I'll spend more time on though - almost nobody else is using it or should be using it.
This stuff takes time, so I really think we should focus on 2156 and 6125 for P01s, and 7603 for P59s. Those will help the biggest number of users with the smallest amount of time.
Please don't PM me with technical questions - start a thread instead, and send me a link to it. That way I can answer in public, and help other people who have the same question. Thanks!
-
antus
- Site Admin
- Posts: 10097
- Joined: Sat Feb 28, 2009 10:34 am
- cars: TX Gemini 2L Twincam 8psi
TX Gemini SR20 18psi
Datsun 1200 Ute
Subaru Blitzen '06 EZ30 4th gen, 3.0R Spec B
Subaru WRX 2007
Re: LS1 Ram log parameters
You can find ram addresses if you find a generic way of interpreting the code that handles the pid request in the DLC interrupt handler, but its true there isnt much extra there. Raw data eg 1 byte 0-255 is usually the analog ADC resolution. If you go say 3 bar map the analog resolution doesn't change, but the scaling to -100 to 300kpa does. if you read the map voltage pid you'll get the max precision which you can then scale on the pc side, same as the pcm does. dpids are about as good as you'll get. the packets get longer so fewer packets = less time lost in stopping and starting transmission but they dont get too long and you can get more data per packet more quickly. beyond that you can put the pcm in to 4x data speed and push a lot more data through again. None if this is to say you cant get more things if you go direct to ram but I dont think there is a huge amount of practical gain there.
Have you read the FAQ? For lots of information and links to significant threads see here: http://pcmhacking.net/forums/viewtopic.php?f=7&t=1396
-
Gampy
- Posts: 2332
- Joined: Fri Dec 14, 2018 9:38 pm
Re: LS1 Ram log parameters
What's the difference between a pid and dpid ??
Intelligence is in the details!
It is easier not to learn bad habits, then it is to break them!
If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
It is easier not to learn bad habits, then it is to break them!
If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
-
NSFW
- Posts: 802
- Joined: Fri Feb 02, 2018 5:13 am
Re: LS1 Ram log parameters
PID = a single parameter
DPID = Dynamic Parameter, or something like that. For data logging you can configure a single DPID (id 0xFE - 0xFB) to return the values of 3-6 PIDs (6 bytes total).
The logger then asks for up to 4 DPIDs with a single request, and the PCM responds with up to 24 bytes of data.
DPID = Dynamic Parameter, or something like that. For data logging you can configure a single DPID (id 0xFE - 0xFB) to return the values of 3-6 PIDs (6 bytes total).
The logger then asks for up to 4 DPIDs with a single request, and the PCM responds with up to 24 bytes of data.
Please don't PM me with technical questions - start a thread instead, and send me a link to it. That way I can answer in public, and help other people who have the same question. Thanks!