eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProcesor NMOS i karta CFRe: Procesor NMOS i karta CF
  • Data: 2024-05-22 18:21:21
    Temat: Re: Procesor NMOS i karta CF
    Od: "J.F" <j...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Wed, 22 May 2024 10:27:16 +0200, Atlantis wrote:
    > Parę lat temu zacząłem budować prosty komputerek na polskim
    > mikroprocesorze MCY7880. Zaczęło się od migania diodą i przesyłania
    > znaków przez UART, ale na chwilę obecną mam już właściwie kompletny
    > system z klawiaturą i monitorem, zdolny do uruchamiania Tiny Basica z
    > pamięci EPROM. Docelowo jednak moim celem od początku było uruchomienie
    > na tym CP/M 2.2 i ładowanie programów z dysku (w tej roli podpięta
    > bezpośrednio do magistrali karta CF, pracująca w trybie 8bit).

    Hm, o ile pamiętam, to CP/M miał sektory 128 Bajtów, a karta 512.

    > Podczas pandemii prace nad projektem nieco spowolniły, ale ostatnio
    > powróciłem do niego. Na chwilę obecną mam już działający bootloader,
    > który pozwala na załadowanie programu do pamięci RAM. Działa to mniej
    > więcej w następujący sposób:
    >
    > 1. Program podejmuje próbę zainicjowania karty CF, pobiera strukturę z
    > informacjami i wyświetla na ekranie jej nazwę.
    > 2. Program odczytuje pierwszy sektor karty CF i sprawdza, czy określone
    > bajty mają wartości, których można się spodziewać po MBR w stylu MS-DOS.
    > 3. Program odczytuje i wyświetla na ekranie tablicę partycji (adresy i
    > rozmiary poszczególnych partycji).
    > 4. Program wyświetla menu, pozwalając użytkownikowi wybrać bootowanie z
    > karty albo uruchomienie Tiny Basica z EPROM-u.
    > 5. Jeśli użytkownik wybierze bootowanie z CF, program sprawdza czy
    > pierwsza partycja ma odpowiedni rozmiar. Jeśli tak, pobiera jej adres i
    > ładuje pierwszych 16kB do RAM-u (zaczynając od adresu 0x0000).
    > 6. Program wykonuje skok bezwarunkowy pod adres 0x0000.
    > 7. Jeśli karta CF nie zostanie poprawnie zainicjowana lub nie powiedzie
    > się któryś z wspomnianych testów, uruchamiany jest od razu TinyBasic.
    >
    > Takie podejście pozwala mi dość łatwo wgrywać na kartę testowe programy
    > - wystarczy wrzucić plik bin za pomocą dd:
    >
    > dd if=source.bin of=/dev/sdx1 bs=512

    Na linuxie to robisz?
    Hm, nie jestem pewien, czy tak można, w pierwszym sektorze partycji
    powinny być określone dane w DOS/Windows. Jeli ich nie ma ... ciekawe,
    co zwariuje.

    > Podczas wstępnych testów miałem problem z niektórymi modelami karty CF.
    > O ile struktura z nazwą odczytywała się zawsze poprawnie, to karta użyta
    > początkowo (wszystkie egzemplarze tego samego modelu, bodajże SanDisk
    > 32MB) dawała dziwne rezultaty podczas próby odczytu MBR-a/tablicy
    > partycji. Co kilka prób pojawiały się przekłamania wartości i jakieś
    > dziwne przesunięcie o kilka bajtów w buforze. Kolejna karta (jakaś
    > przemysłowa WD 256MB) działa już o wiele lepiej i to właśnie jej używam
    > obecnie podczas testów.

    Do sprawdzenia - nie powinno być takich cudów.
    A jesli są, to gdzieś jest błąd :-)

    > O ile MBR jak dotąd ładuje się zawsze poprawnie, to jednak ze dwa razy
    > rzucił mi się w oczy dziwny błąd. Jak wspominałem, program testowy to
    > krótka pętla printująca z opóźnieniem wartość hex jednego bajtu
    > (konkretnie 0xFA). Wykonywany kod wykorzystuje gotowe procedury,
    > zapisane w pamięci EPROM, tak wiec składa się on zaledwie z kilku
    > wywołań CALL, poprzedzonych ładowaniem wartości do rejestrów. Testując
    > program od kilku dni już dwa razy zauważyłem sytuację, kiedy wykonywał
    > się on znacznie szybciej - zupełnie jakby przekłamana została wartość
    > odpowiadająca za czas trwania pętli opóźniającej. Trochę mnie to dziwi,
    > bo byłoby to dość specyficzne przekłamanie, które pojawiło się dwa razy.
    >
    > Trochę mnie to jednak niepokoi, bo jeśli problemy pojawiają się przy
    > ładowaniu tak krótkiego programu, to tym bardziej mogą pojawić się przy
    > próbie załadowania całego CP/M (gdy już przygotuję niskopoziomowe
    > procedury I/O).
    >
    > Zacząłem trochę czytać i analizować inne podobne projekty retro i widzę,
    > że w wielu z ich przed kartą CF stosowane są bufory 74HC245. Ludzie
    > wspominają też o problemach i konieczności dobierania kompatybilnej
    > karty w przypadku, gdy tego bufora nie ma. W dodatku ja w tej chwili
    > pracują na prototypie zbudowanym na płytce uniwersalnej (przy pomocy
    > dużej ilości kynaru), gdzie karta jest umieszczona na osobnym module,
    > podpiętym za pomocą taśmy (jednocześnie powstaje nowsza wersja na
    > trawionym PCB).
    >
    > Myślicie, że jest szansa na dobranie karty, która będzie poprawnie
    > pracowała ze starym procesorem NMOS (tym bardziej, że raz dobrana karta
    > zostanie tam na stałe i nie będzie podmieniana) czy jednak nieuniknione
    > będzie zmodyfikowanie projektu i dodanie 74HC245?

    Hm, a duży problem dodać?
    Bo jeśli to ma rozwiązać problemy ... to dodać od razu :-)

    J.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: