Autor Wątek: Programowanie kart MMC  (Przeczytany 3685 razy)

Thompson

  • *
  • Wiadomości: 28
Programowanie kart MMC
« dnia: 2022.12.24, 18:45:07 »
Cześć,

Próbuję zgłębić zasady komunikacji z kartami MMC dla Spectrum. Chodzi mi o dosyć niski poziom, w szczególności protokół SPI wykorzystany w tych projektach.
Dokumentację protokołu SPI mam, dokumentację kart SD mam, niby wszystko jasne, ale... jak to zostało zrealizowane w ZX, domyślam się że było wiele rozwiązań, ale zapewne któreś stało się standardem (?). No i pytanie, jak tam zostało od strony programowej rozwiązane?

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Programowanie kart MMC
« Odpowiedź #1 dnia: 2022.12.24, 19:16:44 »
Standardem stało się DivMMC opracowane prze Mario Prato. Na githubie jest źródło „międzymordzia” między szyną ZX Spectrum a ŚPI na CPLD. Zobacz pod ten adres: https://github.com/mprato/DivMMC

A potem to just z górki, esxDOS.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Programowanie kart MMC
« Odpowiedź #2 dnia: 2022.12.24, 20:58:51 »
No i pytanie, jak tam zostało od strony programowej rozwiązane?
Nie ma zbyt wielu możliwości.
Dogadujesz się z kartą, przełączasz ją w wybrany tryb i odczytujesz/zapisujesz sektory które potrzebujesz. A co zrobisz z odczytanymi danymi to już inny problem ;)
Lektura obowiązkowa
Machines should work. People should think.

Thompson

  • *
  • Wiadomości: 28
Odp: Programowanie kart MMC
« Odpowiedź #3 dnia: 2022.12.27, 22:49:09 »
Dzięki za odpowiedzi.

Wiem, że Prato to obecnie standard dla rozwiązań symulacji (?) divMMC via FPGA/CPLD. Niestety, choć bukwy są znajome, to VHDL jest dla mnie cokolwiek nieczytelny i trudno coś z tego dla prostego wyrobnika w Z80 wydobyć. ExDos to już niemal pełny system operacyjny, a przynajmniej file system a la POSIX, a to mnie nie interesuje. Również szczebel niżej, to jest FAT16/32, jest świetnie udokumentowane, więc nie zawracam gitary o takie błahostki
.
Ciekawe zaczyna się niżej - sam protokół SPI (dzięki @Steev, tego nie znałem) i jeszcze niżej, timinigi wysyłki i odbioru komend sterujących SD. Część rozwiązań, które wygrzebałem bazowała na kilku portach, inne oparte tylko na dwóch (wybór urządzenia SPI i drugi port do odbioru i wysyłki). Potrzebne mi to do reverse engineerengu Spectrum Next i uzupełnienia dokumentacji technicznej tego komputerka. Tam w procesie komunikacji ze SPI uczestniczą porty E7h i EBh - pierwszy dokonuje selekcji urządzenia, drugi to generalna bramka in/out - wydaje mi się, że podobne rozwiązanie zaproponowali bracia Czesi, bo w jakieś dokumentacji ktoś się odwoływał do owych portów właśnie w kontekście MMC (niestety, bez istotnych szczegółów). Podaje adresy portów w nadziei, że komuś coś się przypomni, gdy sam coś kiedyś kodził.
Nie przypuszczam by twórcy ZX Next wymyślili od zera ten kawałek HW (bo znalazłem kilka rozwiązań dla eksperymentalnych homebrew komputerków opartych na Z80 (ale nie Speccy), ale raczej jako ProofOfConcept), choćby dla kompatybilności, co najwyżej dostosowali SW.  Niestety, ta część Neksta nie jest open source, a twórcy nie odpowiadają na pytania (co przy closed source nie dziwi), więc pozostaje szukanie po omacku i analizowanie potencjalnych źródeł.

VELESOFT

  • ****
  • Wiadomości: 272
Odp: Programowanie kart MMC
« Odpowiedź #4 dnia: 2023.11.17, 20:18:59 »