Pages: 1 ... 6 7 [8] 9 10
 71 
 on: April 11, 2024, 07:16:05 AM 
Started by fredrik_a - Last post by prometey1982
wra70 wrhj prometey shared before but don't have logging parameters for and it's a eastern Europe variant I'll never touch
На самом деле, евро варианты как раз намного лучше. Нет этой вашей пиндосской экологической ерунды с подсчетом давления паров в баке. Вырезаю эту чушь, когда у людей случаются проблемы, которые они победить не могут.

 72 
 on: April 11, 2024, 07:08:20 AM 
Started by fredrik_a - Last post by s60rawr
I have 5120 for
10ERHJ ( 00R Smiley
QHHJ ( EU 04 M66)
QKHJ ( US 04 M66 )
GPHJ 05+ m66
Wra72 variant of wrhj for the 06+ TF80 cars
wra70 wrhj prometey shared before but don't have logging parameters for and it's a eastern Europe variant I'll never touch

Don't need that many variants tbh

 73 
 on: April 11, 2024, 04:14:21 AM 
Started by fredrik_a - Last post by keichi
I didn't spent much time in 50WRHJ but i i just noticed some crazy things Smiley
Looks like it is very similar to newer MED17 codebase.

But what is most interesting, looks like your pdsl_w (actually its called pvdr_w) is already with 5120 hack from factory Smiley
That way your pvdkdsl_w (called pvd_w)=pvdr_w is also scaled up to 5120 from factory and that means no need to touch 0A1BCh constant.
So look like for 5120hack you just don't need to scale DLSGRAD/OFS at all Smiley

Maybe thats why you must "fix" fpvdkds_w later on in the code because of unnecessary scaling of DSLGRAD/OFS and/or 0A1BCh const.
Look like Volvo did some very interesting things on those latest software and 5120 mod should be done different way than all earlier sw. versions.

EDIT:
I just checked what pvd_w and pvdkds_w are at atmospheric pressure:
pvd_w = 12765 (x 0.078125 - 5120 factor) = 997mbar
pvdkds_w = 25530 = 12765 x 2 (x 0.0390625 - stock factor) = 997mbar

So pvd_w it scaled at 5120mbar from factory.
Then some variables like fpvdkds_w also use 5120 scale and other "normal" 2560 scale like pvdkds_w.
So more digging is needed probably to figure out  what exactly is scaled at 5120 and what at 2560 Smiley

Here is where 5120 is scaled down to 2560 for pvdkds_w:
Code:
ROM:000D589C F2 F8 66 F4                 mov     r8, pvd_w
ROM:000D58A0 E0 09                       mov     r9, #0
ROM:000D58A2 00 88                       add     r8, r8
ROM:000D58A4 10 99                       addc    r9, r9
ROM:000D58A6 48 90                       cmp     r9, #0
ROM:000D58A8 3D 02                       jmpr    cc_NZ, loc_D58AE
ROM:000D58AA 46 F8 FF FF                 cmp     r8, #0FFFFh
ROM:000D58AE
ROM:000D58AE             loc_D58AE:                              ; CODE XREF: sub_D5840+68↑j
ROM:000D58AE FD 03                       jmpr    cc_ULE, loc_D58B6
ROM:000D58B0 E6 F4 FF FF                 mov     r4, #0FFFFh
ROM:000D58B4 0D 01                       jmpr    cc_UC, loc_D58B8
ROM:000D58B6             ; ---------------------------------------------------------------------------
ROM:000D58B6
ROM:000D58B6             loc_D58B6:                              ; CODE XREF: sub_D5840:loc_D58AE↑j
ROM:000D58B6 F0 48                       mov     r4, r8
ROM:000D58B8
ROM:000D58B8             loc_D58B8:                              ; CODE XREF: sub_D5840+74↑j
ROM:000D58B8 F6 F4 64 F4                 mov     pvdkds_w, r4

Line 000D58A2 - here is pressure multiplied by 2 (by adding to itself - those compilers sometimes do things in weird way from human pov but we have to belive its more efficient this way Smiley

So Volvo did 5120 hack (in some part at least) before even it was trendy Wink

 74 
 on: April 11, 2024, 03:42:12 AM 
Started by fredrik_a - Last post by prometey1982
А вот и причина, почему я его не умножил ранее:
Code:
ROM:000D58C2                 mov     r7, pvdkdsl_w
ROM:000D58C6                 mov     r4, #0A1BCh
ROM:000D58CA                 mulu    r7, r4
ROM:000D58CC                 mov     fpvd_w, MDH
ROM:000D58D0                 mov     r5, MDH
ROM:000D58D4                 mov     r8, r5
ROM:000D58D6                 mov     r9, #0
ROM:000D58D8                 add     r8, r8
ROM:000D58DA                 addc    r9, r9
ROM:000D58DC                 cmp     r9, #0
ROM:000D58DE                 jmpr    cc_NZ, loc_D58E4
ROM:000D58E0                 cmp     r8, #0FFFFh
ROM:000D58E4
ROM:000D58E4 loc_D58E4:                              ; CODE XREF: sub_D5840+9E↑j
ROM:000D58E4                 jmpr    cc_ULE, loc_D58EC
ROM:000D58E6                 mov     r4, #0FFFFh
ROM:000D58EA                 jmpr    cc_UC, loc_D58EE
ROM:000D58EC ; ---------------------------------------------------------------------------
ROM:000D58EC
ROM:000D58EC loc_D58EC:                              ; CODE XREF: sub_D5840:loc_D58E4↑j
ROM:000D58EC                 mov     r4, r8
ROM:000D58EE
ROM:000D58EE loc_D58EE:                              ; CODE XREF: sub_D5840+AA↑j
ROM:000D58EE                 mov     fpvdkds_w, r4

Тут идет умножение на 41404. Поскольку числа там 2 байта, то максимум можно умножить на 65536. Либо добавлять инструкции для умножения fpvdkds_w на 2.

В общем версия 50WRHJ сложнее, чем более ранние для хака. Поэтому, пришлось потратить много времени на реализацию. Но все в прошлом, сейчас стабильно, уже на двух своих машинах, езжу на ней.

 75 
 on: April 11, 2024, 03:25:16 AM 
Started by fredrik_a - Last post by keichi
Just trace  fpvdkds_w where it comes from. You have it not scaled at the beginning but try to "fix" things in the middle of the code flow.

 76 
 on: April 11, 2024, 03:21:35 AM 
Started by fredrik_a - Last post by prometey1982
EDIT: And this part: udsl * DSLGRAD + DSLOFS its not computed exactly that.
In reality ECU does something like (udsl * DSLGRAD + DSLOFS *2) in postlift models. In pre facelift its even more complicated.
So when you come up with DSLGRAD/OFF doing simple linear function using sensor datasheet (P(U) for two points) you can leave DSLGRAD but need to divide DSLOFS by 2 - thats the trick here Smiley
And in pre-lift models there is different "trick" Smiley
Ты что-то путаешь. Сколько я смотрел прошивок, нигде такой дичи не видел. Везде были прямые вычисления и дальнейшее использование полученных переменных.
Вот тебе пример из прошивки моей машины, как раз рестайлинг 50WRHJ с DECOS:
Code:
ROM:000D7092                 mov     r12, DSLOFS
ROM:000D7096                 mov     r13, DSLGRAD
ROM:000D709A                 mov     r14, udslsum_l
ROM:000D709E                 mulu    r14, r13
ROM:000D70A0                 mov     r15, MDH
ROM:000D70A4                 cmp     r12, #0
ROM:000D70A6                 jmpr    cc_N, loc_D70B2
ROM:000D70A8                 add     r12, r15
ROM:000D70AA                 jmpr    cc_NC, loc_D70B8
ROM:000D70AC                 mov     r12, #0FFFFh
ROM:000D70B0                 jmpr    cc_UC, loc_D70B8
ROM:000D70B2 ; ---------------------------------------------------------------------------
ROM:000D70B2
ROM:000D70B2 loc_D70B2:                              ; CODE XREF: sub_D704A+5C↑j
ROM:000D70B2                 add     r12, r15
ROM:000D70B4                 jmpr    cc_C, loc_D70B8
ROM:000D70B6                 mov     r12, #0
ROM:000D70B8
ROM:000D70B8 loc_D70B8:                              ; CODE XREF: sub_D704A+60↑j
ROM:000D70B8                                         ; sub_D704A+66↑j ...
ROM:000D70B8                 mov     pdsl_w, r12
ROM:000D70BC                 rets

 77 
 on: April 11, 2024, 03:14:00 AM 
Started by fredrik_a - Last post by prometey1982
Вот так выглядит код в моем случае:

Code:
ROM:000B07BA sub_B07BA:                              ; DATA XREF: ROM:00010FA0↑o
ROM:000B07BA                 mov     r4, fpvdkds_w
ROM:000B07BE                 mov     r5, fkmsdk_w
ROM:000B07C2                 mulu    r5, r4
ROM:000B07C4                 mov     r2, MDL
ROM:000B07C8                 mov     r3, MDH
ROM:000B07CC                 jmpr    cc_N, loc_B07D8
ROM:000B07CE                 shl     r3, #2
ROM:000B07D0                 jmpr    cc_C, loc_B07D8
ROM:000B07D2                 shr     r2, #14
ROM:000B07D4                 or      r3, r2
ROM:000B07D6                 jmpr    cc_UC, loc_B07DC
ROM:000B07D8 ; ---------------------------------------------------------------------------
ROM:000B07D8
ROM:000B07D8 loc_B07D8:                              ; CODE XREF: sub_B07BA+12↑j
ROM:000B07D8                                         ; sub_B07BA+16↑j
ROM:000B07D8                 mov     r3, #0FFFFh
ROM:000B07DC
ROM:000B07DC loc_B07DC:                              ; CODE XREF: sub_B07BA+1C↑j
ROM:000B07DC                 mov     fpvdk_w, r3
ROM:000B07E0                 shr     r3, #8
ROM:000B07E2                 movb    fpvdk, rl3

Может, конечно, я что-то лишнее изменил, но мне пришлось восстанавливать fpvkd_w, после того, как fpvdkds_w был понижен в 2 раза. Тут нет деления, тут операции битовых сдвигов. Точнее деление есть и оно реализовано через битовые сдвиги.

 78 
 on: April 11, 2024, 03:04:35 AM 
Started by fredrik_a - Last post by keichi
С наклоном и смещением показаний датчика давления как раз проблем нет. Там можно сделать деление пополам или насколько нужно, хоть в 1.5 раза. Я же говорю о коде. Вот, выделенные жирным изменения, которые не делают /2 или *2.

No need to touch them. All those fxxx are just multipliers (unit less scalers) and you just need to trace from where they come from and if its related to pressure just scale there.

For example: fpvdk = fkmsdk x fpvdkds
fkmsdk - not pressure related, ignore
fpvdkds - pressure related = (udsl * DSLGRAD + DSLOFS) / 1013 - just scale 1013 division here.

1013 division in ASM look like this:
Code:
mov     r4, pvdkdsl_w
mov     r2, #647        ; 1013 division
mulu    r4, r2
mov     r5, MDH
mov     r4, MDL
mov     r2, r5
shr     r4, #10
shr     r5, #10
shl     r2, #6
or      r4, r2
When you analyze this code (just throw it into Keil and debug line by line and look at whats going on in registers) you will notice that you can just scale #647 variable - x2 for 5120 hack or any other scale you want.

EDIT: And this part: udsl * DSLGRAD + DSLOFS its not computed exactly that.
In reality ECU does something like (udsl * DSLGRAD + DSLOFS *2) in postlift models. In pre facelift its even more complicated.
So when you come up with DSLGRAD/OFF doing simple linear function using sensor datasheet (P(U) for two points) you can leave DSLGRAD but need to divide DSLOFS by 2 - thats the trick here Smiley
And in pre-lift models there is different "trick" Smiley

 79 
 on: April 11, 2024, 03:01:33 AM 
Started by Somebody - Last post by Somebody
Below some hints..
CWSAWE - 158A9
KFZWMN - 137B8
KFZWMNST - 13896
KFTVSA - 196FE
KFTVSAKAT - not exist in this firmware
DNWEK -158AF


Thank you very much!

Do you know if I have to consider anything else if the vehicle has tiptronic?

Is it possible that it won't work without kftvsakat?

And I've read something about dnwekfs, but I don't know if I have to modify that too.

Regards

 80 
 on: April 11, 2024, 02:32:03 AM 
Started by fredrik_a - Last post by prometey1982
There are few 1013 constants and 1013 divisions and in DECOS cars (R models and face-lift) there is also additional dppk_w calculation.
All of them can be freely scaled. Just arithmetic vars that can be change to whatever you want.

Tricky part is just boost sensor scaling DLSGRAD/OFS. ECU is not doing simple Y=GRAD*X+OFS when calculating boost from voltage.
If you leave stock boost senor (in case of 2bar Rmodels that may be the case) you can get on with this by just multiplying stock GRAD/OFS.
But when you change sensor you have to figure out how ECU calculate boost from sensor voltage (additional multipliers and/or additions) to come up with proper GRAD/OFS.
And its different in prelift and postlift models also.
С наклоном и смещением показаний датчика давления как раз проблем нет. Там можно сделать деление пополам или насколько нужно, хоть в 1.5 раза. Я же говорю о коде. Вот, выделенные жирным изменения, которые не делают /2 или *2.

Pages: 1 ... 6 7 [8] 9 10
Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Page created in 0.021 seconds with 14 queries. (Pretty URLs adds 0.001s, 0q)