Adatátvitel modern, USB-s számítógép és Commodore floppy-meghajtók között

kami911 képe

A Commodore gépcsalád floppy-meghajtójának használata érdekes dimenziókat nyit azok számára, akik az internetről elérhető retró adattömeget elérhetővé szeretnék tenni a régi Commodor-uk, vagy éppen Primo-juk számára. Számos megoldás létezik arra, soros vagy párhuzamos porttal rendelkező számítógépen adatokat tudjanak írni, vagy olvasni a Commodore soros porttal rendelkező floppy meghajtók segítségével. Szerencsére korunk univerzális soros portja, az USB-vel szerelt számítógépekkel is megoldható a feladat. Ennek ismertetésére vállalkozik ez az írás. Egy nagyon rugalmas megoldás a XUM1541-es kábel, ami könnyedén elkészíthető és megfelelő teljesítményt és kompatibilitást nyújt a Commodore floppy-meghajtók és az USB porttal rendelkező számítógépek között.

Tehát a XUM1541-es kábel, amelyet USB portra köthető, és nem kell megküzdeni az ősi soros port beszerzésével, amely most már csak ritkán van jelen a korszerű számítógépekben. A XUM1541 kábel, amely egy Arduino ProMicro kontroller alapú megoldás, és elkészíthető micro USB és USB-C csatlakozójú változatban is. A másolást, formázást, eszközkezelést az OpenCBM programcsomaggal lehet majd elvégezni, amely letölthető és buildelhető forráskódként is, de szerencsére elérhető Debian csomagként is egy külső forrásból.

A mikrokontroller a Linux alapú számítógéphez USB-n csatlakoztatva az alábbi módon jelenik meg a Linux kernel naplófájljában:

[h máj 1 09:17:40 2024] usb 3-3: new full-speed USB device number 2 using xhci_hcd
[h máj 1 09:17:40 2024] usb 3-3: New USB device found, idVendor=2341, idProduct=8036, bcdDevice= 1.00
[h máj 1 09:17:40 2024] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[h máj 1 09:17:40 2024] usb 3-3: Product: Arduino Leonardo
[h máj 1 09:17:40 2024] usb 3-3: Manufacturer: Arduino LLC
[h máj 1 09:17:40 2024] cdc_acm 3-3:1.0: ttyACM0: USB ACM device
[h máj 1 09:17:40 2024] usbcore: registered new interface driver cdc_acm
[h máj 1 09:17:40 2024] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[h máj 1 09:17:40 2024] hid: raw HID events driver (C) Jiri Kosina
[h máj 1 09:17:40 2024] usbcore: registered new interface driver usbhid
[h máj 1 09:17:40 2024] usbhid: USB HID core driver
[h máj 1 09:17:40 2024] input: Arduino LLC Arduino Leonardo Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.2/0003:2341:8036.0001/input/input23
[h máj 1 09:17:40 2024] input: Arduino LLC Arduino Leonardo Keyboard as /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.2/0003:2341:8036.0001/input/input24
[h máj 1 09:17:40 2024] hid-generic 0003:2341:8036.0001: input,hidraw0: USB HID v1.01 Mouse [Arduino LLC Arduino Leonardo] on usb-0000:00:14.0-3/input2

Tehát ez egy ttyACM0 eszköz lett a rendszerben, ellenőrizze ezt a sorosvonali eszközök felől is:

ls -l /dev/serial/by-id/

Ami hatására tényleg látható,hogy az Arduino ProMicro (Leonardo) eszköz elérhető a ttyACM0 eszközként a Linux alapú rendszerben:

lrwxrwxrwx 1 root root 13 máj 6 12:55 usb-Arduino_LLC_Arduino_Leonardo-if00 -> ../../ttyACM0

Miután ellenőrizte a mikrokontroller készülék elérhetőségé, nekikezdhet az eszköz új, XUM1541-es firmware-rel történő felprogramozásának.

A felprogramozás, azaz a flash-elés feladatát az AVRDUDE nevű programmal lehet elvégezni, ennek 7.3-as verzióját használtam. Szerencsére elérhető Linux-ra is:

Szükség lesz még a XUM1541-es firmware programra, amely Intel Hex-file szöveges fájl formátumban és több verzióban érhető el:

Az egyszerűség kedvéért mindkettőt elérhetővé teszem zip-elve erről az oldalról is:

Az AVRDUDE letöltés és kicsomagolása után töltse le a firmware programot is és amennyiben zip-fájlformátumban töltötte le tömörítse ki, és tegye a AVRDUDE program mellé, majd nyisson két terminál ablakot. Ez egyik terminál ablakban nyissa meg a kicsomagolt fájl mappáját, és tegye futtathatóvá a avrdude alkalmazást. A felprogramozás elvégzéséhez az Arduino ProMicro kontrollert programozó üzemmódba – vagy ahogy a leírásában hivatkoznak rá – bootloader üzemmódba kell kapcsolni.

Tapasztalataim a bootloadrer üzemmóddal kapcsolatban:

  • Linux használata esetén, ha az eszköz adott soros vonali eszközként elérhető (például: ttyACM0), akkor a programozást is ugyanazon az eszközön tudtam elvégezni.
  • Windows használata esetén, ha az eszköz egy adott számú soros porton volt elérhető, akkor Windows alatt a programozás az eggyel nagyobb számon végezhető el. Például: az eszköz COM8 porton jelentkezik be, akkor COM9 porton lehet felprogramozni.

Két módszert találtam az eszköz resetelésére és bootloader üzemmódba kapcsolásához, amely üzemmódban 8 másodpercig várakozik az eszköz a felprogramozásra:

  1. Az RST és a GND jelölésű érintkezők kétszer történő gyors rövidre zárása esetén az eszköz resetelve lesz és bootloader üzemmódba kapcsol. 
  2. A portsebesség 1200 baudra állításával is lehet kezdeményezni eszköz resetelését lesz és bootloader üzemmódba kapcsolását. 

