Obsah

USARTShell


Funkce miniUSB konektoru

     Další komunikační rozhraní je USARTShell, který slouží ke komunikaci s Unicard pomocí sériové linky RS-232 emulované přes miniUSB konektor. Komunikační kanál využívající miniUSB konektor je schopný pracovat ve dvou režimech:

     Nastavení režimu komunikace se řídí pomocí dalšího rozhraní MZFREPO nebo jedním z CFG souborů. Přesný popis CFG souborů včetně toho pro nastavení režimu práce miniUSB konektoru je zde Emulované periferie.


Instalace ovladačů

     Nejdříve stáhneme a nainstalujeme ovladač virtuálního portu STM32 Virtual COM port driver verze 1.3.1. Podle typu operačního systému spustíme buď VCP_V1.3.1_Setup.exe nebo VCP_V1.3.1_Setup_x64.exe.

  • STMicroelectronics Virtual COM Port (COM11)

         Po správné instalaci ovladačů by se Vám ve správci zařízení měl objevit virtuální COM port. Číslo portu se samozřejmě může na různých počítačích lišit.
  • Vyvolání nabídky s volbou „Vlastnosti“

         Pokud máme správně nainstalovaný virtuální COM port, musíme ještě nastavit komunikační parametry. Stiskem pravého tlačítka myši na řádku s virtuálním COM portem vyvoláme nabídku a vybereme volbu „Vlastnosti“.
  • Nastavení parametrů virtuálního COM portu

         Zde nastavíme komunikační parametry 115200, 8, N, 1, řízení toku je pro začátek lepší nastavit na žádné, při správné funkci ho můžeme nastavit na hardwarové.

Upozornění

Poslední verze ovladačů nefunguje. Pro správnou funkci je proto nezbytné nainstalovat starší verzi ovladačů 1.3.1


UniUSARTShell

     Pro komunikaci s rozhraním USARTShell slouží program UniUSARTShell spouštěný z příkazového řádku. Pokud spustíme program bez parametrů, vypíše nápovědu - seznam všech dostupných příkazů pro komunikaci s USARTShellem.

c:\>UniUSARTShell
Unicard USART shell                                      PC build 2018-08-04.21


Usage:
        UniUSARTshell <device> <command> [<param1>] [<param2>]

Available commands are: date, remount, filelist, readdir, mkdir, unlink,
                        open, new, read, boot, state, laninfo, rev, gdg.


c:\>

     Jako <device> je třeba zadat výše uvedeným způsobem nainstalovaný virtuální COM port (např. COM11). Podporované příkazy <command> jsou:


Příkazy bez parametrů:

BOOT

Provede reset počítače.

c:\>UniUSARTShell COM11 boot
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending BOOT...
        BOOT
c:\>

REV

Zobrazí MZ_ID, verzi a subverzi aktuálního firmware, jak jsou uvedené v hlavičce firmware viz. kapitola Popis hlavičky firmware.

MZ-800

c:\>UniUSARTShell COM11 rev
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending REV...
        REV
        OK:REV MZ800 v0.18

c:\>

MZ-1500

c:\>UniUSARTShell COM11 rev
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending REV...
        REV
        OK:REV MZ1500 v0.18

c:\>

GDG

Zobrazí obsah display mode registru.

MZ-800

c:\>UniUSARTShell COM11 gdg
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending GDG...
        GDG
        OK:GDG MZ_mode=1, MZ_graphic_mode=6

c:\>

MZ-800 v módu MZ-700

c:\>UniUSARTShell COM11 gdg
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending GDG...
        GDG
        OK:GDG MZ_mode=0, MZ_graphic_mode=8

c:\>

MZ-1500

c:\>UniUSARTShell COM11 gdg
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending GDG...
        GDG
        OK:GDG MZ_mode=0, MZ_graphic_mode=8

c:\>

STATE

První číslo udává zachycená data z adresové sběrnice - v příkladu (002C), druhé číslo data z datové sběrnice (3A). IN a OUT jsou obrazy interních registrů ARM procesoru v Unicard.

