Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Nissanin tehdasECUn muokkaaminen RomRaiderilla
#1
Haa! Pelastettu edesmenneeltä dnsf foorumilta TeroLuun vinkkaamana webarchiven avulla.



RomRaideriin on tehty rinnalle kohtuu hiljattain softa nimeltä nisprog, jolla saa flashattya nissanin tehdasecuja vuosilta ~2000-2010, jos flashays niissä suoritetaan K-linea eikä CAN väylää pitkin. Esimerkkinä kaikki 350z DE koneet on tuommoisia, mutta myös iso liuta muitakin on mahdollista tehdä.
Tämä antaa toimivan ja halvan vaihtoehdon upReville ja ecutekille, sillä kaikki tarvittavat ohjelmat on ilmaisia, avoimen lähdekoodin softia, ja ainoa mitä tarvitsee tietotaidon lisäksi on K-linea ymmärtävä usb->obd2 kaapeli, esim. tällainen
https://www.amazon.com/gp/product/B00K6498D0/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
 
HUOM!
Ecun muokkaus ja flashays on luonnollisesti aina omalla vastuulla, enkä ota mitään vastuuta tai syytä niskoilleni siitä jos auto muuttuu tiiliskiveksi. Vaikka tämä ei ole erityisen vaikeaa, niin tee aina kaikki ajatuksella ja älä muuta tai lisää mitään mistä et ole varma!
 
 
Riippuen siitä, löytyykö oman auton eculle jo valmiiksi tehdyt määrittelyt RomRaideriin, niin tarvitsee käyttää 2-4:ää eri ohjelmaa jotta saa ecua säädettyä.
RomRaider -> Ecun karttojen muokkaus, sekä auton dataloggaus jos omistaa J2534 yhteensopivan kaapelin. Suositus romraiderin foorumeilla on Openport 2.0. HUOM! Aikaisemmin linkkaamani kaapeli amazonista, ei kelpaa dataloggaukseen, vain ecun flashaykseen.
nisprog -> Auton ECUn ROM dumpin lataus, sekä ecun flashays muokatulla ROM:lla
winOLS demo versio -> Käytetään ECUn karttojen etsimiseen, vertailemalla kahta rom dumppia. Omaa, vielä tuntematonta ECUa sekä toista, josta jo tiedetään missä muistipaikoissa sen eri kartat ovat
Ghidra -> NSA:n disassembler ja reverse engineering softa. Käytetään etsittäessä ECUn karttojen x- ja y-akselien muistipaikkoja, sekä ECUn logiikan tutkimiseen

Alla on linkit alkuperäisiin ohjeisiin, jotka suosittelen myös lukemaan mutta kirjoitan alapuolelle neuvot myös suomeksi käyttämällä esimerkkinä oman autoni ECUn flashaysta.
tutorial: how to flash your nissan ECU with opensource tools: https://www.romraider.com/forum/viewtopic.php?f=64&t=14867
karttojen etsiminen winOLS:lla: https://nissanecu.miraheze.org/wiki/Rom_an_cf48d#wols
Lista ecuista, joista löytyy jo romdumppi foorumeilta. Ei vielä takaa, että karttojen määrityksiä olisi tehty kyseisille ecuille: https://www.romraider.com/forum/viewtopic.php?f=65&t=11098
Eri nissanin ecujen karttojen määritykset RomRaideriin: https://github.com/mrphyslaw/NissanDefs
vaihtoehtoisesti, JOS autosi on 350z/G35 alustalla, niihin keskittyvät määritykset: https://github.com/Pytrex/NissanDefinitions

Elikkäs, ensimmäiseksi tarvitsee ladata, asentaa ja konfiguroida ohjelmat koneelle/läppärille, sekä asentaa k-line kaapelin ajurit. Tutorialin: https://www.romraider.com/forum/viewtopic.php?f=64&t=14867 ensimmäisessä postauksessa on zippitiedostossa hyvä bundle, jolla aloittaa. Lataa se, ja pura nisprog ja romraider kansiot sopivaan paikkaan. Esim c:\nisprog ja c:\romraider. __MACOSX kansio on vain niitä varten, kenellä on applen kone.
Romraider kannattaa samantien päivittää uusimpaan versioon lataamalla se https://www.romraider.com/ ja purkamalla samaan kansioon, mihin aikaisemmin laitoit bundlezipissä olleen romraiderin.