Én ezt a második megoldást tudtam magabiztosan használni a felprogramozás során. Ezért van szükség két terminál ablakban, mert az egyikben felprogramozási üzemmódba kell kapcsolni a mikrokontrollert, a másikban pedig a felprogramozási feladat lesz elvégezve.

Az egyik megnyitott terminál ablakba másolja be a következő sort, de még ne nyomja le az enter billentyűt:

sudo ./avrdude -p m32u4 -c avr109 -P /dev/ttyACM0 -U flash:w:xum1541-PROMICRO-v07.hex

Ebben a parancsban a /dev/ttyACM0 eszköz és a xum1541-PROMICRO-v07.hex fájl a változó, függően attól, hogy melyik eszközként ismerte fel a Linux a mikrokontrollert és melyik firmware fájlt tervezi az eszközre írni.

A másik megnyitott terminál ablakba másolja be a következő sort, és nyomja le az Enter billentyűt:

sudo stty -F /dev/ttyACM0 speed 1200

Amire ez a válasz jön:

9600

Majd futtassa le ismét:

sudo stty -F /dev/ttyACM0 speed 1200

Amire ez a válasz jön:

9600

Majd futtassa le ismét:

sudo stty -F /dev/ttyACM0 speed 1200

Amire ez a válasz jön:

1200

Majd futtassa le ismét:

sudo stty -F /dev/ttyACM0 speed 1200

Amire ez a válasz jön:

19200

Majd futtassa le ismét:

sudo stty -F /dev/ttyACM0 speed 1200

Amire ez a válasz jön:

1200

Mikor megérkezik a második 1200 baud-os válasz, akkor a másik terminálablakban a már bemásolt sornál üsse le az enter billentyűt:

sudo ./avrdude -p m32u4 -c avr109 -P /dev/ttyACM0 -U flash:w:xum1541-PROMICRO-v07.hex

És ezzel elindul az Arduino Promicro eszköz felprogramozása:

avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9587 (probably m32u4)
avrdude: Note: flash memory has been specified, an erase cycle will be performed.
To disable this feature, specify the -D option.
avrdude: erasing chip

avrdude: processing -U flash:w:xum1541-PROMICRO-v07.hex:i
avrdude: reading input file xum1541-PROMICRO-v07.hex for flash
with 8768 bytes in 1 section within [0, 0x223f]
using 69 pages and 64 pad bytes
avrdude: writing 8768 bytes flash ...
Writing | ################################################## | 100% 0.68 s
avrdude: 8768 bytes of flash written
avrdude: verifying flash memory against xum1541-PROMICRO-v07.hex
Reading | ################################################## | 100% 0.07 s
avrdude: 8768 bytes of flash verified

avrdude done. Thank you.

Windows-sal futó számítógép esetén az alábbi programmal lehet a mikrokontroller felprogramozást elvégezni:

avrdude -p m32u4 -c avr109 -P comXX -U flash:w:xum1541-PROMICRO-v07.hex

Ami a com9-es port esetében a következő parancssorból kiadandó parancsot jelenti:

avrdude -p m32u4 -c avr109 -P com9 -U flash:w:xum1541-PROMICRO-v07.hex

A sikeres felprogramozás után az eszköz USB kapcsolatát bontva majd az USB-kábel újboli csatlakoztatásakor, már látszik, hogy új eszköz működésre kész és ún néven lett elérhető: xum1541 floppy adapter (PROMICRO)

A Linux kernel üzenetei között:

dmesg -T

így látszik:

[h máj 1 09:29:53 2024] usb 3-3: new full-speed USB device number 78 using xhci_hcd
[h máj 1 09:29:53 2024] usb 3-3: New USB device found, idVendor=16d0, idProduct=0504, bcdDevice= 5.07
[h máj 1 09:29:53 2024] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[h máj 1 09:29:53 2024] usb 3-3: Product: xum1541 floppy adapter (PROMICRO)
[h máj 1 09:29:53 2024] usb 3-3: Manufacturer: Nate Lawson and OpenCBM team
[h máj 1 09:29:53 2024] usb 3-3: SerialNumber: 000

Nincs más hátra, mint a Commodore floppy-meghajtó kábelkivezetés elkészítése. A soros kábel kivezetésit kell összekötni a kontroller megfelelő sorosnak jelölt kimeneteivel:

Amennyiben ez kész van, a kábel kész, ki lehet próbálni a Commodore floppy-meghajtók kezelése modern számítógépekkel könyvlapon leírtnak megfelelően.

Hozzászólások

kami911 képe

Nagyon jó leírás

#1 Köszi @simonszoft

Még pár helyen ki kell egészítenem, s az opencbm telepítési leírását is mellé kellene tennem. Kicsit bővítettem a Primo részt,  hátha hasznos lesz nekem és másnak is a jövőben...

Nélküled nem sikerült volna, köszönöm a segítséget!

Értékelés: 

5
Átlag: 5 (1 szavazat)
IG képe

Kérdés

Nincs elírás itt véletlenül?

" A másik megnyitott terminál ablakba másolja be a következő sort, de még ne üsse le az enter billentyűt:"

sudo stty -F /dev/ttyACM0 speed 1200

Itt le kellene ütni az enter billentyűt nem, hogy megkapjuk a 9600-as értéket?

Értékelés: 

0
Még nincs értékelve
kami911 képe

Kérdés

#3 igaz igaz, javítva!

Értékelés: 

5
Átlag: 5 (1 szavazat)