MZ-800

c:\>UniUSARTShell COM11 state
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending STATE...
        STATE
        OK:STATE (002C)=3A, IN=FA, OUT=0D

c:\>

MZ-1500

c:\>UniUSARTShell COM11 state
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending STATE...
        STATE
        OK:STATE (332A)=3A, IN=52, OUT=0D

c:\>

LANINFO

Vypíše informace o aktuálním nastavení parametrů pro konfiguraci sítě.

bez připojeného kabelu

c:\>UniUSARTShell COM11 laninfo
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending LANINFO...
        LANINFO
        KSZ8031: OK
        PHY_ID:  00221560
        LINK:    DOWN
        HWADDR:  00-1C-EE-1A-04-6F
        IPCFG:   STATIC
        IPADDR:  192.168.1.111
        NETMASK: 255.255.255.0
        GATEWAY: 192.168.1.20
        OK:LANINFO_DONE

c:\>

s připojeným kabelem

c:\>UniUSARTShell COM11 laninfo
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending LANINFO...
        LANINFO
        KSZ8031: OK
        PHY_ID:  00221560
        LINK:    UP
        HWADDR:  00-1C-EE-1A-04-6F
        IPCFG:   STATIC
        IPADDR:  192.168.1.111
        NETMASK: 255.255.255.0
        GATEWAY: 192.168.1.20
        OK:LANINFO_DONE

c:\>

Příkazy s jedním parametrem:

MKDIR <path>

Vytvoří adresář <path> a zobrazí výsledek operace:

  • OK:MKDIR <path> adresář byl vytvořen
  • ERR:MKDIR <path> adresář se nepodařilo vytvořit (např. pokud již existuje)

neexistující adresář jako parametr

c:\>UniUSARTShell COM11 mkdir \unicard\TESTMKDIR
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending MKDIR...
        MKDIR \unicard\TESTMKDIR
        OK:MKDIR \unicard\TESTMKDIR

c:\>

existující adresář jako parametr

c:\>UniUSARTShell COM11 mkdir \unicard\TESTMKDIR
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending MKDIR...
        MKDIR \unicard\TESTMKDIR
        ERR:MKDIR \unicard\TESTMKDIR

c:\>
  • Před vytvořením adresáře TESTMKDIR
  • Po vytvoření adresáře TESTMKDIR

Smaže soubor nebo adresář <filepath> a zobrazí výsledek operace:

  • OK:UNLINK <filepath> soubor nebo adresář byl smazán
  • ERR:UNLINK <filepath> soubor nebo adresář se nepodařilo smazat (např. pokud adresář nebo soubor neexistuje)

existující adresář jako parametr

c:\>UniUSARTShell COM11 unlink /unicard/TESTMKDIR
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending UNLINK...
        UNLINK /unicard/TESTMKDIR
        OK:UNLINK /unicard/TESTMKDIR

c:\>

neexistující adresář jako parametr

c:\>UniUSARTShell COM11 unlink /unicard/TESTMKDIR
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending UNLINK...
        UNLINK /unicard/TESTMKDIR
        ERR:UNLINK /unicard/TESTMKDIR

c:\>
  • Před smazáním adresáře TESTMKDIR
  • Po smazání adresáře TESTMKDIR

REMOUNT <0..3 >

Odpojí příslušnou FD<0..3> ([A]:..[D]:) mechaniku a zavolá remount, který se provede standardně podle obsahu CFG souboru /unicard/fd<0..3>.cfg.

pokus o REMOUNT FD0 ([A]:) mechaniky bez konfiguračního souboru fd0.cfg

c:\>UniUSARTShell COM11 remount 0
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending REMOUNT...
        REMOUNT 0
        ERR:REMOUNT 0

c:\>

nakopírování konfiguračního souboru fd0.cfg s odkazem na obraz diskety Lemmings.dsk na Unicard do adresáře \unicard\

