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:
- a 0.8 verzió (xum1541-PROMICRO-v08.hex) csak a legújabb opencbm-mel működik,
- a 0.7-es verzió (xum1541-PROMICRO-v07.hex) megbízhatóan használható – a példákban is ezt a verziót használom.
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:
- 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.
- 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 üsse 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, de még ne üsse 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.