NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Kalender | Einloggen



Autor Thema: LVGL (Light and Versatile Graphics Library) für den NKC
smed
Stammgast
**
ID # 114


  Erstellt am 09. Januar 2026 20:20 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,



diese Grafikbibliothek ist im Prinzip für den 68k NKC auf FPGA-GDP Basis ("TangNano NKC", "68k-SOC NKC") geeignet.

Hier nun ein Versuch diese supermoderne Grafik API als gemeinsames* Projekt zum Laufen zu kriegen. Es wird spannend.

Mehr Infos zu LVGL gibt's hier: https://lvgl.io/

Hier der link zum NKC Projekt auf GitHub: https://github.com/smedde/lvgl4nkc

Es folgen in den nächsten Posts eine kurze Beschreibung etc. was ich bisher hinbekommen habe. Bitte alle mitmachen !

Gruss
smed


*alleine kriege ich das nicht hin

-----------------------
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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
retroniker
Stammgast
**
ID # 243


  Erstellt am 09. Januar 2026 21:17 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi smed,
ich würde gerne mithelfen .... aber ich glaube das übersteigt absolut meine Fähigkeiten. Zumal ich auch keine GDP-FPGA habe. Aber ich werd's verfolgen ... vielleicht gibt's ja was für's "Fussvolk" zu tun :D

Schöne Grüße

-----------------------
68008/GDP64HS/BootRAM68k/KEYr4/IOEenh mit 2xSD-Karte/Sound3/UHR3/IOEenh mit Joystick/BUS3 ;)

Beiträge: 176 | Mitglied seit: Februar 2025 | IP-Adresse: nicht gespeichert
tuti
Voll in Gange
***
ID # 225


  Erstellt am 10. Januar 2026 02:08 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Das mit der GDP-FPGA wäre ein lösbares Problem... :)

Hier wäre noch was da: https://nkcforum.de/forumdrc/index.php?mode=viewthread&forum_id=1&thread=194&z=26#post514

Offtopic: Sorry, dass ich hier gerade nur sporadisch gucke und noch seltener schreibe. Meine Frau hat sich offenbar zum Ziel gesetzt, alle Ärzte und Stationen der Klinik kennenzulernen... :eek:

-----------------------
Definitiv sind Frösche und Himbeeren am besten!

Beiträge: 561 | Mitglied seit: Juli 2022 | IP-Adresse: nicht gespeichert
andi
Fühlt sich wie zu Hause
***
ID # 213


  Erstellt am 10. Januar 2026 09:29 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
Das ist ein wirklich interessantes Projekt. Da bin ich auf jeden Fall dabei.
@retroniker: Du hast doch sicher ein Tang-nano. Das LVGL Projekt zielt in erster Linie auf das 68k-SOC (Komplettsystem im Tang Nano) ab, weil nur dort ein direkter Zugriff auf den GDP-Videospeicher möglich ist.
LG Andi

Beiträge: 420 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 10. Januar 2026 12:41 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
Danke für das feedback. Es sind alle Beiträge willkommen, ob als Tester oder Developer, oder moralischer Beistand.

Hier der link zum Projekt auf GitHub: https://github.com/smedde/lvgl4nkc

Nach dem download von GitHub ist das Projekt im Verzeichnis ../lvgl4nkc, von dort aus bringen Euch folgende Schritte auf den Stand der Dinge:

1) im Verzeichnis ../lvgl4nkc/lvgl

make
make install


Das erste 'make' compiliert die rund 2000 files von LVGL zu liblvgl.a; dies dauert ein paar Minuten (Pfeifenraucher sind hier klar im Vorteil) - läuft ohne Fehler oder esoterische Warnungen durch - schon mal gut. Das 'make install' kopiert die liblvgl.a ins NKC gcc environment wo es der linker für den nächsten Schritt finden wird.

2) im Verzeichnis ../lvgl4nkc

make

Dies kompiliert lvgl_nkc.c, ein (sehr) einfaches NKC .68k binary das gegen Andi's libnkc.a und liblvgl.a gelinkt ist. Andi's gcc environment wird in C:\SysGCC erwartet. Um dies alles zu testen ist ein gp_clearscreen() und ein printf() und auch ein lv_tick_inc() Aufruf in lvgl_nkc.c drin - kompiliert und linked ohne Fehler und läuft auf dem NKC. LVGL macht allerdings noch nichts. Das binary ist 382kB gross und ist dank Ethernet Karte in 5 sek. auf meinem NKC, mit einer SER bei 19200 bd sind es rund 3,5 Minuten (da schmunzelt der Pfeifenraucher nur).

Was nun fehlt: (Update 18. Jan 2026 - schon erledigt)

lv_conf.h - bisher nur rudimentäre Konfiguration

Muss noch implementiert werden:

void lv_port_init(void)
void sys_tick_1ms(void)
void disp_flush(lv_display_t *disp, const lv_area_t *area, uint8_t *px_map);


Gruss
smed

PS so, ich mach jetzt erst mal ein paar Tage NKC Pause