winOLS:n demoversion saa osoitteesta https://www.evc.de/en/download/down_winols.asp ja Ghidran taasen https://ghidra-sre.org/

Kaapelin mukana pitäisi tulla CD-jossa on kaapelin ajurit, vaihtoehtoisesti ne voi ladata esim. täältä: http://www.wch.cn/download/CH341SER_EXE.html
 

RomRaider vaatii 32-bittisen javan runtimen, vaikka käytössäsi olisi 64-bittinen windows. Sen saa https://java.com/en/download/manual.jsp. Valitse "Windows Offline" EI "Windows Offline (64-bit)" ja asenna se.
Romraider käynnistetään ohjelman asennuskansion sisältä löytyvällä "run.bat" skriptillä, mutta sitä tarvitsee muokata jotta romraider löytää 32-bittisen javan. Avaa bat tiedosto esim notepadilla tai notepad++:lla.
bat:n sisällä on oletuksena tämännäköinen komento
start javaw.exe -Djava.library.path=lib/windows -Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true -Dsun.java2d.d3d=true -Xms64M -Xmx512M -jar RomRaider.jar

Suosittelen muuttamaan komennon seuraavanlaiseksi, ja muokkaa JAVAPATH sekä LIBPATH osoittamaan oikeisiin kansiopolkuihin omalle koneelleesi.
@echo off
setlocal enabledelayedexpansion
set "JAVAPATH=C:\Program Files (x86)\Java\jre1.8.0_291\bin\"
set "LIBPATH=J:\Ohjelmat\Nissan ECU tuning\RomRaider\lib\windows"
call "!JAVAPATH!javaw.exe" -Djava.library.path="!LIBPATH!" -Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true -Dsun.java2d.d3d=true -Xms64M -Xmx512M -jar RomRaider.jar
 
RomRaiderin tarvitsee tietää, mistä se löytää nissanin ecuille tehdyt karttojen .xml määritykset. Esimerkkinä, itse latasin 350z:aan erikoistuneet määrittelyt github.com/pytrex/nissandefinitions linkistä. RomRaiderin avaamisen jälkeen mennnään Definitions->definition manager->add ja lisätään määrittelyissä oleva nissandefs.xml tiedosto, EI yksittäisiä ECUID:llä nimettyjä xml tiedostoja.
Koska itselläni on JDM zeta, niin ensiksi piti kopioida "NissanDefs\Nissan Definitions" kansiosta tiedostot A2L.xml, xmlfooter, xmlheader ja combine_all.bat kansioon "Alternative Definitions (JDM-ZG)\350z" ja ajaa bat tiedosto siellä, jotta se luo kootun nissandefs.xml tiedoston, jonka sitten lisäsin romraideriin jo olemassa olevan nissandefs.xml:n lisäksi.

   

nisprog:n konfiguraatio tapahtuu nisprog.ini tiedostosta. Tätä varten tarvitsee kaapelin ajurit olla asennettuna ja kaapeli kytkettynä läppäriin, jotta voit tarkistaa COM portin numeron, sekä oman ECUn tyyppi tiedossa.
Kun ajurit on asennettu ja kaapeli kytkettynä, com portin voi tarkistaa menemällä control panel -> devices and printers ja siellä pitäisi näkyä esim COM3 kytkentä. Lisää numero nisprog.iniin riville "port \\.\COM3"
ECUN tyypin voi tarkistaa esim https://nissan.epc-data.com tai https://nissan.7zap.com/en/el/ VIN koodin avulla.
Esim. itse tarkistin jdm zetani https://nissan.7zap.com/en/jp sivulta. sen jälkeen next-> electrical -> w1 ja osanumero 22611 antaa ECUn tyypin, jonka viimeiset viisi merkkiä tarvitset. Omani on "23710-CD415"
Etsi sitten foorumin stock rom listasta ecuasi vastaava ECUID ja katso mikä sen FID IC on. Omassani se on "705513"
FID IC:stä riippuen tarvitsee sitten tiedoston loppuun lisätä kaksi riviä
FID IC on 705513 tai pienempi ->
setdev 1
runkernel C:\nisprog\npk_SH7055_35.bin
FID IC on 705514 tai suurempi ->
setdev 1
runkernel C:\nisprog\npk_SH7055_18.bin
FID IC alkaa 7058 ->
setdev 2
runkernel C:\nisprog\npk_SH7058.bin
eli nisprog.ini näyttää lopuksi tältä, mutta omilla arvoillasi.

   

