en gedetailleerde/specialistische antwoorden mbt digitale programmering niet kan snappen,
Ow... Dit IS de simpele versie. Met een simpele controller. Iets als een disassembler ed. of trucen met adressering is helemaal nog niet ter sprake gekomen...
"Was deze EPROM2 kapot
Nee dus. Daar zijn we het wel over eens...
Was deze EPROM2 op een niet normale (voor deze ECU in de motortoepassing) gemanipuleerd?
Ik denk het ook niet. Als je ff op de reset vector had gekeken, dan had je het antwoord gehad.
Zoals gezegd: ik denk dat de firmware ook in die EPROM zit. Het zou zomaar custom firmware kunnen zijn. Dus niet de 'fabrieks firmware' waar de maps op bekende locaties staan. Er lijkt mij zo 1-2-3 niks aan 'gemanipuleerd' (what's in a name...).
gegeven mijn totale onbekendheid met digitale codering, werking van Mprocessors, adressering van geheugens etc. etc.
Dat lijkt me toch voorwaarde voordat je aan dit soort dingen knutselt. Nu is het niet meer dan 'aapje - kunstje'. Aan de andere kant... het is verrassend hoe ver sommige apen daarmee komen
Hiervoor is een XDF file benodigd, die de hardware van de motor , koppelt met de geheugenplaatsen op de BIN
Mispoes. Dat heeft niks met hardware te maken. Dat heeft met een bepaalde versie van firmware te maken. Als die de maps op een andere locatie verwacht (en daar staan ze ook), dan merkt de hardware daar helemaal niks van.
Theoretisch zou je nog wat met 'hardware kijkt zelf in de maps' kunnen. Maar dat impliceert dat de hardware iets met DMA zou moeten doen ofzo. Alles kan, maar gezien de controller en setup acht ik de kans daarop heel erg klein.
De EPROM2 kan met een voetje gebruikt zijn om meer mappen in 1 grotere EPROM te zetten
Dat kan met elke EPROM... Daar hoef je niet speciaal 'image 1' of 'image 2' voor te hebben. Puur een hardware dingetje. Als je mazzel hebt, dan zou het zelfs 'running' omgezet kunnen worden - heeft wel wat randvoorwaarden, maar deze simpele controllers doen geen pre-fetching enzo.
[offtopic]Ik heb die hardware ooit voor een 8051-derivaat zo ontworpen: in software 'bankswitching' doen op de ROM waar diezelfde software draait.[/offtopic]
Ik vroeg me ook af (als een EPROM gedeeltelijk fysisch kapot gegaan zou zijn) of adreslijnen naar beneden verschoven hadden kunnen zijn. (Het antwoord op het laatste, weet ik nu, is een categorisch Nee).
Zeg nooit nooit. Ik weet niet hoeveel '200 regels' is. Theoretisch zou een stuk address decoding stuk kunnen zijn waardoor er rare dingen gebeuren. De kans daarop (en dan een EPROM die verder normaal werkt overhouden) is zo klein dat 'nee' een veilige aanname lijkt.
Nogmaals: dat was de reden dat ik je vroeg om ff te kijken hoe eea. met die reset vector en memory mapping in elkaar zit. Dan WEET je het! Voorlopig houd ik het op 'custom' firmware. Whatever 'custom' dan ook moge betekenen...
Je kon bv in een pitstop binnen 10 seconden een map aanpassen (ECU wel van spanning blijven voorzien, ontsteking aan dus); de differentiële maps werden in het RAM geschreven.
Dat was voor firmware ontwikkeling redelijk standaard in die tijd: een EPROM emulator die op de een of andere manier aan een PC hing. Er zat een stuk RAM op (maar ja, dat weet die controller niet... die zet een address en verwacht data!; dat doet RAM prima!) wat je natuurlijk 'ter plekke' kunt aanpassen. Dat foefje kun je met elke ECU waar een EPROM in zit uithalen. Een BEETJE emulator heeft ook een backup batterij (of accu) zodat de RAM niet gelijk 'leeg' is als de spanning eraf gaat.
Overigens is er in de address map van de controller nog ruimte zat voor wat extra memory. Als iemand daar een stuk RAM in frot en de firmware kijkt op de adressen die voor de RAM gemapped zijn voor de tables... Kat in het bakkie. Dat is een 2de mogelijkheid om zoiets te doen (en wellicht in die tijd sneller, omdat er minder overdracht vanaf 'de pc' was, dat dus sneller ging en tijdens een race is snelheid in elk opzicht alles tenslotte).
Tijdens het optimaliseren van de motor op een testbank ("Rolling Poad), werd een EPROM emulator gebruikt ("Rommulator")
Die dus... Die is iets spannender dan de 'EPROM emulator' omdat je 'live' aan de bussen moet kunnen zitten. Ze hebben of foefjes gedaan met 2 RAMs die nagenoeg identiek waren qua inhoud: de controller 'ziet' de ene, de PC 'ziet' de andere en zodra de PC 'klaar' is, wordt eea. gewisseld en de andere RAM 'geupdate'. Dat gaat voor de gebruiker automagisch. Er schijnt ook nog zoiets als 'dual ported' RAM geweest te zijn. Dat heb ik nooit 'live' mogen aanschouwen.
In het bovenstaande verhaal is het zonneklaar dat de eigenaar met de ECU "geklooid" heeft (hij beweerde dat dit niet het geval was) en dat hij (nadat de ECU niet meer werkte), bij de motorhandelaar (onder garantie een nieuwe ECU probeerde te krijgen).
Ik ga niet zeggen dat het niet zo is, maar ik zie ook nergens overtuigend bewijs. Nogmaals: die controller start gewoon met wat er op (zijn) address 0xfffe als vector staat. Dat ligt hard vast in de controller. Als daar die EPROM gemapped is, dan kan die naar vanalles verwijzen... Naar het (EPROM) 0x0000 address of naar wat anders. Hoe het de makers van de firmware uit komt cq. wat ze leuk vinden cq. wat bij die toko gebruikelijk was.
Ik heb veel mbt Digitale Logica van jou (en andere forum members) opgestoken, maar het meeste moet nog bezinken en ik moet me er nog verder in verdiepen.
Succes daarmee. Het lijkt allemaal heel veel spannender dan het is. Dat heeft ook een beetje met de tijd te maken: tegenwoordig pak je een controller op SOC en je hoeft niet meer na te denken over bussen enzo. Vroegah moest je dat allemaal bedenken, en dus waren er meer mensen mee bezig (en was die kennis dus ook meer verspreid). Daar komt bij dat de eerste PC (en XT ook nog) niet heel veel anders in elkaar zaten dan het ding wat jij nu ECU noemt. Goed, de address bus was wat breder. Er zat wat rommel bij die DMA kon doen. Maar conceptueel is het volkomen identiek aan wat jij hebt!
Maar begin met aan te nemen dat die meeste hardware 'simpel' is. RAM, ROM, Flash... het maakt op zich voor die controller geen moer uit, zolang het maar op de bus past (al dan niet met wat 'glue logic'). I/O is ook zo'n dingetje. Mensen zien het als iets magisch, maar 'memory mapped' I/O is feitelijk niks anders dan... en (meestal) 8 bit 'ding' wat op het moment dat het juiste address op de bus voorbij komt met de juiste puls op de control lijnen gewoon de databus naar de output copieert. Meer is het niet.
Het juiste address selecteren? 64k, 16 address lijnen. 16 invertors die je al dan niet tussen schakelt en een 16-input AND (of 16 input OR als je de logica omdraait...). De output hang je aan een Chip Enable (CE of nCE meestal) ofzo. Meer is ook dat niet. Als je dit soort kunstjes snapt, wordt zo'n ECU opeens een heel ander ding...