Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Emulator dydaktycznego systemu mikroprocesorowego DSM-51

andrzejlisek 14 Oct 2009 12:10 15177 54
Computer Controls
  • Emulator dydaktycznego systemu mikroprocesorowego DSM-51

    W ramach swojej pracy dyplomowej inżynierskiej napisałem emulator DSM-51.

    System został zaprojektowany w latach dziewięćdziesiątych, jest do dzisiaj produkowany przez firmę MicroMade i konstrukcja nie zmieniła się od tamtego czasu. Jedynie w roku 2004 zmienił się wygląd z powodu wprowadzenia w życie lutowania bezołowiowego i tym samym zastosowania innych elementów.

    Nie wiem, jak obecnie wygląda popularność tego sprzętu w szkołach i uczelniach, ale widzę, że od czasu do czasu pojawia się nowy temat dotyczący wykonania zadania szkolnego na tym systemie, tak 2 lub 3 lata temu pojawił się wątek na temat szukania innych emulatorów niż Jagoda.

    Warto jednak mieć na uwadze, że on jest oparty na rozwiązaniach stosowanych w latach dziewięćdziesiątych, a może osiemdziesiątych, bo technologia do Polski zawsze dociera jakiś czas później w stosunku do USA i Japonii.

    Jest to system stosowany w szkołach średnich i na uczelniach wyższych, używany na przedmiotach związanych z programowaniem układów mikroprocesorowych. Jak sama nazwa wskazuje, urzadzenie służy do nauki programowania mikrokontrolerów 8051.

    Ponieważ, jak ja miałem na nim zajęcia, system mnie zainteresował do tego stopnia, że chciałem mieć go w domu i na nim programować. Ponieważ na prawdziwy DSM-51 mnie nie stać, a umiem programować w C#, chciałem mieć odpowiednik systemu w komputerze. Jakiś rok temu zacząłem go tworzyć na własne potrzeby, ale projekt porzuciłem, bo popełniłem pewne błędy implementacyjne, które mogły znacznie utrudnić implementację pełnej funkcjonalności i nie warto było tamtego projektu przerabiać, więc postanowiłem zbudować emulator na nowo od podstaw.

    Tworzenie trwało mniej więcej miesiąc wakacji z przerwani, obecnie zapewnia 99% kompatybilności. Różnice w kompatybilności polegają tylko na braku implementacji elementów, które istnieją w systemie, ale zwykle nie są wykorzystywane. Dokładny opis kompatybilności jest w załączniku.

    Jak wiadomo, już jest jeden emulator, nazywa się Jagoda, ale tamten emulator ma sporo ograniczeń, których nie ma w moim.

    Jedną z najważniejszych cech mojego emulatora jest obsługa plików Intel Hex, tych samych, które wprowadza się do prawdziwego systemu, więc użytkownik może programować w dowolnym języku, ważne, żeby kompilator generował pliki w formacie Intel Hex, odczytywane przez program do wprowadzania ich do DSM-51.

    Poniżej obraz przedstawiający emulator z uruchomionym programem dla DSM-51:
    Emulator dydaktycznego systemu mikroprocesorowego DSM-51

    Emulator wymaga środowiska .NET 2.0 lub kompatybilnego. Sprawdzałem działanie w środowisku Mono w systemie Linux, nie stwierdziłem żadnych błędów w działaniu z powodu ewentualnej niekompatybilności Mono z .NET 2.0.

    W załączniku jest program i opis. Mój promotor wie o moim zamiarze udostępnienia emulatora i twierdzi, że nie ma problemu. Inaczej by wyglądała sprawa, gdybym rozważał udostępnienie całej pracy inżynierskiej, z tego powodu całej pracy nie udostępniam.

    Czekam na ewentualne pytania, sugestie, być może są jakieś błędy (mimo dołożenia wszelkich starań i uruchamiania w emulatorze wielu różnych programów, nie mogę zagwarantować, że nie ma żadnych błędów implementacyjnych w samym emulatorze).

    Cool? Ranking DIY
    About Author
    andrzejlisek
    Level 29  
    Offline 
    Has specialization in: informatyk
    andrzejlisek wrote 2928 posts with rating 456, helped 59 times. Live in city Poznań. Been with us since 2005 year.
  • Computer Controls
  • #2
    Rinho
    Level 19  
    Bardzo pożyteczny program :D Działa mi na Viście Home x64 (uruchomiony jako administrator) oraz Windowsie 7 x64.
  • #3
    _TIGER_
    User under supervision
    Wszystko fajnie tylko dlaczego po wyjściu z programu dalej on pracuje w tle? :|
  • #4
    _TIGER_
    User under supervision
    Quote:
    tak ale gdy podłącze do komputera system to nie ma żadnej reakcji nawet błędu ! siedzieliśmy z kumplem i profesorem 4 godziny i nie dało sie tego podłączyć:(


    Może uszkodzony... a może brak odpowiedniej wiedzy?
  • #5
    Jacek31
    Conditionally unlocked
    Mnie natomiast zastanawia, po co na studiach uczą jeszcze 51'? To już tak mało spotykany procesor że nawet jego rodzina nie jest rozwijana. ATMEL, NXP, MAXIM tam jeszcze coś produkuje, ale niezbyt to konstrukcje wybitne, bynajmniej nie rozwijane. Większość ludzi już dawno przeszło na AVRy, a co ambitniejsi na ARMy. więc nauka 51' to tak jak by na infie w ogólniakach jeszcze uczyli obsługi C64 i BASICa.
  • #6
    _TIGER_
    User under supervision
    Cóż... DSM-51 jest chyba bardziej w celu zobrazowania programowania... choć na studiach to faktycznie jakieś nieporozumienie
  • #7
    mlody_elektronik
    Level 27  
    Cóż nie tylko na studiach uczą '51...w technikum obecnie także jest to "podstawa" prowadzenia lekcji przedmiotu o nazwie - "Układy mikroprocesorowe", ale tak to już jest z programami nauczania, na "urządzeniach elektronicznych" uczy się jeszcze o monochromatycznych TV, niby rozumiem że trzeba znać podstawę aby zrozumieć resztę ale w wypadku właśnie TV...na omówienie kolorowego TV w planie przewidziane są 3h, a reszta na monochromatyczny ;) nie wspominając już w ogóle o TV np. korzystających z przetworników ciekłokrystalicznych czy plazmowych :D

    wracając do tematu emulator dosyć ciekawy, kawałek solidnej pracy, przede wszystkim ogromną zaletą jest możliwość wczytania *.hex jednym słowem Gratuluję :)
  • Computer Controls
  • #8
    Dioda3
    Level 13  
    Moim zdaniem mikrokontrolery rodziny 51 są rewelacyjne do nauki assemblera. Sam na ćwiczeniach z elektroniki przechodziłem 2 lata temu przez te kości, i muszę przyznać, że na AVR na pewno nie miałbym ochoty uczyć się assemblera. No bo zresztą te kości są stworzone by programować je w C. Natomiast nauka programowania na najniższym poziomie pozwala dopiero w pełni zrozumieć procesor. Dlatego uważam, że '51 jeszcze długo powinny gościć w dydaktyce, a porównywanie ich do commodore na lekcjach informatyki jest niedorzeczne. Polecam też poczytać o kostce ADuC812, która posiada rdzeń '51 i niesamowity przetwornik a/c, co sprawia, że wciąż jest bardzo chętnie wykorzystywany.
  • #9
    PiotrRDiablo
    Level 22  
    Witam. Również gratuluję wspaniałego systemu. Pełen szacunek dla autora.
    Też uważam, że system rewelacyjny do nauki assemblera, nawet na studiach wiele nauczy, przede wszystkim pozwoli zrozumieć działanie procesora i zasady programowania w assemblerze.
    Sam uczyłem się podstaw mikroprocesorów i assemblera na 6502 (atari oraz zbudowane przeze mnie 2 systemy oparte na tym procesorze - takie od podstaw z bramkami, 74HCTxxx plus porty I/O 8253, 8255 intela).
    Fajnie, że są jeszcze ludzie interesujący się taką elektroniką/informatyką :D
  • #10
    grzeniu_pl
    Level 14  
    Dioda3 wrote:
    Sam na ćwiczeniach z elektroniki przechodziłem 2 lata temu przez te kości, i muszę przyznać, że na AVR na pewno nie miałbym ochoty uczyć się assemblera.

    Czy możesz podać choćby dwa takie powody ?

    Dioda3 wrote:
    No bo zresztą te kości są stworzone by programować je w C.

    Oj, oj. Mocne słowa. Nie przesadzajmy. Powiedzmy, że w C jest wygodniej, ale nie każdy pisze kod dla 64/128kb flasza. Pamiętaj, że dla malutkich avrów w C nie damy rady. Kod musi się zmieścić.
  • #11
    tzok
    Moderator of Cars
    Nie myślałeś o zintegrowaniu edytora i makroassemblea '51, tak jak to ma miejsce w Jagodzie? Do celów dydaktycznych byłoby to bardzo duże ułatwienie, do tego możliwe było by debugowanie na mnemonikach a nie tylko po HEXach.
    Emulowane przyciski mogłyby "odskakiwać".
  • #12
    andrzejlisek
    Level 29  
    nielu wrote:
    Gratulacje dla autora za wykonanie, w jakim programie można pisać na to programy ? I w jakich językach ?

    Można pisać, w jakim się chce. Ważne jest tylko to, żeby kompilator/assembler wy generował plik Intel Hex.

    _TIGER_ wrote:
    Wszystko fajnie tylko dlaczego po wyjściu z programu dalej on pracuje w tle? :|

    Ten błąd znam i próbuję go usunąć. Jeżeli przed zamknięciem klikniesz przycisk "Stop", to nie ma problemu.

    Dodano po 25 [minuty]:

    tzok wrote:
    Nie myślałeś o zintegrowaniu edytora i makroassemblea '51, tak jak to ma miejsce w Jagodzie? Do celów dydaktycznych byłoby to bardzo duże ułatwienie, do tego możliwe było by debugowanie na mnemonikach a nie tylko po HEXach.


    Może to i prawda, ale moim zdaniem to kłóciłoby się z założeniem projektu. Założeniem jest stworzenie emulatora DSM-51, w którym (w przeciwieństwie do Jagody) można uruchamiać programy pisane w dowolnym języku. Ponadto, jak w program są wplecione dowolne dane binarne (w assemblerze robi się to za pomocą dyrektywy "DB"), to wtedy deassemblacja (w celu wyświetlenia rozkazów) byłaby utrudniona, bo komputer nie "zgadnie", czy dany bajt jest początkiem rozkazu, czy bajtem danych.

    Natomiast, jak ktoś programuje w języku C, to debugowanie i tak jest utrudnione, bo w tym celu trzebaby znać dokładne działanie kompilatora, żeby dojść, gdzie w kodzie C znajduje się błąd.

    tzok wrote:
    Emulowane przyciski mogłyby "odskakiwać".


    Możesz jaśniej o co chodzi, bo nie bardzo rozumiem? To chyba już jest. Wciskasz klawisz, to przycisk się wciska, zwalniasz klawisz, to on odskakuje.
  • #14
    andrzejlisek
    Level 29  
    _TIGER_ wrote:
    Wszystko fajnie tylko dlaczego po wyjściu z programu dalej on pracuje w tle? :|


    Udało mi się poprawić ten błąd.
  • #15
    _TIGER_
    User under supervision
    Dzięki ;)
    Jeśli byś jeszcze w przyszłości pomyślał o tym aby się dało okno rozciągnąć to w ogóle byłoby super.. ale to tam kiedyś.. jak będziesz miał czas i chęci ;)

    Jeszcze raz gratuluję i pozdrawiam!
  • #16
    byrrt
    Level 21  
    I to jest najśmieszniejsze w tym wszystkim, że na uczelniach wyższych oraz w szkołach technicznych uczą ciągle 51 - przecież to jest jak sam autor nazwał "technologia lat 80tych!". W prawdzie pewne podstawy wiedzy można opierać o systemy mcs51 ale nie w ten sposób, że ludzie z elektronika wychodząc nie mają zielonego pojęcia że są procesory znacznie szybsze, z większą ilością peryferii, że cały system można de fakto zbudować często na jednym układzie itp.. Mam znajomego wykładającego na uczelni wyższej - co ciekawe nawet kadra nauczycielska tak kurczowo trzyma się tych 51, że blokuje jakikolwiek postęp.. Kolega próbował wprowadzać inne procesory, zainteresować nimi - niestety, jeżeli ktoś sam nie zacznie się interesować czymś więcej niż 51nka to nic się nie dowie w polskiej szkole / uniwersytecie... W praktycznych zastosowaniach 51ki są dziś używane bardzo rzadko - jest to po prostu technologia z przed 2 dekad! Stosunkowo droga w produkcji, totalnie mało wydajna i nie warta zainteresowania :/
  • #17
    MasterMatan
    Level 21  
    @byrrt
    tak samo jak uczyć w technikach informatycznych programowania w Pascala który de facto jest z lat 70-tych i służył do programowania Zilog`ów Z80. A tak by dali C (strukturalny) i C++ (obiektowy) i tak to można by było się uczyć.

    @autor
    Mam problem z odpaleniem emulatora na Linuksie, zainstalowałem MONO jednak coś cienko cienko to chodzi.
  • #18
    andrzejlisek
    Level 29  
    MasterMatan wrote:
    Mam problem z odpaleniem emulatora na Linuksie, zainstalowałem MONO jednak coś cienko cienko to chodzi.


    Na czym dokładnie polega problem i jaką masz dystrybucję Linuxa?
    Rozumiem, że zainstalowałeś MONO w najnowszej wersji. Jeżeli problem jest z wyświetlaniem, że się zawiesza, to najpierw wyłącz pole "Wątki", zwiększ okres czasu między odświeżeniami z 50ms do 250ms i spróbuj jeszcze raz.
  • #19
    MasterMatan
    Level 21  
    Ubuntu 9.04 Jurny Jarząbek PL Remix, problem już rozwiązałem, działa prawidłowo.
    Już się doczekać nie mogłem bo brat mi kiedyś opowiadał co można zdziałać z 8051, nawet gdzieś książeczka do 8051 się wala ;) Jeszcze raz, dobra robota :D
  • #20
    mlody_elektronik
    Level 27  
    byrrt wrote:
    [...]co ciekawe nawet kadra nauczycielska tak kurczowo trzyma się tych 51, że blokuje jakikolwiek postęp.. Kolega próbował wprowadzać inne procesory, zainteresować nimi - niestety, jeżeli ktoś sam nie zacznie się interesować czymś więcej niż 51nka to nic się nie dowie w polskiej szkole / uniwersytecie...[...]


    skoro temat się już tak rozwinął, to mogę potwierdzić te słowa, osobiście próbowałem zainteresować moją nauczycielkę od układów mikroprocesorowych AVR'ami, ale niestety gdy tylko wspomnę o nich na lekcji Pani Profesor ;) zaraz zbywa temat i na tym się kończy...

    swoją drogą myślę że problem też tkwi w braku funduszy na powiększanie kwalifikacji nauczycieli...nauczyciele po prostu nie mają dostatecznej wiedzy aby uczyć np. na AVR...
  • #21
    byrrt
    Level 21  
    mlody_elektronik wrote:
    swoją drogą myślę że problem też tkwi w braku funduszy na powiększanie kwalifikacji nauczycieli...nauczyciele po prostu nie mają dostatecznej wiedzy aby uczyć np. na AVR...

    To nie jest kwestia funduszy bo np na pewnej uczelni w moim mieście leżą narzędzie (eval-board'y, jtagi i licencje) do ciekawych prockow i środowisk programistycznych ale brak jakiejkolwiek chęci ze strony uczących tam ludzi na wprowadzenie tego do programu.. "W programie od lat jest 51 i tak ma pozostać" ;]
    A pomijając jakieś evale... to do AVR naprawdę nie trzeba żadnych pieniędzy aby pokazać jak działają - procek + kawałek zasilacza i kilka peryferiów to wydatek parunastu złotych (!!!), programator to sobie można na rezystorach zrobić nawet.. AVR to też żadna rewelacja ale to i tak wielki krok na przód ze względu na prędkość ale przede wszystkim na rozumowanie - mnogość peryferii i elastyczność zastosowania..
  • #22
    Jacek31
    Conditionally unlocked
    Powiem tak nauczycielom po prostu się nie chce za takie marne pieniądze, uczyć ambitnie. Ja jak chodziłem na infę, to szkoła owszem była biedna, mieliśmy dziadowskie P60 z 8MB RAM i WIN95, kiedy w domu każdy już miał Durony 700, czy P3. Szkoła miała zestaw edukacyjny ELI (Elektroniczne Laboratorium Informatyki). ale nigdy z niego jako klasa nie korzystaliśmy. Tylko mnie jako ambitniejszemu uczniowi pozwolono sie tym trochę "pobawić", ale to też tylko bo były dni otwarte szkoły i trzeba było się pochwalić że coś mają.
    A nauczyciele wiedzę mają, często sami na AVR-ach coś robią, ale nie chcą się wyrywać za darmola. U mnie w szkole był nawet pełny BASCOM AVR, ale nikt z niego nie korzystał.
  • #23
    andrzejlisek
    Level 29  
    Kiedyś wysłałem maila do autora z kilkoma pytaniami o system, jedno pytanie brzmiało:

    Gdzieś czytałem, że cała seria mikrokontrolerów 8051 i podobnych jest przestarzała i wypierana przez inne, szybsze i tańsze mikrokontrolery RISC. W związku z tym mam pytanie, czy DSM się wciąż produkuje z kontrolerem serii 8051, czy z innym, czy już się DSM-51 nie produkuje (a sprzedaje się te egzemplarze, które wyprodukowano i nie sprzedano)?

    I dostałem taką odpowiedź:

    W pewnym sensie ma Pan rację. Elektronika zmienia się tak szybko, że klasyczny 8051 jest na pewno przestarzały. Ale są firmy które do tej pory rozwijają rodzinę mikrokontrolerów bazująca na 8051 - proszę obejrzeć np. Silicon Labs.
    DSM-51 jest wciąż produkowany i na pewno póki będzie produkowany, będzie produkowany z procesorem 8051.
    Oczywiście, są mikrokontrolery nowsze, szybsze, lepsze itd. Ale 8051 jest mikrokontrolerem, który stał się klasyką. Proszę też nie zapominać, że DSM-51 to Dydaktyczny System Mikroprocesorowy, a w dydaktyce zawsze warto opierać się na dobrych, sprawdzonych wzorcach. Zapoznanie się z tym mikrokontrolerem pozwala na zrozumienie całej "filozofii" mikrokontrolerów. Późniejsze poznawanie nowszych mikrokontrolerów na pewno będzie prostsze.

    Czy przyznacie racje producentowi?
  • #24
    tzok
    Moderator of Cars
    Tak, bo rzeczywiście do nauki assemblera jest jak znalazł. Zestaw rozkazów '51 jest stosunkowo łatwy do opanowania i dość łatwo się w nim programuje. AVRy są stworzone z myślą o programowaniu ich w C... DSM-51 służy do nauki programowania w assemblerze (poznania ogólnej idei programowania w tym "języku").
  • #25
    Cersunited
    Level 16  
    Bo żyjemy w zacofanym kraju i dlatego :/ Tak jak ktoś napisał najwięcej czasu poświęcane jest starociom typu Tv czarno-białe , przetworniki typu Ortikon czy szczyt jak na szkole- przetwornik CCD. Tego co i jak się nas uczy to jest żal:/ niestety taka prawda.
  • #26
    tzok
    Moderator of Cars
    Uczy się prostych rzeczy, łatwych do zrozumienia podstaw. Jak będziesz potrzebował czegoś konkretnego to i tak się sam musisz nauczyć, ale będziesz już wiedział co i jak. Lepiej uczyć teorii i podstaw niż skupiać się na jakimś konkretnym rozwiązaniu.

    Poza tym Micromade ma umowę z MEN i zarabia krocie na swoim DSM-51 (popatrzcie ile to kosztuje), a kto zabije kurę znoszącą złote jaja?

    Emulatorów płytek uruchomieniowych dla '51 jest trochę, w szkołach i na uczelniach używa się Jagody, bo jest wygodna, ten program niestety pod tym względem jest mniej wygodny, bo wciąż trzeba używać oryginalnego assemblera (a wiele placówek ma starą wersję DSM'a wyłącznie z DOSowym środowiskiem). Dlatego miło by było dodać choćby prosty edytor z kolorowaniem składni ASM i zintegrowanym assemberem (choćby crossassemblerem MetaLink'a).
  • #27
    andrzejlisek
    Level 29  
    tzok wrote:
    Poza tym Micromade ma umowę z MEN i zarabia krocie na swoim DSM-51 (popatrzcie ile to kosztuje)...


    Patrzyłem, to kosztuje prawie 2000zł.
    Założę się, że wprawny elektronik-amator za te pieniądze wykona kopię 1:1 tego systemu w 2-3 egzemplarzach.

    O to też kiedyś się pytałem, odpisał:

    Quote:

    Nie jest to np. telefon komórkowy rozdawany po 1 zł. Tylko że ten telefon po
    2 latach wyrzucamy do kosza. System DSM-51 jest już w niektórych szkołach
    ponad 10 lat. Proszę sprawdzić, ile w tym czasie było awarii. A zapewniam
    Pana, że "środowisko szkolne" jest bardzo "agresywne".
    Jakość niestety musi kosztować.


    Nie wiem, jak rozumieć, że środowisko szkolne jest agresywne. Z racji zastosowania, ten sprzęt w szkołach na pewno nie jest narażony na uderzenia, upadki. Uczniowie interesujący się elektroniką chyba wiedzą co to jest i jak sie z tym obchodzić
  • #28
    tzok
    Moderator of Cars
    andrzejlisek wrote:
    Nie wiem, jak rozumieć, że środowisko szkolne jest agresywne. Z racji zastosowania, ten sprzęt w szkołach na pewno nie jest narażony na uderzenia, upadki. Uczniowie interesujący się elektroniką chyba wiedzą co to jest i jak sie z tym obchodzić
    Trafne spostrzeżenie - "uczniowie interesujący się elektroniką", a takich jest 2-3 na grupę, reszta tylko kombinuje jakby to diabelstwo zepsuć to nie będzie zajęć...
  • #29
    _TIGER_
    User under supervision
    Quote:
    Trafne spostrzeżenie - "uczniowie interesujący się elektroniką", a takich jest 2-3 na grupę, reszta tylko kombinuje jakby to diabelstwo zepsuć to nie będzie zajęć...

    Mimo wszystko trzeba tym 2-3 osobom dać szanse rozwoju...

    Jeszcze trochę to będziemy chodzić do szkoły aby douczać nauczycieli.. :/
  • #30
    Udar88
    Level 11  
    sprawdzałem działanie emulatora na windows Vista Ultimate i wszystko działa
    Super szkoda że nie miałem czegoś takiego 6 lat temu jak byłem w technikum elektronicznym

    Brawo