Koodi ja dissassemblerin käyttö

Lähetä vastaus

Hymiöt
:D :) :;): :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :tyhmamina: :baaa: :bike: :blues: :pomppu: :bowdown: :thumbup:
Katso lisää hymiöitä

BBCode on Käytössä
[img] on käytössä
[url] on käytössä
Hymiöt ovat käytössä

Otsikko
   

Laajenna näkymää Otsikko: Koodi ja dissassemblerin käyttö

Kirjoittaja timo3 » 01 Joulu 2007, 00:18

Kyllä mulla kääntyy se hex2mot:lla täytyy ajaa tosiaan vielä lapi tuo ecu:luku ja katsoa kun se on päättynyt onko se osannut tehdä sen heks tiedoston oikein.


Tein sen tarkistuksen laskun laskemalla

S3090000000000000400F2

tarkisteluku = FF - ((09+00+00+00+ 00+00+00+04+00) mod 100)

ja sihen loppuun

S5050000902545
tarkisteluku = FF - ((05+00+00+90+25) mod 100) (tuo 100 on heksaluku des 256)

Tolla systeemillä se ainakin käänty

Mulla menee reilu 2 tuntia tossa luku operaatiossa kääntämättömällä versiolla, keskustelunopeus pic ja PC välillä
38400, eli ei mikään lukuhirmu heh..

varmaan kun alkais tutkimaan mitkä käskyt vie aikaa ja alkais
muuttamaan sitä, saattais nopeutua, mutta kun tuo ainakin lukee kerta kerran jälkeen samanlailla ei taida olla vaivaa alkaa muuttelemaan.




Edited By timo3 on 1196461556

Kirjoittaja PetriK » 30 Marras 2007, 23:56

Joo - en lähetä 0xFFFFFFFF ollenkaan koska nehän tehdään valmiiksi silloin kun Flash PROM alustetaan kirjoitusta varten.
Tuo nopeuttaa jonkin verran tiedonsiirtoa Flash:ltä PC:lle kun osa longwordeista voidaan ohittaa. Ainakin mun tapauksessa sarjaliikenne on hitaampaa kuin FLASH:n lukeminen.

...

Jos tulos kääntyy vielä MOT2BIN:llä niin sitten on kunnossa. Mä en (ainakaan vielä) saanut sitä viimeisen rivin tarkistussummaa menemään tuosta softasta lävitse mutta poistan sen editorilla ja näen että yhteenlaskettu rivien määrä täsmää. Lisäksi rivitason tarkistussummat täsmäävät nätisti ja lisäävät oleellisesti luottamusta datan oikeellisuuteen.

Kirjoittaja timo3 » 30 Marras 2007, 23:45

Täytyy vielä ajaa yks tarkistuluku ecu:sta lähetän sulle sit lukuohjelman joka tekee myös sen motorlan s - records mot tiedosto.


Miten tuo sun busan mot tiedosto hyppää tossa kohdin, vai mikä siinä on juonena.

S309000156A40003FFF405
S309000156A80003FFF500
S309000156AC0003FFF6FB
S309000156B00003FFF7F6____<<
S30900028000091100005A
S309000280040002899C49
S30900028008000289BE23
S3090002800C0000000068
S309000280100928000033
S30900028014000289D005

Kirjoittaja PetriK » 30 Marras 2007, 19:17

Mä lähetän suoraan CPU:lta tuossa muodossa sarjaporttiin, eli ei ole dataa välimuodossa.

Mutta sen sijaan tässä linkki exceliin jolla itse testailin että tehty data on oikean muotoista:

http://macmadigan.no-ip.com/BusaECU/S-record/

ja tässä linkki internettiin sivulle jossa näkyy myös esimerkki.

http://www.monroeccc.edu/ckelly/easy68ksrecord.htm

Ainoastaan S3 tietue on pakollinen ja S5 tietue kannattaa laitta loppuun että näkee että kaikki tietueet tuli perille.

Kirjoittaja timo3 » 30 Marras 2007, 18:50

lähetäppäs mulle se busan tiedosto johon ei olis vielä laskettu noita osotetta ja tarkistus-summaa, niin testaan, että tulee oikeanlainen motorlan s hex tiedosto.

Kirjoittaja PetriK » 30 Marras 2007, 17:11

