CREDICEL - En 6809 ICE baserad på CreDBG

ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

CREDICEL - En 6809 ICE baserad på CreDBG
CREDICEL, eller om man vill utläsa det som Cred ICE med tyst L.

När jag började skissa på nya MC6809 projekt så uppstod ett sidospår som jag bara inte kunde låta bli. Nu när jag har min CreDGB och Måldebuggern i form av 6809 kod så skulle man ju kunna bygga samman dessa nästan som en ICE (In-Circuit Emulator). Om man smälter samma dessa så blir det ännu enklare att utveckla sin kod med CredDBG och Måldebugern för som en ICE behöver man inte bygga om måldebuggerns kod för att passa måldatorns minnesmappning. Ja kanske inte helt oberoende men till en nivå som kräver än mindre jobb att sätta upp.

Så varför inte göra en "burk" med en flatkabel ut som har en DIL40 kontakt i ändan och som ersätter CPUn på målkortet likt traditionella ICEer brukar göra (i alla fall dom jag använt förut).
Jag har ju en del grejor kvar efter PROMEL bygget så de är inte så mycket som saknas för detta bygge.

CRED ICE minnesmappning
Jag tänker såhär att jag viken de övre 32kb av adressutrymmet till att hanteras av CRED ICE.
1. Cred måldebuggerkoden blir som tidigare placerad i de översta 4k området.
2. Ett RAM i ICEen fyller ut området 0x8000 och uppåt tills måldebuggerROMet tar över vid 0xF000. Det här RAM minnet använder man för sin målkod. I en senare PROMad kod kan då nyttja samma adresser, bara att bränna direkt till EPROM men man måste såklar flytta avbrottsvektorerna till 0xFFF2->
3. Måldebuggern vill ju ha en seriekanal till CreDGB så ICEen får en ACIA och den knöar jag in på de första 128bytsen efter 0xF000 så ROMet med måldebuggerkoden börjar inte förens vid 0xF080
4. De nedre 32kb kommer aldrig att adresseras till målkorten. Målkortet kan utforma den nedre 32kb helt fritt utan att det påverkar ICEn

Jag har inte provat detta ännu men jag tror det kommer funka. Så här ser minnesmappningen ut grafiskt.

Bild

CRED ICE konstruktion
Datordelen av ICEen får en RESET krets. CPUn får drivas från en extern oscillator för att målmaskinen också ska kunna klockas den vägen. Det kommer finnas en sockel så man kan klicka i valfri kristall i ICEn. Målmaskinen kan ha kristall direkt på kretsen eller ha en extern oscillator. Har målmaskinen en extern oscillator kan man låta måloscillatorn driva ICEn med sin klocka.
Alltihop drivs med en 5V USB nätdel.

Bild

Interfacet mot CreDBG hostmjukvaran kan köras med klassisk RS232 eller med USB via en FT232 krets. Även ACIAns klocka kan antingen vara en kristall direkt på kretsen eller drivas från en externa osc. Det behövs ingen omkoppling för att välja USB eller RS232, båda funkar "samtidigt".

Bild

Ett första provskott på mönsterkort är beställt. Får se om det här kan funka :)

Bild

Bild
Användarvisningsbild
JimmyAndersson
Inlägg: 26442
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av JimmyAndersson »

Det här kommer bli mycket intressant att följa! :tumupp:
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

Startat populera CRED ICE kortet
Gör som vanligt, bygger en liten bit i taget och testar på vägen så man ser att del för del funkar.

Power
5VDC power in från en USB PS funkar fint.
Resetkretsen funkar också som den ska och fördröjer power-on-start med 200+ms

Serial
Sen blir det USB-seriekretsen. Den tycks funka så långt att den identifierar sig och Windows hittar den och mappar den som COM9
RS232 drivern verkar också funka, den genererar snällt sina 9V spänningar.

Bild

Osc
Jag använder var sin extern oscillatorer för att driva CPU och ACIA. Båda oscillatorerna svänger fint men man ser att dutycykeln inte är 50%. För ACIAN spelar det nog ingen roll. Men jag vet inte om det kan påverka CPUn? Har ingen koll på designen invändigt i 6809an.

Bild