Kun nisprog on määritelty, niin se on valmis käytettäväksi ecun rom dumpin lataukseen sekä flashaykseen. Alkuperäisen tutoriaalin mukana tulee seikkaperäiset ohjeet molempiin, mutta romdump menee esimerkkinä oman autoni kanssa näin
1. Virta autoon päälle
2. Apulaitteet pois päältä (sisävalot, tuuletin, radio, valot, yms.)
3. OBD kaapeli kiinni autoon, sekä läppäriin SAMAAN usb porttiin mitä käytit COM portin numeron määritykseen
4. Avaa nisprog tuplaklikkaamalla nisprog.exe tiedostoa, tai avaamalla ensin komentoikkuna ja kutsumalla sitä sieltä. Odota kunnes ohjelma saa autoon yhteyden ja kerneli on käynnissä. Onnistuminen lukee komentoikkunan tekstissä, sekä auton jäähdyttimen tuulettimen pitäisi alkaa puhaltamaan. JOS tämä ei toimi niin älä jatka hommaa vaan sulje ohjelma, yritä uudestaan ja/tai lue logia että minkä virheen vuoksi ei pelitä.
5. romdump alkaa käskyllä "dumpmem tiedostonimi.bin 0 524288" jos kyseessä on 7055 ecu tai "dumpmem tiedostonimi.bin 0 1048576" jos on 7058 ecu. ROMeissa on eri tiedostokoko riippuen siitä kumpi prosessori ecusta löytyy josta syystä käskyissä on ero siinä, kuinka iso kasa tavuja luetaan ja tallennetaan. Tässä pitäisi myös toimia käsky "dumpmem tiedostonimi.bin 0 0" joka määrittää koon automaattisesti riippuen nisprog.ini:iin määritellystä kernelistä mutta en ole itse sitä koittanut.
6. Odottele kunnes romdumppi on ladattu. Ohjelma näyttää latauksen edistymisen ja kun se on valmis. Romdumppi ladataan "nisprog" kansioon josta ohjelma on käynnistetty. ÄLÄ sulje yhteyttä tai irroita kaapelia vielä!!!
7. kirjoita "stopkernel" käsky ja paina enter, tuulettimien pitäisi sammua
8. kirjoita "npdisc" käsky ja paina enter.
9. kirjoita "quit" käsky ja paina enter. nisprog sulkeutuu tässä vaiheessa.
10. Ota virrat pois autosta ja irrota kaapeli obd portista ja läppäristä

Jos romraideriin on eculle karttojen määritykset jo saatavilla ja konfiguroitu kuten aikaisemmin selitin, niin sitten ei tarvitse tehdä muuta kuin avata romdumppi, muokata halutut kartat, tallentaa muokattu kopio ja flashata auton ecuun muokattu rom.

