Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

PeterBernard314 22 Apr 2008 19:40 23137 51
e-mierniki
  • 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.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    PeterBernard314
    Level 15  
    Offline 
    Has specialization in: nagrania/nagłośnienie/avr
    PeterBernard314 wrote 225 posts with rating 22, helped 1 times. Been with us since 2007 year.
  • e-mierniki
  • #2
    Rinho
    Level 19  
    A jest trochę tych antyków w szafie:D W długi weekend trzeba będzie spróbować. Pomysł ciekawy.
  • #3
    ghost666
    Translator, editor
    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
    marenc
    Level 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
    The One 624
    Level 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
    tos18
    Level 40  
    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).
  • #7
    krzychS
    Level 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.
  • e-mierniki
  • #9
    RobertN
    Level 11  
    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
    PeterBernard314
    Level 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
    fantom
    Level 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
    bartnoone
    Level 11  
    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
    ghost666
    Translator, editor
    fantom wrote:
    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
    fantom
    Level 31  
    ghost666 wrote:

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


    Doprawdy ? Wielozadaniowym, wielouzytkownikowym z zarzadzaniem i ochrona pamieci ?

    Quote:

    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
    krzychS
    Level 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
    fantom
    Level 31  
    krzychS wrote:
    DOS jest systemem w którym możesz użyć przerwań


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

    Quote:

    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
    PeterBernard314
    Level 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
    fantom
    Level 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
    Ooz
    Level 13  
    fantom wrote:
    krzychS wrote:
    DOS jest systemem w którym możesz użyć przerwań


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

    Quote:

    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
    ghost666
    Translator, editor
    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
    fantom
    Level 31  
    ghost666 wrote:
    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.

    Quote:

    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
    ghost666
    Translator, editor
    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
    fantom
    Level 31  
    Nikt tu sie przeciez nie kloci. Zwykla, rzeczowa i spokojna dysputa. ;-)
  • #24
    krzychS
    Level 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
    gangsta529
    Level 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
    pidpawel
    Level 26  
    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
    krzychS
    Level 29  
    Do eksperymentów gdzie dokładność sterowania nie odgrywa kluczowej roli można zastosować spokojnie dowolny system operacyjny.
  • #28
    Fyszo
    Level 37  
    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
    fantom
    Level 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
    PeterBernard314
    Level 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.