CPU-oscillatorn kan populeras med olika kristaller. 49HC/U kannor får en hållare för att säkrare hålla kristallen på plats. 49HC/S är så små så dom tycks sitta bra själva i hållaren.

Bild
.
MattisLind
Inlägg: 775
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av MattisLind »

Nu har du ju redan kommit en bit på det här projektet. Kände du till atombusmon som Hoglet67 skapat? En ICE för 6809 (och 6502 och Z80). Baserad på en FPGA med en 6809 kärna och en separat AVR softcore för debugging och hantering av breakpoints och trace och annat. https://github.com/hoglet67/AtomBusMon

Just nu är det FPGA kort som projektet ursprungligen baserades på inte i produktion. Man får titta på nyare kort och CADa upp nya adapterkort. (Något jag funderat på, men inte haft tid till)
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

Tack för länken! Jag har läst att det ska finnas en FPGA-klon av 6809 men aldrig grävt i det mer än så. Klart Cool!.
Just detta projekt är det mer av att ge lite nytt liv i mitt eget projekt från 80-talet CRED 6809 - En utvecklingsmiljö för Motorola 6809.
Men man vet aldrig var det leder till...
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

Få igång CRED Target koden
Fortsätter populera kortet, nu med CPU, RAM, EPROM, ACIA och logik-kretsarna på baksidan.

Bild

Fel
Har missat att invertera en signal i adressavkodningen. Upptäckte det redan innan jag monterade kretsarna så jag kunde förbereda för det och kapa några folier under kretsen.

Bild

Ny feature
Sen kom jag på en feature att lägga till. Om Målmaskinen har något minnesmappat i områden där nu ICE RAMet ligger, alltså på adresser 0x8000-0xEBFF så kan Måladressavkodarna disabla ICE-RAMet (ja även EPROMet och ACIAn men det blir ju lite dåligt kanske...) och låta sina kretsar ChipSelectas. Målmaskinen kan ju så klart erbjuda RAM för målprogrammet under 0x8000 för att kompensera om man tar bort minne på detta sätt i det övre minnesdelen. Själva disablingen görs med en extra ledning som är aktivt låg och kopplas enkelt in på den krets som vill ta över given adress. Har man flera kretar kan man nog göra en wire-OR med dioder till respektive krets CS.

Minnsedisposition i ICE
ICE delen lägger som sagt beslag på 0x8000 - 0xFFFF enl bilden nedan. ACIAn är lite specialmappad från 0xF008. Jag har en ide för det framåt. Vi får se om det behövs.

Bild

Så med denna minnesmap så blir det enkelt att justera CredTargetDBG-koden med nya adresser.

Bild

Fel igen
Slår på strömmen. Röken stannar kvar i kretsarna. Men inget kommer ut på serieporten... Börjar så klar kolla all patchning men den verkar ok. Mäter alla signaler. E-klocka finns, adresser ser OK ut. Dataledningarna lite mindre OK men inte alarmerande för det beror nog på att Bus-Pullups saknas och när bussen går i HigZ.
ChipSelect ledningarna ser också OK ut. Hmmm :humm: det tycks på timingen av bussaktiviteten att när koden gått ett tag så blir A15, A14, A13 alltid höga... Men det är nog som det ska vara. Det intressanta är att det tar ca 2-3 sekunder innan det blir så. Det tyder på att RAMminnesttestet faktiskt körs och blir klart. Tänk om det är så att koden kör helt OK men att ACIAn inte funkar...

Efter mycket funderande så står det ju helt klart att felet är att CTS, DSR och DCD vilar på +5V och inte mot GND som det ska vara :doh:

Bild

Och nu svarar CRED ICE med korrekt initieringsträng :D

Bild
.
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

Emuleringen igång, funkar fiint
Löder på buffertkretsarna på CRED ICE kortet. Innan jag kopplar CRED ICE med en målmaskin så upptäcker jag så klart att jag på nytt lyckats felrita IDC -> DIL så varje ledningspar är felvänt, alltså 1<->2, 3<->4, osv... :doh: Jaja, då får man väl löda det rätt.
Jag har velat lite fram-å-tibax huruvida jag ska låta 245-Databusdrivern driva hela bussen, alltså internt i ICE och på Target eller om den bara ska serva Target. Jag landar i det senare och patchar in en NAND-grind för att styra HCT245an på tänkt sätt.