c:\>UniUSARTShell COM11 new fd0.cfg \unicard\fd0.cfg
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending New...
        NEW \unicard\fd0.cfg
        OK:NEW \unicard\fd0.cfg
Sending FSIZE: 0x0000000e
        OK:SIZE 0x0000000e
Sending Data.
        OK:CLOSE 0xd2b7a6fb

*************************
* Size:            14 B *
* Time:          0.10 s *
* Speed:     137.25 Bps *
*************************


c:\>

REMOUNT FD0 ([A]:) mechaniky na základě nového konfiguračního souboru fd0.cfg

c:\>UniUSARTShell COM11 remount 0
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending REMOUNT...
        REMOUNT 0
        OK:REMOUNT 0

c:\>
  • Na Unicard není konfigurační soubor a FD0 ([A]:) mechanika není připojená.
  • Po nahrání konfiguračního souboru fd0.cfg do adresáře \unicard\ na Unicard a provedení příkazu REMOUNT dojde k připojení mechaniky FD0 ([A]:) Lemmings.dsk

Příkazy s dvěma parametry:

READ <src_file> <dst_file>

Přenese soubor <src_file> (název souboru může obsahovat cestu) z SD karty v Unicard na PC do souboru <dst_file> (název souboru může obsahovat cestu). Otevře soubor na SD kartě pro čtení, pošle v binárním tvaru jako DWORD jeho velikost a za velikostí obsah souboru a výsledek operace:

  • OK:CLOSE 0x???????? úspěšné přenesení a uzavření souboru se zobrazením kontrolního součtu CRC32
  • ERR:READ <src_file> při čtení souboru došlo k chybě

načtení souboru

c:\>UniUSARTShell COM11 read \unicard\mzfloader.cfg mzfloader.cfg
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending Read...
        READ \unicard\mzfloader.cfg
        OK:READ \unicard\mzfloader.cfg
Receiving FSIZE: 0x00000015
Receiving Data
        OK:CLOSE 0x0311000b

*************************
* Size:            21 B *
* Time:          0.00 s *
* Speed:       1.#J Bps *
*************************


c:\>

chyba při čtení souboru

c:\>UniUSARTShell COM11 read qd.cfg qd.cfg
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending Read...
        READ qd.cfg
Error USARTshell->READ: ERR:READ qd.cfg

c:\>

NEW <src_file> <dst_file>

Přenese soubor <src_file> (názvy souborů mohou obsahovat cestu) z PC na SD kartu v Unicard <dst_file> - po úspěšném otevření nového souboru pro zápis <dst_file> přejde vstup USARTShellu do binárního režimu, ve kterém očekává jako DWORD velikost souboru a za velikostí jeho obsah. Po ukončení činnosti oznámí výsledek operace:

  • OK:NEW <dst_file> soubor byl úspěšně přenesen
  • ERR:WRITE při zápisu došlo k chybě
  • ERR:DATA_TIMEOUT déle než 2 sekundy nepřišla žádná data, Unicard soubor uzavře a přejde zpět do příkazového režimu
  • ERR:NEW <dst_file> soubor již existuje


Příkaz NEW lze použít pouze pro založení nového souboru, v případe pokusu o přepsání již existujícího souboru zahlásí chybu.

soubor byl úspěšně přenesen

c:\>UniUSARTShell COM11 new Flappy_A.mzq Flappy_A.mzq
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending New...
        NEW Flappy_A.mzq
        OK:NEW Flappy_A.mzq
Sending FSIZE: 0x0000f01f
        OK:SIZE 0x0000f01f
Sending Data....................................................................
.....................................................
        OK:CLOSE 0xc7138ef3

*************************
* Size:         61471 B *
* Time:         12.33 s *
* Speed:    4987.10 Bps *
*************************


c:\>

pokus o přepsání již existujícího souboru

c:\>UniUSARTShell COM11 new unicard800.app unicard.app
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending New...
        NEW unicard.app
Error USARTshell->OPEN/NEW: ERR:NEW unicard.app