Tätä erilaista interface kirjoa löytyy täältä:

http://www.activeboard.com/forum.s....tPage=1

Timo3, jos vaan sulle sopii niin mä laitan noihin merkinnän että by Timo3. Nyt olen vaan laittanut että "paikallinen hakkeri".

Kirjoittaja PetriK » 30 Marras 2007, 17:00

Tässäpä nämä pari funktiota vähän yksinkertaistettuna... eli s3 on tuo kukin osoite+arvo eri rivinä ja s5 on rivien lukumäärä. Jos softassa olisi ominaisuus että se tarkistaa kunkin rivin ja pyytää aloittamaan alusta virhetilanteessa esim lähettämällä z merkin niin voisi yrittää nostaa nopeutta com portissa. Nyt mulla on vain 19.2k. No eipä näitä kovin usein toivottavasti tarvitse ladata.


---------------------------------------

S3record(address, data)
{
text_write("S309");

// tämä kirjoittaa suoraan merkkeinä osoitteen xxxxxxxx
ptr_address=IntToHexStr(address);
text_write(ptr_address);

// tämä kirjoittaa suoraan merkkeinä arvon yyyyyyyy
ptr_data=IntToHexStr(data);
text_write(ptr_data);

// aloita tarkistussumman laskeminen ysistä
result=9;
// sitten lisää yksi byte kerrallaan osoite
for (counter=0;counter<4;counter++) {
// lisää kaksi viimeistä merkkiä byteistä toisiinsa
result= result + (data&0xFF);
// ja valmistaudu käsittelemään
// seuraavat kaksi merkkiä jonossa shiftaamalla jonoa
data>>=8;
}
// sitten lisää yksi byte kerrallaan arvo
for (counter=0;counter<4;counter++) {
// tässä sama kuin yllä mutta aitona c koodina
result+=(address&0xFF);
address>>=8;
}

// laske tarkistussumma
// huomioi vain viimeinen byte
result=result&0xFF;
// viimeisen byten negaatio (eli käännetty arvo, taitaa tulla muistaakseni myös *-1 laskukaavalla)
result=~result;

// ja kirjoita tarkistussumma
text_write(IntToHexByte(result));

counter=counter+1;
// uusi rivi
text_write("
");
}


Tässä S5 kirjoittamisessa ei taideta huolia kuin maksimissaan FFFF riviä (nyt mulla on max FFFFFFFF riviä tuossa omassa c koodissa), muutin funktiota tähän niin että nyt tuo rivimäärä on maksimissaan FFFF eli ei ole testattu.

S5record(unsigned int records)
{
// write the S5 recort to the com port
text_write("S503");
text_write(IntToHexStr(records));

// calculate and write the checksum
// aloita kolmosesta joka on bytejen määrä
result=3;
// lisääs kaikki byte toisiinsa eli zz+zz
for (counter=0;counter<2;counter++) {
result+=(records&0xFF);
records>>=8;
}
// huomoi kaksi viimeistä ja niistä negaatio
result&=0xFF;
result=~result;
text_write(IntToHexByte2(result));
text_write("
");
}

Kirjoittaja timo3 » 30 Marras 2007, 16:28

laitappas esimerkkiä miten tarkistesumma lasketaan siihen.

Samahan on se on mihinkä heksaan sen tekee vaikka S-recordina.

Ei jaksa alkaa suoraan bin muotoon vääntämään.

Kirjoittaja PetriK » 30 Marras 2007, 16:10

Jos saan ehdottaa niin mieluummin motorola S-recordina voisi tehdä tuollaisen tarkistussumman. S-record on tiedostomuoto jota FDT lukee suoraan sisään ja mahdollistaa myös sen että kaikkia tietueita (0xFFFFFFFF) ei tarvitse kirjoittaa ja siten lataaminen nopeutuu.

Tietuerakenne on tosi helppo:
S509xxxxxxxxyyyyyyyytt
x=osoite
y=muistipaikan sisältö
tt=tarkistussumma (9xxxxxxxxyyyyyyyy)

Lopussa on sitten vielä erillinen tietue jossa on kirjoitettujen rivien määrä.

Tuo saadaan binääriksi mot2bin ohjelmalla ja päinvastoin bin2mot.




Edited By PetriK on 1196434853

Kirjoittaja timo3 » 30 Marras 2007, 15:25

- laite kiinni ECU:n
- virrat päälle
- valitaan ohjelmasta com portti
- read
- lukemisen loputtua end, niin talleraa samaan kansioon missä ohjelmaa ajetaan 7053.txt tiedoston.(puuttuu tarkistesummat ja muistipainkan numero)

Siitä oli mulla sellainenkin versio joka teki intelin hex tiedoston, mutta kävi sillein miten ei ole koskaan käynnyt ja taas kävi, että kääntäessä exe muotoon ohjelmaa vaihdoin nimeä ja siinä onnistuin tupeloimaan kääntämättömän version päälle vanhemman version.

Täytyy tehdä uudestaan se, mutta tolla jonka sulle lähetin siihen täytyy erikseen lisätä tarkistesummat ja rivinumerot.

16F628.hex on sen pic:n sisään ladattava tiedosto.




Edited By timo3 on 1196432703

Kirjoittaja PetriK » 30 Marras 2007, 14:26


Hieno homma, mä heitän noi linkit näkyviin tuonne RR:n foorumille jossain vaiheessa niin osaavat muutkin rakentaa vastaavat...

Miten toi sun vastaanottosofta toimii ???




Edited By PetriK on 1196425712

Kirjoittaja PetriK » 30 Marras 2007, 14:23

Mulla algoritmi jättää kaikki tavut joiden arvo on 0xFFFFFFFF kirjoittamatta. Viimeinen tavu on 0xFFFFFFFF ja siten tuo mot2bin ei osannut tehdä oikean mittaista tiedostoa.

Sittemmin muutin algoritmin niin että viimeinen longword kirjoitetaan aina ja tiedoston pituus on korjattu tuohon .bin tiedostoon. .mot tiedosto on virheellisenä netissä.

Kirjoittaja timo3 » 30 Marras 2007, 13:18

Tossa on se kytkentä jolla lukeminen onnistu.
http://www.fotopankki.fi/1234567/kuva/1382187697506225
http://www.fotopankki.fi/1234567/kuva/1382261979718656

petrik, vertaa sitä mun kawan ja sun busas tiedostoa, onko mulla 8 merkkiä liikaa tiedostossa vai sulla 8 liian vähän?

Mää luin sen Flasin 32 bittisenä välillä 00000000-00003FFFC eli 00000000-00003FFFF:n asti.

Kirjoittaja PetriK » 30 Marras 2007, 04:15

timo3 kirjoitti:Sitä sun skoopista, onko siinä muistia johon saa mitattua tietoa talteen?
Saako sen näyttämään pulssin suoraan taajutena?

Tossa olis varmaankin vastaavanlainen myynissä kaistaleveys 2mhz herkkyys 0.1mv hintaa sillä on 209 egua.

Mulla on tuo vanha 2 kanavainen 10mhz, mutta ärsyttää kun siinä ei saa muistiin mitattua tietoa.

No joo - on mun skoopissa PC liitäntä, mutta ei ne kuvat kovin kummoisia ole. Toi on enemmänkin autoskooppi kuin aito oskillosskooppi. Mutta ihan hyvä peli.

Taajuuden joutuu asettamaan kahden viivan välisestä ajasta.

Elektrolinnassahan näitä oli aika edullisesti erilaisia...

--------------------------------------------------

Sun kannattaa omaa tutkimistasi varten etsiä että mitä arvoja olen käyttänyt kierrosrajoittimissa ja etsiä idaprolla vastaava paikka näkyville. Siitä näkee minkälaisessa ympäristössä ne luvut ovat ja sen perusteella taas pystyy päättelemään että missä ne omat vastaavat luvut ovat.




Edited By PetriK on 1196389110

Kirjoittaja timo3 » 30 Marras 2007, 00:46

Busassa näyttäis eka kartoille TPS jako x/512 osuvan aika kohdalleen ja RPM:ssä x/2.56 niin osuis tasaluvuille ja alkaa 800 rpm

http://www.fotopankki.fi/1234567/kuva/1378847063808900


http://www.fotopankki.fi/1234567/kuva/1379737504253124




Edited By timo3 on 1196378955

Ylös