Flashays menee näin:
1. Virta autoon päälle
2. Apulaitteet pois päältä (sisävalot, tuuletin, radio, valot, yms.)
3. OBD kaapeli kiinni autoon, sekä läppäriin SAMAAN usb porttiin mitä käytit COM portin numeron määritykseen
4. Avaa nisprog tuplaklikkaamalla nisprog.exe tiedostoa, tai avaamalla ensin komentoikkuna ja kutsumalla sitä sieltä. Odota kunnes ohjelma saa autoon yhteyden ja kerneli on käynnissä. Onnistuminen lukee komentoikkunan tekstissä, sekä auton jäähdyttimen tuulettimen pitäisi alkaa puhaltamaan. JOS tämä ei toimi niin älä jatka hommaa vaan sulje ohjelma, yritä uudestaan ja/tai lue logia että minkä virheen vuoksi ei pelitä.
5. kirjoita käsky "flrom muokattuROM.bin" ja paina enter. Tiedoston tarvitsee löytyä samasta kansiosta missä nisprog.exe on. Ohjelma vertaa ecun datablokkeja ja antaa eri vaihtoehtoja "peru flashayksen aloitus / tee kuivaharjoitus, jossa ecu ikäänkuin flashataan mutta oikeasti ei kirjoiteta mitään / flashaa koko ecu uudestaan / flashaa vain muuttuneet datablokit. Vain muuttuneiden datablokkien flashayksellä säästyy aikaa, sekä ecun flashmuistin kirjoituskertoja säästyy.
6. JOS flahsays ei onnistunut tai epäilet ettei se onnistunut, niin ÄLÄ sammuta kerneliä. Voit tässä vaiheessa vielä flashata esim. alkuperäisen rom tiedoston tai yrittää korjata kommunikointivirheet ilman että ecu muuttuu tiiliskiveksi.
Jos flashays onnistui ongelmitta niin sitten voit edetä seuraaviin kohtiin.
7. kirjoita "stopkernel" käsky ja paina enter, tuulettimien pitäisi sammua
8. kirjoita "npdisc" käsky ja paina enter.
9. kirjoita "quit" käsky ja paina enter. nisprog sulkeutuu tässä vaiheessa.
10. Ota virrat pois autosta ja irrota kaapeli obd portista ja läppäristä
11. Käynnistä auto ja testaa muutoksien vaikutus.




*********************************************************************
Puuttuvien määrittelyjen tekeminen, jos omaan ecuusi niitä ei löydy.

US/EURO mallien zetojen tilanne on nykyään varsin hyvä, mutta esimerkiksi omaan alkupään JDM zetaan olen joutunut näitä etsimään itse winOLS ja Ghidra ohjelmia hyväksi käyttäen.

Vertailu ecuna kannattaa käyttää CF48 ecuid:llä olevaa romdumppia ja sen määrittelyitä jotka löytyvät github.com/pytrex/nissandefinitions:sta. Yksi kaveri foorumilla on käynyt omaa USDM 350z ecuaan läpi ja sen määrittelyt taitavat olla kaikkein täydellisimmät tällä hetkellä. Nissanin ecuissa on aina kartoissa joitain eroja, mutta ne silti ovat hyvin samanlaisia/samassa järjestyksessä, varsinkin jos oma ecu jota yrität määrittää on myös 350z:sta.
Suosittelen lukemaan winOLS tutoriaalin jonka linkkasin, mutta periaate on siis se, että aloitetaan jostain helposti tunnistettavasta kartasta, esimerkiksi sytkän ajoituskartoista, verrataan winOLS:ssa kahta ecua ja silmämääräisesti etsitään samalta vaikuttavat kartat. Hommaa auttaa huomattavasti, kun asettaa winOLS:n näyttämään värit riippuen datojen arvoista, sekä kun kaksi rom tiedostoa on avattu niin menemällä view->connect windows ja painamalla ok. Tällöin ohjelma vertaa kahta ecua keskenään ja värittää datat sen mukaan täsmäävätkö ne vai eivät. Connect täpän ja offsetin avulla voi säätää mitkä kohdat ecuista osuvat yksiin. Alla esimerkkikuva CF48:n ja CD415 ecujen sytkäkarttojen paikoista vertailu päällä. Kuvasta näkee, että kartat eivät ole identtisiä, ja koska CD415 on vanhempi ecu ja sen rom koko on 512 kB vs CF48:n 1024 kB rom:iin niin karttojen asemat muistissa ovat erilaiset. Kuvasta näkee myös heti että molemmissa ecuissa on 100 0 0 0 100 100 100 jne kohta hyvin lähellä sytkäkarttoja, joten todennäköisesti sekin on yksi ja sama kartta, mutta se tarvitsee eri offsetin jotta arvot täsmäävät keskenään vertailussa.

   

