Sivu 3/30
Lähetetty: 29 Loka 2007, 08:47
Kirjoittaja 77-1120930780
PetriK kirjoitti:Mittasin vielä noi harness connector (eli suomeksi ecun liittimet, ne kaksi isoa joilla ecu kiinnitetään johtosarjaan) ja näyttäisi siltä että Suzuki on lisännyt näihin uudempiin ECUihin mahdollisuuden ohjelmoida kartat suoraan noista liittimistä.
Nyt vaan vauhtia siihen että saadaan kaveri joka osaa Mitsubishiä mukaan projektiin vähän neuvomaan - ettei tarvitse turhan pitkään harjoitella. Sivulla 715 siinä SH7052 hardware manuaalissa on kerrottu tarkemmin tuosta ohjelmoinnista - mutta käsittääkseni fwe signaali vaihtaa ohjelmointitilan ja normaalin operointitilan välillä.
Harnes Name cpu name route
34 rct 30 reset c906 to gnd, r320, d502, c411,
32 fwe 28 fwe c 905 to gnd, r901,
31 sds n/c n/c
30 rxd 111 txd1 c903, r907,
29 txd 112 rxd1 c902, r902,r906 (dremeled off, do not know value)
Jos kiinnostaa opetella ohjelmointia niin käy tampereen TTY:n nurkalla olevasta juvenes kirjakaupasta ostamassa mikroprosessorit kurssin opintomoniste. Moniste maksoi muistaakseni 7e ja siinä käsitellään h8s-perheen assemblyohjelmointia.
Lähetetty: 29 Loka 2007, 09:17
Kirjoittaja PetriK
MInk kirjoitti:Jos kiinnostaa opetella ohjelmointia niin käy tampereen TTY:n nurkalla olevasta juvenes kirjakaupasta ostamassa mikroprosessorit kurssin opintomoniste. Moniste maksoi muistaakseni 7e ja siinä käsitellään h8s-perheen assemblyohjelmointia.
Tässä projektissa on pakko opetella tuon prosessorin käskykanta. Jos joku toimittaa tuollaisen perusteista lähtevän paperinipun skannattuna niin siitä on varmaan apua koska prosessorin omat manuaalit (hw+sw) lähtee siitä että perusteet ymmärretään ja ne manuaalit on yhteensä yli 1000 sivua...
Edited By PetriK on 1193642311
Lähetetty: 29 Loka 2007, 11:25
Kirjoittaja busajasa
PetriK kirjoitti:MInk kirjoitti:Jos kiinnostaa opetella ohjelmointia niin käy tampereen TTY:n nurkalla olevasta juvenes kirjakaupasta ostamassa mikroprosessorit kurssin opintomoniste. Moniste maksoi muistaakseni 7e ja siinä käsitellään h8s-perheen assemblyohjelmointia.
Tässä projektissa on pakko opetella tuon prosessorin käskykanta. Jos joku toimittaa tuollaisen perusteista lähtevän paperinipun skannattuna niin siitä on varmaan apua koska prosessorin omat manuaalit (hw+sw) lähtee siitä että perusteet ymmärretään ja ne manuaalit on yhteensä yli 1000 sivua...
RISC konrtolleri joten ei käskykanta ongelmaksi muodostu - ne on mov:ia ja muutamaa muuta käskyä
Lähinnä ongelmaksi muodostunee se mitä kaikkea tuolla voikaan tehdä ja miten ja kuinka kaikki on jo toteuttettu, mistä muisti alueelta löytyy mitäkin, miten muistin käsittely toimii, rekisterit, etc..
Loogisen toiminnalisuuuden reverse engineeraaminen tulee kai olemaan haastavaa - ymmärtää se oleelisin osin että minne kaikkialle koodissa pitää katsoa (deppikset) jos jotain aluetta muutetaan ja miten tuo kartta-alue oikeasti toimii - mikä onkaan se algoritmi joka muuttaa karttatiedon oikeiksi IO ohjauksiksi..
Tuo koodin flashaaminen mulle ainakaan ihan helpolta näytä sillä bootmodessa pitää olla oma loaderi softa ja tällöin on tiedettävä muisti alueet jonne voi kirjoittaa. Taas olemassa olevan (user programming mode) loaderi softan hyödyntäminen on kanssa epäselvää - jospa se tuon toolkitin tutkiminen avaa asiaa kun sen kimpuun pääsee.....
Lähetetty: 29 Loka 2007, 11:38
Kirjoittaja PetriK
Ollaan tehty noita vastaavia projekteja muutamia joten ei ole mahdoton juttu ollenkaan ymmärtää miten prosessori toimii.
Jos olisi suljettu ryhmä (hehe) siellä voisi jakaa projektiin osallistuville pari jo valmiiksi käännettyä assemblerkoodia josta näkee miten jokainen I/O portti on sijoitettu RAM alueelle. Miten timereillä ohjataan sytkää ja ruiskua sekä ennen kaikkea nähdä miten osittain kommentoitu logiikka toimii. Lisäksi noi isommat kartat on kohtuullisen helppo löytää pelkkää hex fileä lukemalla - mutta yksittäiset rajoittimet kuten rpm rajoitin ovat aika haastavia jos koodia ei aja dissassemblerin lävitse.
Isoin haaste on noi flagit ja error handling logiikan ymmärtäminen. Busan 1999 ecu on suunniteltu boottaamaan lähes jokaisessa virhetilanteessa. Esim jos yhteen rekisteriin ei ole kirjoitettu tiettyä arvoa muutamaan millisekunttiin niin se boottaa...
Muistin viittaus tapahtuu periaatteessa suoraan tai pointterilla RAM alueelle tai ROM (Flahs) alueelle. Viittauksessa käytetään useimmiten samaa pointteria per alue. Eli Ram=Z, ROM=X.
Tuo ohjelmointimoodi, busan liitin ei mahdollista boot modea vaan ainoastaan user programming moden. Siinä pystyy muuttamaan Flash:n sisältöä muistialuekohtaisesti (upload ja download löytyy dev.toolkitista) - mutta testataan tällä viikolla että onnistuuko vai pitääkö ostaa AUD / e8 laite.
Lähetetty: 29 Loka 2007, 12:53
Kirjoittaja 77-1120930780
PetriK kirjoitti:Ollaan tehty noita vastaavia projekteja muutamia joten ei ole mahdoton juttu ollenkaan ymmärtää miten prosessori toimii.
Jos olisi suljettu ryhmä (hehe) siellä voisi jakaa projektiin osallistuville pari jo valmiiksi käännettyä assemblerkoodia josta näkee miten jokainen I/O portti on sijoitettu RAM alueelle. Miten timereillä ohjataan sytkää ja ruiskua sekä ennen kaikkea nähdä miten osittain kommentoitu logiikka toimii. Lisäksi noi isommat kartat on kohtuullisen helppo löytää pelkkää hex fileä lukemalla - mutta yksittäiset rajoittimet kuten rpm rajoitin ovat aika haastavia jos koodia ei aja dissassemblerin lävitse.
Isoin haaste on noi flagit ja error handling logiikan ymmärtäminen. Busan 1999 ecu on suunniteltu boottaamaan lähes jokaisessa virhetilanteessa. Esim jos yhteen rekisteriin ei ole kirjoitettu tiettyä arvoa muutamaan millisekunttiin niin se boottaa...
Muistin viittaus tapahtuu periaatteessa suoraan tai pointterilla RAM alueelle tai ROM (Flahs) alueelle. Viittauksessa käytetään useimmiten samaa pointteria per alue. Eli Ram=Z, ROM=X.
Tuo ohjelmointimoodi, busan liitin ei mahdollista boot modea vaan ainoastaan user programming moden. Siinä pystyy muuttamaan Flash:n sisältöä muistialuekohtaisesti (upload ja download löytyy dev.toolkitista) - mutta testataan tällä viikolla että onnistuuko vai pitääkö ostaa AUD / e8 laite.
Hyvin usein ja pitkään tuo sinun kutsumasi error handling logiikka on toteutettu vahtikoiran avulla.
watchdog timer
Sitten olen ymmärtävinä että olet ymmärtänyt nuo timereiden olemassa olon hieman väärin. Ne ei itsessään ohjaa ikinä yhtään mitään. Ne on vain yksinkertaisia n-bittisiä rekistereitä joiden arvoon lisätään aina yksi kun kellosignaali nitkahtaa. Eli ne ovat kelloja. Voit verrata sitä seinäkelloon joka laskee 12 asti ja pyörähtää ympäri. Nuo laskee vaikka 256 asti ja antaa ohjelmassa keskeytyksen. Kun keskeytys tulee siirrytään vaikka keskeytyspalveluun ja tehdään jotain, avataan vaikka ruiskusuutin... niihin voidaan asettaa alkuarvoja jolloin saadaan keskeytyksiä. Vielä toisinsanoen ne ovat ohjelmakoodille apu ajan hallintaan. Koodi sitten ohjaa timereiden avulla jotain.
Tälläisissä sovellutuksissa on pakko käyttää timereitä koska koodia ei voi kirjoittaa muodoon avaa suutin->jumita paikallaan 10ms->laita suutin kiinni. Vaan siinä välissä kun se suutin on auki niin pitää voida tehdä jotain muutakin.
Kolmanneksi pidän itsekkin aika suurena urakkana tutkia mitä koodi tekee, mutta en missään nimessä mahdottomana. Itseasiassa homma on kuitenkin pienempi kuin sen tuottaminen tyhjästä. Onnea siis!
Lähetetty: 29 Loka 2007, 14:01
Kirjoittaja PetriK
Kuten sanoin, meillä on käytössä jo kahden moottoripyörän dissassembloitu koodi jossa timereiden käyttö on kohtuullisen selkeä ja dokumentoitu, samoin rekisterien käyttö. Lisäksi on käytössä yhden auton kommnentoitu koodi. Viimeksi peruslogiikan selvittämiseen meni enemmän asiaa osaavalta noin yhden viikon illat.
EDIT - turhat höpinät poistettu by PetriK, suljettu ryhmä perustettu
Edited By PetriK on 1193671522
Lähetetty: 29 Loka 2007, 14:06
Kirjoittaja BussiJussi
Toisilta on hävinnyt koko turbofoorumi....! Vai onko siitä tehty "suljetun ryhmän" kokoontumispaikka...? Sorry of topic!
Lähetetty: 29 Loka 2007, 17:35
Kirjoittaja PetriK
Rhead perusti suljetun ryhmän kiitos. Ilmoittautua voi vaikka yksityisviestillä meikäläiselle niin saa salasanan. Yritän tänään illalla laittaa perusasiat sinne siitä mitä jo tiedetään ja mikä on prosessi jolla tuo tuota ecun ohjelmoitavuuden kokeilua viedään eteenpäin.
Lupaava edistysaskel on jo se että kansiset.net:ltä saadun johtosarjan liittimien avulla molemmat avatut ecu:t näyttäisivät lähtevät käyntiin.
Käynnistyminen tuli todennettua siten että ECU:lta ulospäin tuleva +5v jännite löytyy ja mittaristolle menevä datasignaali löytyy skoopin avulla. (Tosin 1999 mallisesta ecusta jotain oli mennyt rikki prosessorin ja liittimen välistä mutta siitäkin datasignaali löytyi skoopilla prosessorin nastasta). Eli prosessori käynnistyy koska se pystyy työntämään ulos sarjadataa harness connector pin 33:sta jossa signaali liikkuu noin 7kbit/s vauhdilla. Tuo skioopin näyttämä riittääkin siihen että ohjelmoitavuutta voi lähteä testaamaan ainakin BDM ja AUD "ohjelmointiliittimistä". Sarjadatan reitin toimivuus ohjelmoinnissa pitää sitten vielä erikseen testata koska se kulkee piirilevyllä eri reittiä kuin tuo mittaristodata.
... mutta tällä tasolla olevista yksityiskohdista lisää tuolla Moottorinohjausyksikkö ryhmässä... ja tänne kirjoitellaan kun edistymistä tapahtuu.
Edited By PetriK on 1193672627
Lähetetty: 30 Loka 2007, 19:49
Kirjoittaja PetriK
Tuossa alla suora lainaus viimeisimmästä viestistä jonka postasin tähän ecun hakkerointiryhmään niille jotka ihmettelvät mistä tuolla keskustellaan ja kokevat jäävänsä jostain paitsi. Eli heti kun on tuloksia niin ihan varmasti kerrotaan julkisesti ... tai jos jollain on ammatin tai harrastuksen puolesta annettavaa tällaiseen keskusteluun niin mukaan vaan. Toisaalta juuri nyt ei kannata lähettää viestiä että olisi kiva päästä mukaan katselemaan mitä juttelette koska tylsää faktojen etsimistä tämä on...
---------------------------------------------------------
MD0=Vcc, MD2=Vcc, MD1=MD1 harness connectorissa - tässä oli ajatusvirhe aiemmin, jostain syystä ajattelin että tämä on mains direct.
MD1 näyttäisi olevan floating tilassa 10k Vcc, Vss ????? Onko vinkkejä miksi ????
Eli ohjelmointinastat ovat:
29 txd 112 rxd1 c902, r902,r906 (dremeled off, do not know value, reinstalled 100 ohm on the board as on the txd too)
30 rxd 111 txd1 c903, r907,
31 sds n/c
32 fwe 28 fwe c 905 to gnd, r901, d404 (dremeled broken ???)
34 rct 30 reset c906 to gnd, r320, d502, c411
14 md1 22 md1 r908 (100ohm, floating 10k to Vcc, 10k to Gnd)
Edit - kuva muutettu linkiksi:
Linkki kuvaan
Edited By PetriK on 1194170531
Lähetetty: 04 Marras 2007, 12:01
Kirjoittaja PetriK
Tilannekatsausta....
Noin viikko käytetty busan 32 bit ecun kanssa ja opittu todella paljon. Mm asiaan liittyviä erilaisia manuaaleja on löytynyt noin 5000 sivua jotka on pääpiirteittäin kahlattu iltaisin ja öisin lävitse.
Isoimmat löydökset ovat seuraavat:
- Ohjelmointisignaalit tulevat 100% varmuudella moottorinohjausyksikön liittimelle ainakin tässä 2006 mallisessa ECU:ssa. Emme kuitenkaan vielä osaa niitä täysin käyttää.
- Ns AUD liittimen kautta ei nähtävästi pystytä lataamaan ns. prosessorin sisäisessä muistissa olevaa ohjelmakoodia ulos, vaan se pitää suurella todennäköisyydellä ladata ns. EPROM emulointimoodissa. Ainakin valmistaja suosittelee tätä. Ohjeet tähän löytyvät valmistajan manuaaleista.
- 7052 SH-2 prosessorin käskykanta on purettavissa saman dissassembleripaketin avulla kuin 1999 mallisen ecu:nkin koodi.
- Suomesta löytyy hyvää osaamista aihealueeseen liittyen muutamalta kaverilta - iso tunnustus kaikille jotka ovat asiassa sparrauksellaan auttaneet.
Seuraavaksi pitäisi tehdä nämä asiat:
- Ohjelmakoodin lukeminen EPROM moodissa. Vaatii pintaliitosjuotosten tekemistä suoraan prosessorin nastoihin. Vaatii välineitä ja osaamista jota ainakaan mulla ei ole vaan tämä joudutaan etsimään ja ehkä ostamaan. Eli pitää vetää ns. hyppylangat prosessorin nastoista erilliselle 40 pinnaiselle liittimelle.
- Varmistaminen että ohjelmointinastat löytyvät myös suomalaisista ECU:ista. Voidaan todentaa mittaamalla resistanssit nastoista ja siten varmistua että ohjelmointi on mahdollista myös muille ecuille kuin tuolle jonka olen avannut.
Alla kuva mistä pinnoista hyppylangat pitää vetää erilliseen liittimeen. Jos tähän löytyy joltain tuttavia tai osaamista niin olisi hieno homma - vaatii juotosaseman jolla voidaan tehdä pintaliitoksia ja muutaman tunnin työtä. Tällainen varmaan löytyy esim. nokia tuotekehityksestä jos löydetään oikea kontakti
Lähetetty: 04 Marras 2007, 12:10
Kirjoittaja 110-1162320281
pintaliitoa juovukkeessa löytyy varmaan myös veikkaukselta jos löydetään oikea kontakti.... Snufkin???
Lähetetty: 04 Marras 2007, 13:11
Kirjoittaja PetriK
Unohtui laittaa vielä tämä linkki edelliseen viestiin. Eli alla olevassa linkissä ohjeet siihen miten 1999-2002 malliseen busan ecuun laitetaan BDM ohjelmointiliitin kiinni. Ohjeet ovat kawan ecusta, mutta samat toimivat busankin suhteen - eli mitoissa voi olla muutaman milllin heittoja.
Notching an ECU
Ja kun näytti tämä viesti tulevan uudelle sivulle, niin vielä muistutuksena että etsinnässä on joku kuka voisi tehdä hyppylankoja prosessorin kannasta erilliselle liittimelle jotta päästään 2004-2007 ecun akanssa eteenpäin. Tarkempi kuvaus mitä tarvitaan löytyy edellisellä sivulla.
Lähetetty: 04 Marras 2007, 15:46
Kirjoittaja 83-1192822679
Suurennuslasin kanssa käsitöiksi tuo menee, mutta ei mitenkään mahdoton homma. Eli noilta 39:ltä jalalta pitäisi vetää hyppylanka liittimelle? Millainen liitin? En vielä lukenut ihan koko ketjua läpi.
Lähetetty: 04 Marras 2007, 16:26
Kirjoittaja PetriK
Hienoa jos pystyisit auttamaan. Kyseeseen tulee 40 pinnainen EPROM kanta, laitan privaa...
Tässä linkki dokkariin jonka avulla kuka vaan voi testata että löytyykö omasta 32 bit ecusta ohjelmointipinnit kytkettyinä. (2003-2007 mallisista busista).
http://macmadigan.no-ip.com/Public....est.pdf
Jos joku testailee omansa, olisi hienoa saada palautetta tänne että onko tuo mun yksilö ainutlaatuinen vai onko muissakin yksilöissä myös mahdollisuus hyödyntää noita moottorinohjausyksikön liittimen nastoja ohjelmointiin.
Edited By PetriK on 1194269654
Lähetetty: 12 Marras 2007, 15:35
Kirjoittaja PetriK
Projekti etenee...
Olen saanut testattua toisella prosessorikortilla että tosiaankin tuon ECU:n käyttämän SuperH:n ohjelmointi sarjaprotokollalla on todella helppoa.
Isompi mutka matkaan tuli siitä että nyt pitäisi pystyä lukemaan tuon Busan ECUN FLASH muistissa oleva koodi. Tähän tarkoitukseen löytyy useita vaihtoehtoja joista yksi on tuo aiemmin mainittu prosessorin juottaminen hyppylangoilla ns. EPROM moodiin. Toisaalta voi olla mahdollista käyttää AUD liitintä ohjlemakoodin lukemiseen.
Tätä AUD väylän testausta varten tarvitsisi tehdä C kielellä ohjelma joka toteuttaa alla kuvatun lohkokaavion pohjalta alla kuvattua signallointiliikennettä. Meikäläisellä on muutamia vuosia siitä kun viimeksi olen koodannut, joten tässä tarvitsisi mielellään hieman apua. Ensiksi tuon lohkokaavion mukaisen rakenteen tekemisessä C:llä ja sitten tuo signaalinkäsittely toteutettuna sinne ohjelmalogiikkaan. Löytyisikö lukijakunnasta C taitoa sen verran että tämä perusidea onnistuisi toteuttaa. Pystyn varmaan itse hiomaan syntaksin kohdalleen.
Itse logiikka on kohtuullisen helppo:
Muuttujia on vain seitsemän: PB0..PB6 joilla signaalia ohjataan.
- PB5 (AUDCLK) ohjelmoidaan menemään ylös/alas tietyllä viiveellä.
- Asetetaan PB6 (DIRection) alas
- Asetetaan PB4 alas (AUDSYNCinverted)
- Läheteään väylään PB0,PB1,PB2,PB3 (AUDATA) Dummybit 0000
- Odotetaan seuraavaa kellopulssia
- Lähetetään väylään komento PB0,PB1,PB2,PB3 (AUDATA) luetaan muistista eli 1010
- Lähetetään väylään PB0,PB1,PB2,PB3 (AUDATA) muistiosoite esim 0xFFFFC000, 4 bittiä kullakin PB5 kellopulssilla
- Vaihdetaan PB6 (DIRection) ylös
- Odotetaan väylästä PB0,PB1,PB2,PB3 (AUDATA) ready flag 0001. Odottaminen kellopulssi kerrallaan kunnes muuttuu.
- Vaihdetaan PB4 (AUDSYNCinverted) ylös
- Luetaan väylästä PB 4 0,PB1,PB2,PB3 (AUDATA) muistiosoite esim 0x01234567 aina neljä bittiä kerrallaan.
Ohjelman lohkokaavio:
Signallointiliikenne:
AUD väylään liittyminen on hyvin kuvattuna muutamassa dokumentissa. Rautatason liityntä voidaan tehdä esim. PIC:llä tai sitten esim. liittämällä toinen SH sarjan prosessori 74HC245 piirillä. Mulla on sopivasti SH7086 RSK (eli prossukortti kehityskitti) ja siihen C pohjainen kehitysympäristö joten tuo olisi varmaan helpoin ratkaisu.
Edited By PetriK on 1194874584