NKC Forum
Register | FAQ | Search | Who is online? | Member list | Today's posts | Calendar | Login



Author Topic: Projekt C-Crosscompiler
andi
Stammgast
**
ID # 213


  Posted on December 31, 2022 12:48 PM (#41)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on January 02, 2023 01:33 PM (#42)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on February 26, 2025 05:44 PM (#43)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on February 26, 2025 09:41 PM (#44)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on February 26, 2025 10:01 PM (#45)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on February 26, 2025 10:08 PM (#46)  |  Quote Quote   PM PM   E-mail E-mail
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)
{
782c:4e56 efd4 linkw %fp,#-4140
7830:48e7 393c moveml %d2-%d4/%d7/%a2-%a5,%sp@-


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


  Posted on February 26, 2025 11:16 PM (#47)  |  Quote Quote   PM PM   E-mail E-mail
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
OBJCOPY_FLAGS=--only-section=.text \
--only-section=.text.startup \
--only-section=.rodata \
--only-section=.vectors \
--only-section=.data


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


  Posted on February 26, 2025 11:31 PM (#48)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on March 03, 2025 01:20 PM (#49)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on March 03, 2025 02:38 PM (#50)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on March 03, 2025 04:43 PM (#51)  |  Quote Quote   PM PM   E-mail E-mail
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


  Posted on March 27, 2025 10:11 AM (#52)  |  Quote Quote   PM PM   E-mail E-mail
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