Kartan osoite oman ecun muistissa tarvitsee sitten lisätä omalle eculle tarkoitettuun xml tiedoston määrittelyyn. Taas esimerkkinä, loin itselleni CD415.xml nimisen tiedoston muiden jdm zeta xml määrittelyiden joukkoon, johon kopioin yksi kerrallaan CF48.xml tiedostosta kartan määrittelyn, ja muutin osoitteet vastaamaan oman ecun osoitteita. Monilla kartoilla on lisäksi ecussa X- ja Y-akselit, joiden sijainti pitää myöskin tarkistaa. Tämä onnistuu Ghidralla. Sillä avataan oman ecun romdumppi (valitse SH4 bigendian specification) ja annetaan ohjelman analysoida ecun koodi. Yleisimmin akselit löytää menemällä ensin kyseessä olevan kartan osoitteeseen, ja katsomalla siihen johtavat referenssit läpi. SH prosessoreilla yleensä nissanin ecuissa ladataan funktioissa itse kartta rekisteriin r4, y-akseli rekisteriin r5 ja x-akseli rekisteriin r6. Huom! Tämä on hyvin yleistä nissanin ecuissa mutta ei sääntö mihin voi luottaa sokeasti. Jos epäilet yhtään, niin älä luo kartan määrittelyjä ecun xml:ään ennen kuin varmistut asiasta esim. tutkimalla ecun logiikkaa ghidralla, kysymällä apua romraiderin foorumeilta yms.
 Esimerkkinä alla kuvakaappaus cold ignition timing map:n akselien muistipaikkojen tarkistamisesta ghidralla. Kuvassa data, joka on osoitteessa 0x6749 ei ole alunperin cold ignition map niminen, vaan olen itse sen nimennyt siten, jotta se on helpompi tunnistaa jos se tulee vastaan muualla koodissa. Tuplaklikkaamalla XREF[1]: 00024404 kohtaa, hypätään koodiin jossa kyseiseen muistipaikkaan viitataan, joka näkyy alla olevassa toisessa kuvassa. Muutama rivi ylöspäin siitä, näkyy käskyt mov.l r5=>DAT_00008447 ja mov.l r6=>DAT_00008437. Todennäköisesti tuossa kohtaa ladataan ensin kylmäkäynnistyksen sytkäkartan x- ja y-akselit ja sitten itse kartta, jolloin y-akseli löytyy siis osoitteesta 0x8447 ja x-akseli osoitteesta 0x8437. Nuo osoitteet pitää siis itse kartan lisäksi määrittää CD415.xml:ään. Sytkäkartan määrittely oman autoni xml:ssä on tällainen

    <table name="Cold Ignition Timing Map (16x16)" storageaddress="0x6749">
      <table type="X Axis" storageaddress="0x8437" />
      <table type="Y Axis" storageaddress="0x8447" />
    </table>

Kun riittävät karttojen määrittelyt eculle on tehty, niin ne pitää päivittää koottuun nissandefs.xml:ään mikä onnistuu ajamalla combine_all.bat skripti läpi. Sen jälkeen voikin avata rom-tiedoston RomRaiderilla, muokata karttoja, tallentaa ja flashata ne autoon. 

   

   
Reply
#2
EDIT:
Nykyään romraiderissa on eroteltuna sytkäkartasta erillinen knock window kartta, missä on vain arvot 0/1 riippuen siitä onko nakutuksen seuranta päällä vai ei. ECUn toiminta on edelleen sama, eli softa yhdistää sytkän trimmi- ja nakutuskompensaatiokartat yhdeksi kartaksi taustalla, mutta niiden erottaminen säätösoftassa tekee sytkäennakoiden / nakutuksen seurannan muokkaamisen huomattavasti suoraviivaisemmaksi
***************************************************************************


