NKC Forum |
Author | Topic: Projekt C-Crosscompiler |
---|---|
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hi,
Ja hab eh vor das ganze in kürze auf github zu stellen. Muss das vorher noch ein wenig bereinigen und testen. Gutes neues Jahr wünsche ich allen. LG Andi |
Posts: 243 | Member since: May 2021 | IP address: not saved | |
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hallo,
ich hab meine GCC-Version (gezippt) zum download in eine Dropbox gestellt: https://www.dropbox.com/s/kyiu6gsimt5o8tr/SysGCC.zip?dl=0 -> Nun inklusive C++ Support. Wenn man sich mit stl, iostream, template-klassen etc. austobt bekommt man aber sehr schnell ein .68k file mit einigen hundert kB (aber wozu hab ich denn 1MB RAM). Funktioniert aber (zumindest beim mir) toll. Ist mal was neues am NKC in C++ zu programmieren. Gruss, Andi |
Posts: 243 | Member since: May 2021 | IP address: not saved | |
smed Stammgast ![]() ![]() ID # 114 ![]() |
![]() ![]() ![]() ![]() ![]()
Hi,
ich habe meinen NKC umgebaut und habe nun RAM ab $0, habe ein 512kB IC ($00000 - $80000). Da ich keine BOOT-Karte habe verwende ich meinen Arduino um das GP ab $60000 ins RAM zu schreiben und außerdem dann auf den Adressen $0 und $4 stack pointer und RESET Vektor abzulegen: __asm__("dc.l 0x00060A02"); //stack pointer __asm__("dc.l 0x00064214"); //reset vector Der Arduino pullt dann noch einen NKC Reset und das GP startet, dann boote ich JADOS ueber die SD Karte in der FPGA-GDP. Das funktioniert soweit ganz ok. Das Übertragen des GP per Arduino dauert gut 30 Sek., etwas nervig aber im Idealfall ist das ja nur ab und zu nötig. JADOS meldet 343 kB freier Speicher. Alle meine relokativ kompilierten Spiele (mit gcc 8.2 kompiliert) funktionieren, die brauchen ja auch weder GP noch JADOS, war also zu erwarten. Folgendes klappt zB ebenfalls, (auf JADOS image disk C) linien, sprite1 und xt und auch alle älteren Programme. Nun habe ich Andi's gcc compiler environment (gcc 4.8) frisch gedownloadet und entpackt. Als erstes möchte ich SW/Jados_test https://github.com/avg67/nkc/tree/be3be24f8876cf26ed5c16d2a61788eb8ed2c178/SW zu Laufen kriegen, es kompiliert auf dem PC ok. Das .m68k file schreibe ich per Arduino zur Adresse $400 im NKC. Dann speichere ich in JADOS mit DSAVE alles ab $400 in das file jatest.68k - diese file starte ich dann vom JADOS prompt = leider crashed es mit 'Falscher Befehl'. Nach dem crash schaue ich mit GP ab Adresse $400, das Programm ist im Speicher und sieht soweit ok aus. Hat jemand eine Idee warum es crashed? Ist mein bootverfahren ok, fehlen evt. noch irgendwelche Vektoren im Bereich $0 - $400 ? Gruss smed test.68k ----------------------- NKC'ler seit 1984 (Pause zw. 1988-2017) CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k und eine FPGA-GDP. NKC - OpenSource since 1983 |
Posts: 225 | Member since: January 2011 | IP address: not saved | |
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hallo,
An welcher Addresse stürzt denn das Programm ab. Siehst du das? Im _out Verzeichnis gibt es auch ein Listing (test.lst). Da kannst du gegenchecken was an dieser Addresse ist bzw. kannst du Stichproben machen ob der Speicherinhalt stimmt. Siehst du Ausgaben oder stürzt er sofort ab? Wenn er sofort (im Startup) abstürzt hab ich das Problem oft schon mit dem Singlestep im GP raus gefunden (Programm auf $400 laden aber nicht starten und dann mittels Einzelschritt zu debuggen) Eigentlich sollte es funktionieren. Mein Framework läuft nun doch schon bei einigen Leuten problemlos. Ah und versuch ev. mal den Dhrystone test (dhry) ob der läuft. Der ist einfacher. Ohne FPGA-Timer zeigt er zwar nichts sinnvolles an aber er sollte trotzdem durchlaufen LG, Andi |
Posts: 243 | Member since: May 2021 | IP address: not saved | |
smed Stammgast ![]() ![]() ID # 114 ![]() |
![]() ![]() ![]() ![]() ![]()
crash ist bei $79F0, bin schon im Einzelschritt werde aber noch nicht richtig schlau draus
Sehe im Speicher ab $7998 da wo eigentlich main() losgehen sollte ein $00 $07 $00 $F5 pattern bis $7BFF, hmmm..., so sieht un-initialisiertes (leeres) RAM aus... Dhrystone lauft durch (nicht selbst kompiliert), zeigt aber trotz FPGA-Timer nichts sinnvolles an, aber immerhin, evt ein Hardware-Problem bei mir mit Interrupt? ----------------------- NKC'ler seit 1984 (Pause zw. 1988-2017) CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k und eine FPGA-GDP. NKC - OpenSource since 1983 |
Posts: 225 | Member since: January 2011 | IP address: not saved | |
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hallo,
der Dhrystone Test braucht den Timer-Interrupt. Ist die Interrupt-Leitung angeschlossen? Kann das Tang-Nano bei dir Interrupts auslösen? Ah der Absturz ist offenbar ganz am Ende. Siehst du vorher Ausgaben? Wenn nicht kannst du es mal bis zum main laufen lassen (0x782c bei mir) int main(int argc, char **argp, char **envp) Wenn es vorher abstürzt dann ist ein Problem im Startup. Aber wie gesagt es läuft schon bei einigen. Kann mir nicht vorstellen dass da noch ein so grober Bug im der Library oder Startup ist. Hast du eine Ser-Karte? wenn ja könntest du mal meinen rs232d downloader versuchen. LG, Andi |
Posts: 243 | Member since: May 2021 | IP address: not saved | |
smed Stammgast ![]() ![]() ID # 114 ![]() |
![]() ![]() ![]() ![]() ![]()
habs gefunden...mein file transfer laeuft mit .S19 files, im .S19 im _out Verzeichnis fehlt die .text.startup section, also main() fehlt, daher laueft alles ok bis main(), dann gehts ins Nirwana...
...ge-fixed im Makefile: # Flags for objcopy tool Nun lauft der Jados Test bei mir komplett durch - sehr schön ! ----------------------- NKC'ler seit 1984 (Pause zw. 1988-2017) CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k und eine FPGA-GDP. NKC - OpenSource since 1983 |
Posts: 225 | Member since: January 2011 | IP address: not saved | |
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hi,
Oh die S19 files sind ein Artefakt die ich noch nie verwendet habe. Die ganzen OBJCOPY_FLAGS kannst alle weg schmeissen. Es sollen ja eh alle Sections im s19 file landen. Ich hab das makefile entsprechend upgedated. LG Andi |
Posts: 243 | Member since: May 2021 | IP address: not saved | |
smed Stammgast ![]() ![]() ID # 114 ![]() |
![]() ![]() ![]() ![]() ![]()
Dhrystone laeuft nun auch auf meinem 68008 System:
764 Dhrystones/s, gcc 4.8 -g -Os 1069 Dhrystones/s, gcc 4.8 -O5 n/a Dhrystones/s, gcc 8.2 -O5 Mit gcc 8.2 funktioniert die Textausgabe nur im Schneckentempo, ca. 10sek pro character (!) - da brauchts wohl mal eine Nacht debuggen um zu verstehen warum...also gcc 4.8... gruss smed ----------------------- NKC'ler seit 1984 (Pause zw. 1988-2017) CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k und eine FPGA-GDP. NKC - OpenSource since 1983 |
Posts: 225 | Member since: January 2011 | IP address: not saved | |
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hallo,
klingt ja toll. Mein 68010 (10MHz) hat 1754 Dhrystones/s (-Os) und 2597 Dhrystones/s (-O5), das Tang Nano (68000, 10MHz mit ~2 WS beim Speicher) hat ~1400 Dhrystones/s (ebenfalls -Os) Den GCC8.2 wo hast du denn den her? Würd ich gerne mal probieren. Hab unter Linux den GCC 7.5 am laufen. Die 68k files damit sind ca. gleich schnell aber deutlich größer weil die Libraries um so größer und aufgeblähter werden je neuer ein GCC ist (hauptsächlich Multiprocessing updates etc. die wir für den NKC nciht brauchen). Für mich ist der GCC 4.8.0 diebezüglich ein guter Kompromiss. Halt mich am laufenden was sich diesbezüglich bei dir so tut. LG, Andreas |
Posts: 243 | Member since: May 2021 | IP address: not saved | |
smed Stammgast ![]() ![]() ID # 114 ![]() |
![]() ![]() ![]() ![]() ![]()
den gcc 8.2 (pre-build binaries for WIN) hab ich hier her: http://www.aaldert.com/outrun/
dazu habe ich dein gcc-delta gemerged was bis auf ein paar Kleinigkeiten ohne Probleme ging irgendwo habe ich aus _READ_WRITE_RETURN_TYPE "int" gemacht ----------------------- NKC'ler seit 1984 (Pause zw. 1988-2017) CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k und eine FPGA-GDP. NKC - OpenSource since 1983 |
Posts: 225 | Member since: January 2011 | IP address: not saved | |
andi Stammgast ![]() ![]() ID # 213 |
![]() ![]() ![]() ![]() ![]()
Hallo,
zur Info: Seit gestern läuft FreeRTOS auf meinem NKC https://www.freertos.org/ Das ist ein sehr leistungsfähiger (preemptiver) Multitasking Kernel. Damit kann man jetzt mit Multithreading, Sempaphoren, Mutexe etc. experimentieren und Apps damit schreiben. Nur gut dass die Libraries meines GCC-Ports "threadsafe" sind. Die Jados und GP-Routinen sind es jedenfalls nicht. Das hab ich schon getestet. Die muss man selber mittels Mutex absichern. Es gibt davon auch eine Variante mit integriertem TCP/IP (v4, v6) Stack. Den Treiber für unsere Ethernet-Karte geh ich als nächstes an. LG, Andi |
Posts: 243 | Member since: May 2021 | IP address: not saved |
| https://nkcforum.de | Board rules | Privacy policy
Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts
Site created in 0.034990 seconds
Processed 15 files
gzip compression enabled
2269.39 KiB memory usage