-----------------------
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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
fin55
Ist öfters hier
**
ID # 223


  Erstellt am 10. Januar 2026 16:51 (#6)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
sehr interessant. Ich werde mich erstmal mit der LVGL etwas beschäftigen.
LG Werner

Beiträge: 36 | Mitglied seit: April 2022 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 11. Januar 2026 16:50 (#7)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi Andi,
könntest du eine .interrupt section im 'ofiziellen' linker script definieren:

https://github.com/avg67/nkc/blob/main/SW/SysGCC-delta/m68k-elf/nkc_common/rm_ram1.ld

.interrupt : {
. = ALIGN(0x4);
_int_handler_sta = . ;
*(.int)
_int_end = ALIGN(0x4) ;
} > ram


Hatte damit vor einiger Zeit mal experimentiert, erinnere mich das das gut geklappt hatte - jetzt für LVGL relevant.

Gibt's da evt. clashes mit JADOS? Du hattest mal etwas in Bezug auf JADOS und Interrupts erwähnt, kann mich nicht mehr genau erinnern.

Gibt's sowas:

static void interrupt_OFF() {
asm("move #0b0010011100000000,%SR"); //ignore all interrupts
}
static void interrupt_ON() {
asm("move #0b0010000000000000,%SR"); //allow interrupts
}


schon irgendwo in einer deiner libraries? Hatte da mal was gesehen. Ist das 68020/30 save?

Danke

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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
andi
Fühlt sich wie zu Hause
***
ID # 213


  Erstellt am 11. Januar 2026 17:36 (#8)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Smed,
Die Interrupt Section kann ich gerne mit aufnehmen. Wofür brauchst du das genau?
Kannst das gerne selber machen. Wir mergen das später.
Bei meinem TFTP Loader hab ich festgestellt dass Jados die Interrupts bei allen Fileoperationen sperrt.
Interrupt #defines gibt's schon hier: https://github.com/avg67/nkc/blob/main/SW/SysGCC-delta/m68k-elf/m68k-elf/include/sys/m68k.h#L6
Bzw Anwendung hier: https://github.com/avg67/nkc/blob/main/SW/SysGCC-delta/m68k-elf/nkc_common/crt0.c#L26
https://github.com/avg67/nkc/blob/main/SW/SysGCC-delta/m68k-elf/nkc_common/crt0.c#L274

Beiträge: 420 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 11. Januar 2026 17:48 (#9)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi Andi,
LVGL hat einen Eventhandler, der braucht einen heardbeat tick alle 1ms. Den wollte ich über den FPGA-Timer und eine Interrupt Routine implementieren. Funktioniert das so?

Bezüglich des Linkerfile updates probiere ich mal ein commit in dein GitHub repro, mal sehen was passiert...

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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
andi
Fühlt sich wie zu Hause
***
ID # 213


  Erstellt am 11. Januar 2026 18:32 (#10)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Smed,

aktuell wird der Timer für den Ticker-Interrupt mit 5ms betrieben (_clock() Function). 1ms wollte ich einem 10MHz 68000 nicht zumuten.
Muss der heardbeat wirklich 1ms sein oder gehen auch 5ms (möglicherweise gibt es dafür ein #define)?
Wenn ja könntest du den timer-isr-callback dafür verwenden.
Wenn es 1ms sein muss dann könntst du die Timer-Interrupt-Zeit in newlib_stubs auf 1ms ändern (und nicht vergessen CLOCKS_PER_SEC anzupassen - dieses dient als Basis für Zeitberechnungen) https://github.com/avg67/nkc/blob/main/SW/SysGCC-delta/m68k-elf/m68k-elf/include/ndrcomp/sysclock.h#L8
Momentan bin ich leider tief in einem anderen Projekt drin (uC für USB Tastatur + Maus am NKC) das ich vorher gerne fertig stellen würde bevor ich was neues anfange.
LG,
Andi

Beiträge: 420 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 11. Januar 2026 18:46 (#11)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Okay, wenn's schon einen Interrupt gibt, versuche ich LVGL da mit einzuhängen, 5ms sollte ok sein, disp_flush() ist alle 30ms.

Bzgl. des Linkerfile commits, kannst du mir access zum /nkc repro geben, oder soll ich eine fork machen?



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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
andi
Fühlt sich wie zu Hause
***
ID # 213


  Erstellt am 11. Januar 2026 19:37 (#12)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Smed,

du hast schon Zugang zu meinem Repo. Ich seh dort auch schon die Linker-Script-Änderung von dir

In den Ticker-Interrupt kannst du dich so einhängen (siehe Tetris Sound) - ich benutze das bei tetris um den Sound im Hintergrund abzuspielen: https://github.com/avg67/nkc/blob/main/SW/Tetris/sound.c#L161
https://github.com/avg67/nkc/blob/main/SW/Tetris/sound.c#L530
Einen Fork kannst machen wenn du das ganze unabhängig weiter entwickeln willst. Besser wäre es allerdings wenn wir es beisammen halten und nicht zu viele verschiedene Version haben. Aber du kannst in meinem Repo einen Branch anlegen wo du deine Änderungen machst (wenn es mehr ist). Diesen können wir später mittels Pull-request wieder mit meinem main-branch mergen (nach einen Code-review)

Beiträge: 420 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
tuti
Voll in Gange
***
ID # 225


  Erstellt am 12. Januar 2026 08:30 (#13)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Zitat von tuti:
Das mit der GDP-FPGA wäre ein lösbares Problem... :)

Hier wäre noch was da: https://nkcforum.de/forumdrc/index.php?mode=viewthread&forum_id=1&thread=194&z=26#post514



Hi, @retroniker.

Wie ist nun dein Bedarf an einer Tang-Nano-Platine?

Ich frage zur Sicherheit nach, weil ein anderer Forums-Kollege gerade in Begriff ist, meinen Rest an roten Platinen zu übernehmen... :cool:

-----------------------
Definitiv sind Frösche und Himbeeren am besten!

Beiträge: 561 | Mitglied seit: Juli 2022 | IP-Adresse: nicht gespeichert
fin55
Ist öfters hier
**
ID # 223


  Erstellt am 12. Januar 2026 23:48 (#14)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

unter Mint Linux mit Andi's GCC-Paket hatte ich Probleme mit der liblvgl.a.

Mit folgenden Anpassungen konnte ich das Beispielprogramm von smed zum Laufen bringen:

Die Bibliothek liblvgl.a nach "~/working/m68k-gcc/m68k-elf/lib/m68000" kopieren.

Im Verzeichnis "~/working/m68k-gcc/m68k-elf/lib/" folgenden Link setzen: ln -s m68000/liblvgl.a ./liblvgl.a

In der Datei "~/working/m68k-gcc/nkc_common/rm_ram1.ld" die GROUP-Zeile anpassen: GROUP(-llvgl -lnkc -lgcc -lc)

Makefile aus dem Jados_test Verzeichnis kopieren mit folgenden Anpassungen:
TARGET := lvgl_nkc
COMMON_DIR = "Pfad zum nkc_common Verzeichnis"
CSRCS= lvgl_nkc.c


LG Werner

Beiträge: 36 | Mitglied seit: April 2022 | IP-Adresse: nicht gespeichert
retroniker
Stammgast
**
ID # 243


  Erstellt am 13. Januar 2026 12:38 (#15)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi,
ja, ich würde eine nehmen. Ich habe Dir auch eine PN gesendet.
Danke der Nachfrage :)

Schöne Grüße


Zitat von tuti:
Zitat von tuti:
Das mit der GDP-FPGA wäre ein lösbares Problem... :)

Hier wäre noch was da: https://nkcforum.de/forumdrc/index.php?mode=viewthread&forum_id=1&thread=194&z=26#post514



Hi, @retroniker.

Wie ist nun dein Bedarf an einer Tang-Nano-Platine?

Ich frage zur Sicherheit nach, weil ein anderer Forums-Kollege gerade in Begriff ist, meinen Rest an roten Platinen zu übernehmen... :cool:



-----------------------
68008/GDP64HS/BootRAM68k/KEYr4/IOEenh mit 2xSD-Karte/Sound3/UHR3/IOEenh mit Joystick/BUS3 ;)

Beiträge: 176 | Mitglied seit: Februar 2025 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 16. Januar 2026 19:31 (#16)  |  Zitat Zitat   PN PN   E-Mail E-Mail
neue updates auf GitHub (link siehe erstes posting), langsam tut sich was, aber noch klemmts irgendwo...

@fin auch neue Makefiles, sollte nun klappen

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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 17. Januar 2026 19:05 (#17)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi,
....erste Lebenszeichen von LVGL...





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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
fin55
Ist öfters hier
**
ID # 223


  Erstellt am 17. Januar 2026 19:50 (#18)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo smed,
super. Sieht nach einem grossen Schritt aus.
Ist das in GitHub schon drin?

LG Werner

Beiträge: 36 | Mitglied seit: April 2022 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 17. Januar 2026 20:13 (#19)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi,
ja, GitHub ist up to date, mache ich immer gleich wenn's was Neues gibt. Bisher nur Label ausprobiert, die anderen Widgets sollten nun auch funktionieren. Sehr spannend.

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

Beiträge: 299 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
fin55
Ist öfters hier
**
ID # 223


  Erstellt am 17. Januar 2026 22:10 (#20)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo smed,

bei mir klemmt es weiterhin im lv_init(), ich sehe also nur die ersten beiden Textzeilen.
Als ersten Test habe ich die vier memset() Testzeilen mal aktiviert - Ergebnis : zwei horizontale blaue Linien.
Immerhin etwas - aber deine Erfolge lassen hoffen ....

Ich werde morgen weiter mein Glück versuchen ....

LG Werner

PS: Ich arbeite mit einem isolierten TangNano (Firmware NKC_68k_PS2_KEYB_PCB.fs vom 28.11.25)

Beiträge: 36 | Mitglied seit: April 2022 | IP-Adresse: nicht gespeichert



| https://nkcforum.de | Boardregeln | Datenschutzerklärung


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Seite in 0,048271 Sekunden erstellt
18 Dateien verarbeitet
gzip Komprimierung eingeschaltet
2297,03 KiB Speichernutzung