c:\>

pokus o přenos neexistujícího souboru

c:\>UniUSARTShell COM11 new CosmicCruiser3.mzt CosmicCruiser3.mzt
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Could not open src file: No such file or directory

c:\>
  • Před nakopírováním nového souboru mgr1500.mzf
  • Po nakopírování nového souboru mgr1500.mzf

OPEN <src_file> <dst_file>

Příkaz funguje stejně, jako příkaz NEW s tím rozdílem, že přenese soubor <src_file> i pokud cílový soubor <dst_file> existuje a přepíše jeho obsah. Po ukončení činnosti oznámí výsledek operace:

  • OK:OPEN <dst_file> soubor byl úspěšně přenesen
  • ERR:WRITE při zápisu došlo k chybě
  • ERR:DATA_TIMEOUT déle než 2 sekundy nepřišla žádná data, Unicard soubor uzavře a přejde zpět do příkazového režimu
c:\>UniUSARTShell COM11 open mgr1500.mzf \unicard\mgr1500.mzf
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending Open...
        OPEN \unicard\mgr1500.mzf
        OK:OPEN \unicard\mgr1500.mzf
Sending FSIZE: 0x00001be2
        OK:SIZE 0x00001be2
Sending Data..............
        OK:CLOSE 0xb682acd8

*************************
* Size:          7138 B *
* Time:          1.45 s *
* Speed:    4936.38 Bps *
*************************


c:\>
  • Před přepsáním souboru unicard.app s velikostí 190720b souborem se stejným názvem a velkostí 198988b
  • Po přepsání souboru unicard.app s velikostí 190720b souborem se stejným názvem a velkostí 198988b

Příkazy s proměnným počtem parametrů:

FILELIST (volitelně <path>)

Vypíše obsah adresáře <path>, pokud je spuštěný bez parametru <path>, dosadí si za něj „\“ (root SD karty) a zobrazí výsledek operace:

  • OK:FILELIST <path> adresář byl úspěšně otevřen, následuje seznam souborů a na konci seznamu souborů OK:FILELIST_DONE
  • ERR:FILELIST <path> adresář se nepodařilo otevřít (např. pokud adresář neexistuje)
  • ERR:READDIR při načítání jednotlivých položek adresáře došlo k chybě

bez parametru

c:\>UniUSARTShell COM11 filelist
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending FILELIST...
        FILELIST \
        OK:FILELIST \

        TESTMKDIR/
        unicard/
        mgr800.mzf                             8462
        unicard.app                          190720

        OK:FILELIST_DONE

c:\>

existující adresář jako parametr

c:\>UniUSARTShell COM11 filelist \unicard
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending FILELIST...
        FILELIST \unicard
        OK:FILELIST \unicard

        mzfloader.cfg                            21
        QDisk-BASIC800.mzq                    61471
        mgr800.mzf                             8462
        ramdisc_sromloader.mzr              1048576
        ramdisc1.mzr                        1048576
        mzfloader1.mzq                        52868
        qd.cfg                                   31
        ramdisc.cfg                              21
        network.cfg                              41
        mz1r23.rom                           131072
        mz1r24.rom                           262144
        READDIRTEST1/
        READDIRTEST2/
        READDIRTEST3/

        OK:FILELIST_DONE

c:\>

neexistující adresář jako parametr

c:\>UniUSARTShell COM11 filelist wrongdir
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending FILELIST...
        FILELIST wrongdir
Error USARTshell->FILELIST: ERR:FILELIST wrongdir

c:\>

bez parametru (root) s chybou čtení

c:\>UniUSARTShell COM11 filelist
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending FILELIST...
        FILELIST \
        OK:FILELIST \

        TESTMKDIR/
Error USARTshell->FILELIST1: ERR:READDIR

c:\>

READDIR (volitelně <path>)