Bild

Jag skippar härmed också möjligheten för Target att bryta sig in i adressområdet 0x8000 -> då det kräver mer logik och därmed fler kretsar. Inte bygga på en massa lullul som bara blir jobbigt att verifiera. KISS principen får gälla. Jag har ju även spårat in på en massa andra fiffigheter man skulle kunna göra men det får bli till ett framtida bygge. Jag kör vidare med en MVP version av CRED ICE (MVP = Minimal Viable Product. Det kör vi med på jobbet, brukar bli bra nog).

Jag tar bort möjligheten att driva ACIAn med bara en kristall på utsidan. Det funkar ju inte med de kretsar jag har och med den externa oscillatorn kan man också köra 115kb så det är en lösning att föredra.

En annan sak som irriterat mig lite är att CreDBG PCmjukvaran (CreDBG 6809 alá 2025 - Ny Host Debugger för Motorola 6809) blir lite ledsen när jag stänger av Target (vilket man vill ju göra lite då och då när man utvecklar) för då dör USB-Serial kretsen också. Och att bara köra USB kretsen på USB-5Ven skapade lite andra oönskade latchupp-effekter så jag tror jag ska försöka försörja den från både Target. Det tycks funka ok men mer av skarpa tester behövs.

I och med att logiken till 245an trimmats går det att göra adresslogiken lite mer kretseffektivt. Jag gillar när konstruktionen är så enkel som möjligt. Det gör det hela enklare att felsöka och underhålla.

Bild

Så minnesmappen blir att CRED ICE lägger beslag på de övre 32kb och Måldatorn får nöja sig med de låga 32kb.

Bild

Jag kopplar CRED ICE till mitt CRED kort från 80-talet. Först funkar ju ingenting... :humm: Det syns tydligt på databussen på Target att nått är knas men det tar en bra stund att hitta. Inte förens jag kopplar upp oscilloskåpets digitaltillsats så hittar jag felet. En kallödning bland mina patchaningar så klart.

Bild

Och nu så går den lilla testmjukvaran igång. Koden kan köra antingen i RAM i ICE eller i RAM på Target-kortet. Funkar fiint :happy:
Blir en bra lördag idag det känner jag på mig. Jag tar med hunden på en glasspromenad.

Bild
.
Användarvisningsbild
Oskar
Inlägg: 1931
Blev medlem: 6 september 2005, 15:11:36
Ort: Storsjö, Sorsele

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av Oskar »

Härligt med framgång :bravo:
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

Dubbels så snabb - Dubbelt så bra :D
Nya mönsterkort hemma och populerat ett. Först ville det inte riktigt funka med emuleringen men det var ett ben på 245an som var olödd så det förklarade saken. Bara lite trixit att hitta.
Kortet ser ut så här.

Bild

och går fiint även med en 8MHz kristall, busstakt då 2MHz. E-klocka enl osc-bild.

Bild

Nu har den stått på stabilitetstest sen igår och det verkar funka. Att köra USB kretsen med matning både från dator och PS verkar också funka stabilt och bra.
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

2MHz bus funkar stabilt
Bytte till en 68B21 PIA på målkortet och klockade upp farten till 2MHz. Funkade fiint. Har kört drygt ett dygn och allt funkar stabilt.
Även att starta och stoppa programkörningen i målprogrammet fungera utan konstigheter.
Känns bra :)

Bild
ELTompa
Inlägg: 520
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av ELTompa »

CRED ICE 6809 - så här blev den
Nu har CRED ICE fått en kapsling.

Bild

Bild

Bild

Jag jobbade en del med att göra höjden låg för att ge den ett smäckrare utseende. Blev skapligt tycker jag.
Vill man byta kristall så får man öppna lådan och sticka i en ny. Men man kan välja klockas från målmaskinen utan att öppna locket, bara slå om brytaren framtill.
Inuti blev det såhär.

Bild

och här emulerar den för fullt

Bild
.
tingo
Inlägg: 319
Blev medlem: 17 maj 2017, 17:55:40
Ort: Oslo, Norge

Re: CREDICEL - En 6809 ICE baserad på CreDBG

Inlägg av tingo »

Nice!
Skriv svar