Elektroda.pl
Elektroda.pl
X
Oscyloskop cyfrowy Siglent SDS1104X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wskrześ starego peceta jako Hosta do eksperymentów :)

PeterBernard314 22 Kwi 2008 19:40 22093 51
  • Wskrześ starego peceta jako Hosta do eksperymentów :)

    Pokrótce przedstawię pomysł na wykorzystanie przestarzałych komputerów PC, których jak podejrzewam, podobnie do mnie wielu maniaków elektroniki po prostu nie chce wyrzucić.

    Komputer pracujący pod DOS-em, umożliwia dostęp do pełnych zasobów sprzętowych bez żadnej kontroli systemu operacyjnego, toteż aż korci aby wykorzystać taką platformę do sterowania różnych peryferii. Co bardziej zaawansowani w spinaniu nowoczesnych Atmeli z Windowsami za pomocą USB, być może popatrzą z politowaniem na moje staroświeckie podejście do używania starej elektroniki, ale może ktoś wykorzysta mój pomysł z pożytkiem. No i jeszcze jedna zaleta: leżący pod szafą stary pecet jest gratis, a jeśli się popsuje w wyniku brutalnych eksperymentów, też mała strata, co dla początkujących elektroników może być dużą zaletą. Z moich doświadczeń wynika, że pracującą bez obudowy płytę główną najłatwiej jest ukatrupić ładunkami elektrostatycznymi, jakie mogą się zgromadzić na naszym ciele przy chodzeniu po wykładzinach podłogowych. Przeprowadzałem testy polegające na wyciąganiu karty graficznej i sterownika dysków ze slotu działającego komputera, wyciąganiu taśmy z dysku twardego, czego jedynym skutkiem było jego zawieszenie się, który po resetowaniu działał dalej bez śladów uszkodzenia. UWAGA nie próbujcie tego na nowoczesnym drogim sprzęcie!

    Aby skutecznie wykorzystać starocia należy zapoznać się z następującymi zagadnieniami, których z racji obszerności oraz dostępnej w Internecie literatury nie będę omawiał:
    - Architektura komputerów IBM PC-XT-AT
    - ROM BIOS
    - Assembler iAPX88
    - MSDOS od środka
    - obsługa programu DEBUG
    - Makroassembler

    Całą pracę rozwijania naszego sterownika realizujemy w folderze na dyskietce bądź dysku twardym. Narzędziami, którymi się posługiwałem był głównie dosowski DEBUG, oraz ciekawy AFD (Advenced Full Screen Debuger).

    Pomysł powstał dla sprawdzenia koncepcji działania programowego sterowania matrycą LED za pomocą rezydentnego programu uruchomionego pod DOSem. Procedura obsługi może być wyzwalana przerwaniem zewnętrznym, np z wejścia drukarki LPT1, sygnałem ACk-pin10 do masy (IRQ7-INTF), albo RS232C, można także podłączyć ją pod przerwanie systemowe liczące czas pracy systemu (IRQ0 - INT8). Możemy przeprogramować częstotliwość wywoływania przerwania ze standardowych 18.2Hz na dowolną wyższą poprzez zmianę wartości dzielnika częstotliwości zegarowej (CTC w pierwszych komputerach PCXT z procesorem 8088 realizował je układ scalony 8253). W załącznikach zawarty jest kod mojego programu testowego. Napisałem go pod DEBUG-iem. W bardziej zaawansowanej wersji można by napisać go pod makro assemblerem i skompilować.





    Program zawiera następujące moduły :
    - Rozpoznanie środowiska sprzętowego i umieszczenie kilku pożytecznych adresów bazowych sprzętu na którym będziemy wykonywać nasze eksperymenty. Jest to realizowane na podstawie danych BIOSu wpisanych pod adres 0040:0000 przez procedurę samo testu po restarcie komputera (POST) .
    - podpięcie pod wektor przerwania adresu nowej procedury obsługi przerwania, wraz z zachowaniem adresu oryginalnej procedury obsługi, w celu ich łańcuchowego wykonania: Najpierw realizowana jest nasza procedura, a po jej wykonaniu przekazane jest dalsze wykonanie do procedury której wektor umieszczony był w tablicy wektorów przerwań przed uruchomieniem naszego programiku.
    - Zaklepania w DOS-ie naszego programu jako rezydentnego(INT27-TSR=Terminate and Stay Resident)
    - Procedura zamieniająca wektor przerwania o numerze w SI, Adres w EX:AX, Adres bufora do przechowania oryginalnego wektora przerwania przekazany w rejestrze DI.
    - Procedura Gniazdowa dla nowego wektora przerwania, którym zmartwychwstały pecet ma wykonać jakieś pożyteczne zadanie. W gnieździe zostawiłem miejsce na jedną instrukcję Call, Która dla tymczasowej dezaktywacji może być zastąpiona 3 bajtami wartości h90 (instrukcja NOP - No Operation - nic nie rób) Procedura wywołana przez gniazdo musi zawierać cały dalszy kod programu.

    - procedura robocza wywołana z gniazda

    -Obszar danych boot loadera i naszego przerwania

    - duża jak na assembler przestrzeń na dalsze procedury
    - przestrzeń na dane
    - przestrzeń na Stos
    Całość zajmuje 1kB z czego faktycznie wykorzystałem narazie nieco ponad 256 bajtów

    Korzyści wynikające z zaproponowanego rozwiązania:
    - edukacyjne, można wiele się dowiedzieć o posiadanym sprzęcie, dzięki czemu rozwija się wyobraźnia o elektronice,
    - niezliczoną ilością informacji suportowych w Internecie.
    - praktycznie darmowe źródło platformy ze stabilnym i wygodnym środowiskiem, do uruchamiania eksperymentalnych konstrukcji interfejsów dla których w przyszłości można będzie zbudować dedykowane sterowniki na współczesnych scalakach,

    Wady:
    Czasami spore gabaryty, ale: zwarzywszy koszt pozyskania, wygodę środowiska i zasoby wiedzy ...

    Życzę udanych wskrzeszeń pecetologiczych :)

    Wskrześ starego peceta jako Hosta do eksperymentów :)

    P.S. Sama matryca LED jeszcze jest w powijakach...
    W załączniku INT8_004.com procedura wyświetlająca zawartość pamięci komputer na ekran w postaci znaków ASCII podłączona jest do przerwania zliczającego czas pracy systemu INT8.
    Programy te można uruchomić pod XP wywołując uprzednio command.com, lecz windowzzz chyba nie dopuści ich do działania na warstwie sprzętowej, jeszcze tego nie sprawdziłem.


    Fajne!
  • Oscyloskop cyfrowy Siglent SDS1104X
  • #2 22 Kwi 2008 21:53
    Rinho
    Poziom 19  

    A jest trochę tych antyków w szafie:D W długi weekend trzeba będzie spróbować. Pomysł ciekawy.

  • #3 22 Kwi 2008 22:21
    ghost666
    Tłumacz Redaktor

    Mam podobny zamysł, tylko chyba jednak bardziej zaawansowny. Wpadła mi w łapki ostatnio bardzo fajna karta wyjść/wejść - 4 x 3 8b portów w różnych konfiguracjach (np 2x12b na port, w ciekawej konfiguracji 8b do transmisji i 4b handshaking). Generalnie ta fajna i stara karta to nawet jakaś karta labolatoryjna, więc pewien potencjał ma. Do tego planuje dorobić zewnętrzne urządzenia różnego sortu - przetworniki ADC, DAC, kontrolery silników etc i kontrolowanie tego spod środowiska LabView i przesyłanie danych i sygnałów kontrolnych za pomocą UDP albo TCP (raczej ten pierwszy, bo mnie zżera zasobów, a te będą krytyczne). Po stronie drugiej bedzie stał normalny komputer odbierający te dane, także oprogramowany w LabView.

    Co sądzicie o takim zdalnym stanowisku do testów?

  • #4 22 Kwi 2008 22:33
    marenc
    Poziom 24  

    Witam, sam mam dwa PC w "zasobniku" pokojowym ;)

    - 486 na chyba 33MHz
    - Pentium 133MHz

    Ten drugi jest sprawny, ale z niego nie korzystam; pierwszy nie mogłem skonfigurować i w ostateczności posłużył mi za zbiór pamięci SRAM o czasie dostępu 15ns :D Zapomniałem wspomnieć o serwerze, ale to już potężna maszyna Celeron 400 :D

    Wstępnie zamierzałem się wziąć za złącze ISA ... lecz jest strasznie wolne ... potem przyszedł czas na PCI, ale zanim się za to wziąłem na poważnie to kupiłem laptopa ... teraz mam "w głowie" gniazdo PCMCIA, ale z braku czasu narazie studiuję to "spinanie nowoczesnych Atmeli z Windowsami za pomocą USB".

    Powodzenia ... i nie powiem, że projekt do kitu, bo assembler uczy ... i to nawet więcej niż DOS ;)

  • #5 22 Kwi 2008 23:26
    The One 624
    Poziom 13  

    Bardzo ciekawy temat.
    Zastanawiam się jak można zrealizować komunikację z urządzeniami zewnętrznymi. Z USB było by sporo zabawy z oprogramowaniem i ogólnie realizacją, za to LPT nie daje dużych możliwości.

  • #6 23 Kwi 2008 07:15
    tos18
    Poziom 37  

    Cieszę sie że nie zapomniano o dosie.Sam używam tego "archaicznego" systemu na komputerach klasy 486 - sterują maszynami cnc .Uruchamiałem również pod dosem klientów sieci i internet.
    Daje sie również uruchomić wifi i usb (na komputerach klasy pentium).

  • Oscyloskop cyfrowy Siglent SDS1104X
  • #7 23 Kwi 2008 07:26
    krzychS
    Poziom 29  

    Ciekawy pomysł. PC daje potężne możliwości sterowania, a pod DOS-em staje się systemem czasu rzeczywistego.
    Pisanie programów pod niego nie jest skomplikowane.

  • #9 23 Kwi 2008 11:48
    RobertN
    Poziom 10  

    jeżeli miałby działać nawet "edukacyjnie" jako sterownik matrycy LED to jest to chyba najbardziej prądożerny sterownik. Gratuluję eksperymentów życząc niskich rachunków za prąd. Polecam do doświadczeń płyty komputerków przemysłowych ( starszych modeli 486/Pentium I ) są w miarę tanie a na pokładzie mają po 2-4 porty RS232 , wyjście na matrycę LCD ( LVDS ) czasem LAN i dźwięk. i najważniesze - niewielkie rozmiary i dużo niższy pobór prądu . Czasem można tanio kupić na All......ro.

  • #10 23 Kwi 2008 11:56
    PeterBernard314
    Poziom 15  

    Witam, widzę, że jest zainteresowanie :)
    Otrzymałem zapytanie na PW czy mógłbym wyjaśnić jak pecetem sterować zewnętrzne interfejsy.
    Długo by pisać o strukturze systemów mikroprocesorowych - są na ten temat setki książek - odpowiem więc krótko.

    W każdym PC dysponujemy złączem równoległym drukarki, jest to 8 bitowy port wyjściowy (w nowszych karnacjach EPP ECP także port wejściowy), do którego celem sterowania drukarką dodano 4 bity wyjściowe sterujące oraz aby DOS 'wiedział' jak ma wysyłać kolejne bajty, są 4 linie wejściowe którymi drukarka wysyła informacje o swoim stanie, oraz jedna linia wejściowa na której podanie stanu niskiego zgłasza do procesora tzw 'żądanie obsługi przerwania zewnętrznego'. Po przyjęciu takiego przerwania procesor wstrzymuje wykonywanie bieżącego programu i przekazuje dalsze sterowanie do innego programu, którego adres początkowy znajduje się w tzw. tablicy wektorów przerwań. Użycie właśnie tego mechanizmu było przedmiotem mojego programu.

    Taki sam mechanizm przerwań zgłasza port RS232 po zweryfikowaniu nadchodzącej po lini transmisji jako prawidłowej pod względem liczby bitów, parzystości. Przeważnie w PC są zainstalowane 2 porty RS232, a czasem 2 porty drukarki. Jest jeszcze tzw. GamePort, lecz nie pamiętam czy on również wysyła sygnał przerwania.

    Tak więc bez absolutnie żadnej konieczności dokładania jakichkolwiek płytek wtykanych do płyty głównej dysponujemy już pokaźnymi narzędziami komunikacji ze światem zewnętrznym.

    W 15-leciu świetności pecetów przed 95-windowsowych (lata 1981-95) zbudowano tysiące modeli kart rozszerzeń wtykanych na złącze ISA, zawierających przeróżne ilości portów równoległych , przetworników A/C i C/A, do dowolnego sprzęgania z zewnętrznymi systemami. W oparciu o te właśnie klocki zautomatyzowano tysiące procesów przemysłowych.

    W Elektorze i El.Praktycznej zamieszczono kilkadziesiąt projektów podobnych kart, materiał do poszukiwań jest wręcz przeogromny.

    To co podłączymy do owych 8 bitów złącza drukarki lub karty portów we/wy, ograniczone jest tylko naszą wyobraźnią. W zasadzie przy odpowiedniej budowie interfejsu i właściwie zaprojektowanym protokole wymiany informacji można by sterować dowolny proces czasu rzeczywistego. Oczywiście jedynym ograniczeniem będzie ilość przesyłanych bajtów, prędkość komputera i sterujące oprogramowanie. Powstaje więc gigantyczne pole do inwencji :)

  • #11 24 Kwi 2008 08:37
    fantom
    Poziom 31  

    Po pierwsze to do takich zabaw nie potrzeba starego kompa, wystarczy emulator np: qemu.

    Po drugie wedlug mnie, ale to subiektywna ocena, lepiej sie przystawic do Linuksa i nauczyc pisac sterowniki - znacznie przydatniejsze.

    No i po trzecie, miejcie litosc, nie nazywajcie DOS-a systemem operacyjnym a co najwyzej "uruchamiaczem aplikacji".

  • #12 24 Kwi 2008 08:41
    bartnoone
    Poziom 10  

    Witaj Piotr ,
    Wydaje mi sie ze w tym momecie warto by bylo wkleic opowiesc o pecetach w radmorze i morzliwosicach przenoszenia danych z jednego do drugiego;)
    Pozdrawiam Bartek

  • #13 24 Kwi 2008 08:56
    ghost666
    Tłumacz Redaktor

    fantom napisał:
    Po pierwsze to do takich zabaw nie potrzeba starego kompa, wystarczy emulator np: qemu.

    Po drugie wedlug mnie, ale to subiektywna ocena, lepiej sie przystawic do Linuksa i nauczyc pisac sterowniki - znacznie przydatniejsze.

    No i po trzecie, miejcie litosc, nie nazywajcie DOS-a systemem operacyjnym a co najwyzej "uruchamiaczem aplikacji".


    Jest tylko jeden problem, a w moim przypadku nawet dwa (jeśli czytałeś mojego posta):

    Czy pod qemu uruchomie karte ISA w komputerze bez takich slotów? Dla ulatwienia dodam że nie. A znajdź mi komputer z ISAmi którego moge używać na codzień - czyli o dosyć wysokich parametrach.

    DOS jest pełnoprawnym systemem, takim samym jak Windows czy Linux. A linuxa np. ja nie moge za bardzo używać gdyż środowisko w którym programuje układy pomiarowe jest nie-do-końca kompatybilne z takowym.

  • #14 24 Kwi 2008 09:09
    fantom
    Poziom 31  

    ghost666 napisał:

    DOS jest pełnoprawnym systemem, takim samym jak Windows czy Linux.


    Doprawdy ? Wielozadaniowym, wielouzytkownikowym z zarzadzaniem i ochrona pamieci ?

    Cytat:

    A linuxa np. ja nie moge za bardzo używać gdyż środowisko w którym programuje układy pomiarowe jest nie-do-końca kompatybilne z takowym.


    Coz moge powiedziec, peszek ;-).

    Mnie oczywisicie chodzilo (tak jak autorowi) o walory edukacyjne jak i rowniez o przyszlosc (pisaniem sterownikow pod Linuksa mozna sie pochwalic na rozmowie kwalifikacyjnej, DOS-em ? No coz - raczej slabo)

  • #15 24 Kwi 2008 09:57
    krzychS
    Poziom 29  

    DOS jest systemem w którym możesz użyć przerwań, a w Windzie i Linuxie to twoje chęci zostaną wywłaszczone.

  • #16 24 Kwi 2008 10:03
    fantom
    Poziom 31  

    krzychS napisał:
    DOS jest systemem w którym możesz użyć przerwań


    I wlasnie dlatego systemem operacyjnym nie jest a raczej jego marna namiastka.

    Cytat:

    a w Windzie i Linuxie to twoje chęci zostaną wywłaszczone.


    Od tego wlasnie jest system, to on dzieli i rzadzi na maszynie. Trzeba sie do niego dopasowac i grac wedlug jego regul. Uzytkownicy z zalozenia sa podejrzewani o zle zamiary ;-) i prawdziwy system ma to kontrolowac. Ale koniec OT.

  • #17 24 Kwi 2008 10:20
    PeterBernard314
    Poziom 15  

    Fajne te dysputy filozoficzne ... to podobnie jak z rządem państwa, czy ma on pomagać ludziom, czy ludzie muszą się do niego dopasować ... Na szczęście zawartość pamięci operacyjnej komputera łatwiej się wymienia niż ludzi na stołkach... sorki za OT, ale nie mogłem się powstrzymać :)

  • #18 24 Kwi 2008 10:31
    fantom
    Poziom 31  

    No coz ja to bym chyba nie chcial rzadu ktory pozwala wszystkim obywatelom korzystac z przywilejow wladzy np: Kononowicz moglby chciec jechac na szczyt UE reprezentowac Polske ;-). Rzad powinien natomiast sluchac ludzi i realizowac ich prosby w miare mozliwosci tak aby nie destabilizowac panstwa ;-). OS ma sie zachowywac tak samo czyli daje aplikacjom maszyne ale pod pewnymi warunkami i odpowiada na ich potrzeby tak aby nie destabilizowac dzialania maszyny. Fajna taka dyskusja, podoba mi sie, swietne porownanie :-D.

  • #19 24 Kwi 2008 10:32
    Ooz
    Poziom 12  

    fantom napisał:
    krzychS napisał:
    DOS jest systemem w którym możesz użyć przerwań


    I wlasnie dlatego systemem operacyjnym nie jest a raczej jego marna namiastka.

    Cytat:

    a w Windzie i Linuxie to twoje chęci zostaną wywłaszczone.


    Od tego wlasnie jest system, to on dzieli i rzadzi na maszynie. Trzeba sie do niego dopasowac i grac wedlug jego regul. Uzytkownicy z zalozenia sa podejrzewani o zle zamiary ;-) i prawdziwy system ma to kontrolowac. Ale koniec OT.

    Musze to jeszcze przedłużyć, dos JEST pełnoprawym system operacyjnym(tyle że bardzo starym)(wystarczy sięgnąć do teoretycznych podstaw informatyki), a funkcje wywłaszczania usera nie definiują OSa...
    I osobiscie uważam ze odgórne pozbawianie usera możliwości ingerencji w działanie systemu to porostu traktowanie wszystkich jak debili (polityka MS) i szlag mnie trafia z tego powodu bardzo często ;) (jestem administratorem sieci...)

  • #20 24 Kwi 2008 10:40
    ghost666
    Tłumacz Redaktor

    Obsługa przerwań to kolejna z zalet DOSa - ja tak na to spojrze, myśląc o dobrej i szybkiej obsłudze przerwań. Może dla Ciebie czas jest nieistotny, ale dla mnie czas jest ważny w obliczeniach, nawet jeśli są to ułamki us. Tylko nie pisz że od takich zadań o jakich ja myśle są systemy embedded...

  • #21 24 Kwi 2008 10:44
    fantom
    Poziom 31  

    ghost666 napisał:
    Obsługa przerwań to kolejna z zalet DOSa - ja tak na to spojrze, myśląc o dobrej i szybkiej obsłudze przerwań.


    Nigdy nie stwierdzilem ze DOS nie ma zalet.

    Cytat:

    Może dla Ciebie czas jest nieistotny, ale dla mnie czas jest ważny w obliczeniach, nawet jeśli są to ułamki us. Tylko nie pisz że od takich zadań o jakich ja myśle są systemy embedded...


    No i zepsules mi zabawe ;-).

  • #22 24 Kwi 2008 10:57
    ghost666
    Tłumacz Redaktor

    Punkt dla mnie :D.

    Ale rozmowa w sumie akademicka. Coś jak dyskusja co lepsze ASM czy C++ ;). Dopóki nikt nie zada pytania "a do czego" dopóty wszyscy się kłócą i sprzeczają.
    Pozdrawiam :)

  • #23 24 Kwi 2008 11:00
    fantom
    Poziom 31  

    Nikt tu sie przeciez nie kloci. Zwykla, rzeczowa i spokojna dysputa. ;-)

  • #24 24 Kwi 2008 11:04
    krzychS
    Poziom 29  

    To nie jest rozmowa całkowicie akademicka. Jeśli wykonujesz experyment w którym musisz dokładnie w określonym momencie coś włączyć, zmierzyć, czy generować to Windows właduje się w tym momencie (wywłaszczy twój program) i cały pomiar wyrzucasz do śmietnika.

  • #25 24 Kwi 2008 12:50
    gangsta529
    Poziom 14  

    ja z moim kumplem zrobiliśmy coś podobnego ale małym kosztem, stary komp, matryca od laptopa (30 zeta na allegro) touchpad od laptopa (jako myszka jak by coś było trzeba zrobić) i to zabudowane ładnie, zajmuje bardzo mało miejsca a też można się bawić tak jak tutaj kolega to pokazał

  • #26 24 Kwi 2008 15:44
    pidpawel
    Red. Komputery FAQ

    Ja tam generalnie polecam linuxa. Sam pisałem bibliotekę do obsługi portu LPT i jakoś nie narzekałem na szybkość pracy. Oczywiście nie używałem zaawansowanych funkcji - po prostu nie zdążyłem do tego dojść bo mi się ferie skończyły. Jak komuś będzie bardzo zależało to mogę u siebie na www udostępnić tę bibliotekę, ale może to chwilę potrwać, bo to na innym hdd(3,5) a korzystam z laptopa... więc.. ;)

  • #27 25 Kwi 2008 07:43
    krzychS
    Poziom 29  

    Do eksperymentów gdzie dokładność sterowania nie odgrywa kluczowej roli można zastosować spokojnie dowolny system operacyjny.

  • #28 25 Kwi 2008 07:52
    Fyszo
    Spec od GSM

    W tamtym czasie kiedy powstał dos, to był naprawdę dobry system. I nie dziwie się że Bill na tym zarobił krocie, sam jakbym miał wybrać system wszechczasów postawiłbym na dosa. A to że ma taką a nie inną specyfikę - to dla jednych wada dla innych zaleta. I nie można dosa porównywać do systemów które 'zjadają' 500x więcej zasobów i są 20 lat nowsze.

  • #29 25 Kwi 2008 10:23
    fantom
    Poziom 31  

    Dobry jak dobry. Po prostu odpalal aplikacje i pozwalal jej robic co jej sie zywnie podoba dlatego wlasnie nazywal bym go bardziej "odpalaczem programow" niz systemem operacyjnym ale to moje subiektywne zdanie. Inna sprawa ze w czasach gdy powstawal (a krolowalo jeszcze 186 i 286) bardziej zaawansowane funkcje nie byly jeszcze potrzebne. Niby mogl okreslic segment w ktorym aplikacja mogla sie wykonywac i jakos "zarzadzac pamiecia" ale szczerze mowiac nawet nie wiem czy to robil.

  • #30 25 Kwi 2008 10:36
    PeterBernard314
    Poziom 15  

    Heh. multitasking w latach 80/90 to właściwość, o której pececiarze wzdychali patrząc na ówczesne mainframe-y... pamiętam, że gdy po raz pierwszy dostaliśmy Concuret DOS'a nie mogliśmy wyjść ze szczęścia że na AT z 1 MB RAM odpaliliśmy na raz 4 dosy z czterem różnymi aplikacjami, to nic że to się nie nadawało do poważnej pracy ale było spełnieniem powiedzmy marzeń o dogonieniu wielkich komputerów.