Vypíše obsah adresáře <path> v rozšířeném formátu. Pokud je spuštěný bez parametru <path>, dosadí si za něj „\“ (root SD karty) a zobrazí výsledek operace:

  • OK:READDIR <path> adresář byl úspěšně otevřen, následuje seznam souborů a na konci seznamu souborů OK:READDIR_DONE
  • ERR:READDIR <path> adresář se nepodařilo otevřít (např. pokud adresář neexistuje)
  • ERR:READDIR při načítání jednotlivých položek adresáře došlo k chybě

bez parametru

c:\>UniUSARTShell COM11 readdir
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending READDIR...
        READDIR \
        OK:READDIR \

[DIR]            TESTMKDIR                                             01-01-2017  00:00:00
[DIR]            unicard                                               11-13-2017  21:28:26
[ARC]            mgr800.mzf                               8.26 kB      11-02-2018  12:42:38
[ARC]            unicard.app                            122.25 kB      29-15-2017  22:11:08

        OK:READDIR_DONE

c:\>

existující adresář jako parametr

c:\>UniUSARTShell COM11 readdir \unicard
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending READDIR...
        READDIR \unicard
        OK:READDIR \unicard

[ARC]            mzfloader.cfg                              21  B      11-13-2017  21:30:10
[ARC]            QDisk-BASIC800.mzq                    4096.00 MB      04-01-2018  17:01:02
[ARC]            mgr800.mzf                               8.26 kB      11-02-2018  13:42:38
[ARC]            ramdisc_sromloader.mzr                   1.00 MB      27-08-2017  00:58:28
[ARC]            ramdisc1.mzr                             1.00 MB      27-08-2017  00:58:28
[ARC]            mzfloader1.mzq                        4095.99 MB      24-14-2016  23:39:16
[ARC]            qd.cfg                                     31  B      13-13-2017  10:09:26
[ARC]            ramdisc.cfg                                21  B      13-13-2017  10:10:02
[ARC]            network.cfg                                41  B      18-15-2017  22:19:22
[ARC]            mz1r23.rom                             128.00 kB      30-04-2014  15:36:34
[ARC]            mz1r24.rom                             256.00 kB      09-02-2003  15:26:56
[DIR]            READDIRTEST1                                          01-01-2017  00:00:00
[DIR]            READDIRTEST2                                          01-01-2017  00:00:00
[DIR]            READDIRTEST3                                          01-01-2017  00:00:00

        OK:READDIR_DONE

c:\>

neexistující adresář jako parametr

c:\>UniUSARTShell COM11 readdir wrongdir
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending READDIR...
        READDIR wrongdir
Error USARTshell->READDIR: ERR:READDIR wrongdir

c:\>

bez parametru (root) s chybou čtení

c:\>UniUSARTShell COM11 readdir
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending READDIR...
        READDIR \
        OK:READDIR \

[DIR]            TESTMKDIR                                             01-01-2017  00:00:00
Error USARTshell->FILELIST1: ERR:READDIR

c:\>

DATE (volitelně <rrrr-mm-dd hh:mm:ss>)

Pokud se spustí bez parametru, vypíše aktuální datum a čas nastavený v Unicard. Při spuštění s parametrem ve tvaru <rrrr-mm-dd hh:mm:ss> nastaví v Unicard datum a čas na uvedené hodnoty. Při zadání parametru v nesprávném tvaru se vypíše chyba se zobrazením správného formátu parametru.

bez parametru

c:\>UniUSARTShell COM11 date
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending DATE...
        DATE
        OK:DATE 2018-08-03 13:48:51

c:\>

správný tvar parametru

c:\>UniUSARTShell COM11 date 2018-08-03 13:47:00
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET
Sending DATE...
        DATE 2018-08-03 13:47:00
        OK:DATE 2018-08-03 13:47:00

c:\>

chybný tvar parametru

c:\>UniUSARTShell COM11 date wrongdate
Unicard USART shell                                      PC build 2018-07-22.20
Sending Reset...
        OK:RESET

Error, usage: USARTshell <device> date
              USARTshell <device> date YYYY-MM-DD HH:MM:SS

c:\>