RunCPM compile auf einem OpenWRT-device (LinkIt Smart MT7688)

  • Irgendwie hatte mich ja heute nochmal der Ehrgeiz gepackt.
    Ich wusste ja es fehlt einiges an Ressourcen an einem OpenWRT-Device, aber mein LinkIt Smart MT7688 hat 128MB Ram und einen MicroSD-Slot - da muss doch was zu machen sein....


    Als erstes habe ich meinem Device das aktuelle OpenWRT 19.04.7 verpasst.
    Dann brauchte ich fuer den gcc mehr internen Disk-Platz, den der MicroSD-Slot wird nicht automatisch eingebunden.
    Mehr Platz bekommt man, wenn man entweder einen USB-Stick oder hier bei mir die MicroSD-Card als /overlay einbindet/mountet.

    Eine Anleitung dazu gibt es auf:

    https://linuxconfig.org/how-to…torage-with-an-usb-device

    Anstatt sd1 bekommen man auf dem MT7688 mit der installierbaren Erweiterung

    kmod-sdhci-mt7620

    dann ein Device mmcblk0 und durch fdisk dann dort die Partition 1 (ext4) = mmcblk0p1


    Nach Anleitung habe ich die Partition angelegt, ext4-formatiert und die alten /overlay-Daten uebernommen/kopiert und den passenden mount-Eintrag in die /etc/config/fstab eingetragen (s. passende UUID beim Partition erstellen)


    Nach dem Reboot war dann genug Platz um gcc und make per opkg zu installieren ;)
    (musste wegen zu kleinem tmpfs das Paket ( gcc_7.4.0-5_mipsel_24kc.ipk ) per wget aus dem Internet holen direkt nach /overlay

    und dann dort per opkg install ./gcc_7.4.0-5_mipsel_24kc.ipk installieren)


    Zum Transfer des RunCPM-Sourcecode habe ich das Paket vsftpd-tls als FTP-Server installiert und den Sourcecode per FTP auf mein Home-Directory (ausgepackt) uebertragen.

    Beim ersten kompilier-Versuch stellte ich fest, dass OpenWRT als Paket zwar libreadline anbietet aber kein libreadline-dev :(


    Mir viel auf, dass readline.h nur angefordert wurde, wenn man mit LUA-Support kompilierte.... also habe ich alles zu LUA aus dem Makefile.posix entfernt.

    (und spaeter umbenannt/kopiert auf Makefile.openwrt)

    Nun ging der Compile ein Stueck weiter, meckerte dann aber beim "linken" die Optionen "-lncurses" und "-ldl" an :(

    Also die auch noch entfernt und somit schon die Hoffnungen stark schwinden sehen, dass noch was brauchbares rauskommt :(


    Aber ohne die Optionen bekam ich nur ein ausfuehrbares/kompilieretes RunCPM-File


    Dieses kopierte ich nun in ein frisches RunCPM-Directory und fuellte per FTP die Verzeichnise fuer die Laufwerke aus meiner funktionstuechtigen Arduino-DUE RunCPM-Version.

    (ohne diese Laufwerkverzeichnisse und die CCP-Files bekam ich vorher einen BDOS-Error - ich dachte eher an einen "missing CCP")


    Mit den Files im Verzeichnis startete ich nun die downstripped-RunCPM-Version und bekam doch mehr als ich erwartete :)


    Ich kann DIR aufrufen, Programme starten/beenden, Aus-/Eingaben klappen :)
    Ich weiss noch garnicht, was mir bis jetzt gross verloren gegangen ist durch weglassen der beiden "LDFLAGS" fuer den Linker...


    Anbei das Makefile(.openwrt) und 2 Terminal-Bilder.


    Zum Vergleich der Mandelbrot-Benchmark braucht auf dem 580Mhz MIPS-Prozessor nur 13 Sekunden gegen 40 auf dem ESP32
    bzw. ueber 1 Minute auf dem Arduino DUE.


  • Jetzt 2 OpenWrt-Versionen weiter (19.04.07 -> 22.03 -> 23.5.0) und jetzt mit GCC 12.3.0 habe ich die RunCPM-Version auch hier mal auf v6.1 gebracht.


    OpenWrt scheint sich gut zu entwickeln und die Software laeuft gefuehlt besser ;)


    Gut war, dass ich mir damalle eine gute Anleitung geschrieben habe, da bei den 128MB RAM noch etwas Swap-Space gebraucht wird und das Filesystem auf eine SD-Karte ewrweitert werden muss - da der interne Flash nicht fuer alle Software-Pakete langt, die ich installiert habe :)