Romraiderin foorumeilla on käyty läpi nissanin ecun sytkän ajoituksen toimintaa, ja samalla selvitetty sytkäkarttojen merkitykset, kun niiden arvot eivät ole vastanneet tavanomaista sytkäkarttaa. Esim. upRevin nissan tuning guide:ssa puhutaan että karttojen arvot vastaisivat aikaa mikä menee, kunnes sylinteripaine on maksimissa, mikä on väärin. Ne ovatkin sytkän trimmikarttoja asteina, konversiolla x-64, ja niissä on korkeimpaan bittiin tallennettu tieto onko ECUn nakutuskompensaatio päällä vai ei.

Jätän alkuperäisen linkin postaukseen tähän kiinnostuneille, sekä linkin foorumin ohjeeseen sytkän säätöön, mutta lyhyesti selitettynä, ECU laskee MBT (mean best torque) kulman ottamalla huomioon sylinterin täyttöasteen, kierrosnopeuden, liekkirintaman nopeuden yms., tekee useita eri kompensaatioita tilanteista riippuen, sekä sanity checkejä, että saadut arvot ovat järkeviä, sekä trimmaa saatua astelukua kyseisillä trimmikartoilla.

https://www.romraider.com/forum/viewtopic.php?f=65&t=15017
 
https://www.romraider.com/forum/viewtopic.php?f=64&t=18417
 
Koska kartat siis trimmaavat MBT kulmaa, niin lähestymistapa karttojen säätämiseen on nakutuksen kurissa pitäminen. Maksimiarvo mitä nakutuskompensaatioalueen ulkopuolella kannattaa käyttää on 0, jolloin ECU käyttää MBT kulmaa sytkän ajoitukseen. Sitä suuremmat arvot aikaistavat sytystä ja vaarana on sylinteripaineiden turha suureneminen. Nakutuskompensaatioalueella ajoituksen säätö on hieman hankalampaa kompensaation vuoksi, ja siinä tarvitsee enemmän iteroida, mieluiten vielä säätöpenkissä, jotta näkee muutoksien vaikutuksen moottoritehoon.

Tämä on suht helppo hiffata seuraavien kuvien avulla oman autoni high octane timing kartasta. Ensimmäisessä näkyvät ecusta saadut raakadata-arvot, toisessa miltä se näyttää oletuksena RomRaiderissa. Oletusnäkymässä on joka solusta vähennetty arvo 64, ja alue jossa solujen arvot ovat ~128 on tuo nakutuskompensaatioalue. Kun ajoitus on kyseisillä soluilla kartassa, niin ECU kuuntelee nakutusanturia huomattavasti tarkemmin, ja myöhäistää ajoitusta, jos se havaitsee nakutusta. Tämä myöhäistäminen pidetään päällä etukäteen asetetun ajan, jotta varmistutaan että nakutus loppuu, eli ecu ei siis heti vaihda takaisin aikaisemmalle ennakolle vaikka nakutus loppuisi. Muualla ECU puuttuu ajoitukseen vasta, kun nakutus on niin kovaa, että se trippaa knock control flagin ECUssa, jolloin vaihdetaan käyttämään High Detonation Timing karttaa.  Kolmannessa kuvassa olen poistanut nakutuskompensaatioalueen kartasta, vähentämällä soluista arvon 128 ja värit on skaalattu uudestaan, jotta ajoituksen säätö on helpompaa. Kun olen tyytyväinen ajoituksen muutoksiin, lisään nakutuskompensaatioalueen takaisin lisäämällä soluihin 128 takaisin. Kompensaatioaluetta voi muuttaa lisäämällä tai vähentämällä 128 soluihin.

Pienenä sivuhuomiona mainittakoon, että mm. omassa ecussani kylmäkäynnistyksen sytkäkartassa nakutuskompensaatio ei ole alunperin päällä, kun taas 2006 350z ecussa CF48D nakutuskompensaatioalue on käytössä kaikilla kolmella kartalla.


   

   

   
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)