= HF8V = / = SP8WJT = / = SP0106RZ =


THOS




Project Info

THOS to system operacyjny dla średniej wielkości mikroprocesorów napisany przeze mnie w całości w assemblerze. Pierwsze wersje THOS powstały dla procesorów AVR i jego początki właściwie siegają systemu HF-6048 choć jego pełna wersja została wprowadzona dopiero na HF-6030 w wersji 3.xx. Minimalny system na którym można zainstalować THOS to 8KB pamięci ROM i 1K pamięci RAM, jądro systemu THOS zajmuje wtedy około połowę pamięci programu a reszta to różnie dobrane sterowniki różnych urządzeń w zależności od potrzeb danego systemu.


Najważniejsze składniki THOS to:

  • System plików THFS
  • Kompilator (opcjowalny) i interpreter programów i język programowania HAVR
  • Sieć komunikacyjna THN
  • Możliwość zainstalowania do 8 pamięci
  • Kanały wejścia i wyjścia: do 4 kanałów wejścia i tyle samo wyjścia, łatwo przełączalne
  • Wektory: tabela 256 funkcji użytkownika lub HAVR (w bardziej rozbudowanych systemach są to 2 oddzielne tabele)
  • Menedzment pamięci RAM (tylko w systemach z większą ilością RAM lub zewnętrznymi modułami RAM)
  • Opcjowalne wątki
  • Różne tryby pracy: System Mode, Microcontroller Mode, HAVR Boot Mode
  • Standardowy zestaw Błędów i Sygnałów


  • THOS pozwala na konstruowanie bardzo wydajnych systemów cyfrowych z dużą ilością ustandaryzowanych funkcji wbudowanych i praktycznie nieograniczoną możliwości dodawania aplikacji zawnętrznych napisanych w HAVR. Ta ostatnia możliwość jest bardzo pożyteczna w mikroprocesorach AVR które nie pozwalają na wykonanie własnego kodu w RAM.

    Od strony sprzętowej minimalny system cyfrowy wykonany z systemem THOS może mieć tylko buzzer jako urządzenie wyjściowe i kilka klawiszy klawiatury lokalnej lub zewnętrzny UART. Wszystkie komendy z systemu odbiera sie wtedy telegrafią za pomocą kodów HEX lub 3 literowych skrótów a funkcje wywołuje się za pomocą kodu HEX w tabeli Wektorów lub z Menu za pomocą 1-3 literowych skrótów. Obowiązuje wyłącznie format heksadecymalny poza nielicznymi wyjątkami.

    Drajwy

    Pamięci nieulotne w systemie THOS nazywane są drajwami (drive) i oznaczane one są numerami od 0 do 7 (DRV0-DRV7). System THOS pozwala programowo na użycie od 1 do 8 drajwów. Istnieje stała konwencja definiująca DRV niezależnie od systemu.


    DRVOPIS
    DRV0Pamięć programu mikroprocesora - może to być klasyczna pamięć ROM lub flash. Tylko do odczytu przez system i użytkownika. W ten sposób możliwe jest załadowanie do pamięci RAM zdefiniowanych danych, np. tabeli sinus
    DRV1Pamięć EEPROM lub podobna nieulotna i zapisywalna dodatkowa pamięć wewnątrz mikroprocesora - może być współdzielona przez system i użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8 w którym górna lub dolna część pamięci może być przeznaczona wyłącznie dla systemu
    DRV2Pamięć stała płyty głównej (płyty rozszerzeń) - może to być pamięć dowolnego typu, wykorzystująca dowolny protokół komunikacji. Podobnie jak DRV1 moze być współdzielona pomiedzy system a użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8 w którym górna lub dolna część pamięci może być przeznaczona wyłącznie dla systemu
    DRV3Pamięć mobilna (wymienna, odłączalna) płyty głównej (płyty rozszerzeń) - jest to wyłącznie pamięć szeregowa I2C (może być stosowany interfejs HF-10032), przeznaczona wyłącznie dla użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8
    DRV4Pamięć mobilna (wymienna, odłączalna) płyty głównej (płyty rozszerzeń) - jest to wyłącznie pamięć równoległa (może być stosowany interfejs HF-10031), przeznaczona wyłącznie dla użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8
    DRV5Pamięć mobilna (wymienna, odłączalna) płyty głównej (płyty rozszerzeń) - jest to wyłącznie pamięć szeregowa SPI (może być stosowany interfejs HF-10082), przeznaczona wyłącznie dla użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8
    DRV6Pamięć mobilna (wymienna, odłączalna) płyty głównej (płyty rozszerzeń) - dowolnego typu i protokołu komunikacyjnego, przeznaczona wyłącznie dla użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8
    DRV7Pamięć mobilna (wymienna, odłączalna) płyty głównej (płyty rozszerzeń) - dowolnego typu i protokołu komunikacyjnego, przeznaczona wyłącznie dla użytkownika. W systemach 8-bitowych stosowany jest system plikow THFS8


    W konkretnym systemie cyfrowym w zależnosci od wykonania, może istnieć dowolna ilość przyłączonych pamięci, ale oczywiście zawsze musi istnieć DRV0.

    Kanały wejścia-wyjścia

    Kanały wejścia-wyjścia pozwalają na wybranie różnych urządzeń wprowadzania i wyprowadzania informacji.

    Standardowe kanały wejścia-wyjścia
    CHANNELBITOPIS
    INPUT_DEVICE_LOC_KBD0Klawiatura lokalna (w tym zewnętrzne moduły jak HF-17763 lub HF-17966)
    INPUT_DEVICE_EXT_KBD1Klawiatura zewnętrza (oparta na UART lub PC 102 klawiszy)
    INPUT_DEVICE_UART2Zewnętrzny terminal UART
    INPUT_DEVICE_CW3Dekoder CW [*]
    OUTPUT_DEVICE_LCD4LCD 16x2 znaków
    OUTPUT_DEVICE_OLED5OLED oparty na SSD1306
    OUTPUT_DEVICE_UART6Zewnętrzny terminal UART
    OUTPUT_DEVICE_CW7Wbudowany lub dołączany buzzer

    [*] - funkcja zarezerwowana ale nigdy nie wprowadzona w praktyce

    Do typowej pracy stosowana jest najczęściej minimalna konfiguracja czyli OUTPUT_DEVICE_CW gdzie wyjściem jest jest telegrafia nadawana przez buzzer a kanałem wejścia jest INPUT_DEVICE_LOC_KBD czyli klawiatura lokalna. Ta ostatnia może być wykonana bardzo różnie w zależności od konstrukcji systemu, lub też może być to standardadowa klawiatura HEX zawierająca 16 klawiszy, lub klawiatura ASCII z różnymi zestawami klawiszy. Te ostatnie dwie możliwości wymuszają na użytkowniku dwa różne tryby wprowadzania informacji: wektorowy z tabeli funkcji użytkownika, lub tekstowy (komendy literowe). Poniższa tabela pokazuje różnice pomiędzy istniejącymi już systemami:

    Klawiatury lokalne - wprowadzanie informacji
    SYSTEMOPIS
    HF-6030Wbudowana klawiatura ASCII 40 klawiszy - możliwy tekstowy i wektorowy tryb pracy
    HF-6048Wbudowana klawiatura lokalna 4 klawisze - moźliwe wybieranie funkcji z menu
    HF-6050Brak wbudowanej klawiatury lokalnej - konieczne podłączenie klawiatury HEX (typu HF-17763 lub HF-17966) - wektorowy tryb pracy
    HF-6099Brak wbudowanej klawiatury lokalnej - konieczne podłączenie klawiatury HEX (typu HF-17763 lub HF-17966) - wektorowy tryb pracy
    HF-60104Brak wbudowanej klawiatury lokalnej - konieczne podłączenie klawiatury HEX (typu HF-17763 lub HF-17966) - wektorowy tryb pracy
    HF-6128Wbudowana klawiatura lokalna HEX - wektorowy tryb pracy
    HF-6158Brak wbudowanej klawiatury lokalnej - konieczne podłączenie klawiatury HEX (typu HF-17763 lub HF-17966) - wektorowy tryb pracy
    HF-6169Brak wbudowanej klawiatury lokalnej - konieczne podłączenie klawiatury HEX (typu HF-17763 lub HF-17966) - wektorowy tryb pracy


    We wszystkich systemach możliwe jest użycie klawiatury zewnętrznej INPUT_DEVICE_EXT_KBD opartej na UART a w większych systemach (poza HF-6030) klawiatury PC-AT 102 klawiszy.

    Wektorowy tryb pracy

    W tym trybie wprowadzania informacji, gdy podłączona jest tylko klawiatura HEX możliwe jest wybieranie 256 funkcji systemowych (nazywanych także wektorami) oraz różnych dodatkowych funkcji, najczęściej sterowników zewnętrznych urządzeń i aplikacji wbudowanych. Kody podstawowych funkcji systemowych są takie same we wszystkich systemach cyfrowych z systemem THOS, występują natomiast różnice w sterownikach i aplikacjach, które mogą być różne w różnych systemach. Poniższa tabela pokazuje różnice pomiędzy heksadecymalnymi Wektorami a ich literowymi odpowiednikami.

    Standardowe funkcje systemowe
    WEKTOR HEX (V)KODOPIS
    1CDVFind Value
    20MChoose Current Drive
    31RC1Clear RAMSEG1 (FTA)
    32RC2Clear RAMSEG2
    33RC3Clear RAMSEG3
    34DIRead RAM
    35DOWrite RAM
    36DRRead EEPROM (DRIVE1)
    37DWWrite EEPROM (DRIVE1)
    38D12Compare RAMSEG1 with RAMSEG2
    39D13Compare RAMSEG1 with RAMSEG3
    40FCWrite Text File
    41FNGet File Name
    42LLoad File
    43SSave File
    44FDDelete File
    45FLList Files
    46FPUnpack File
    47ECCrypt-Decrypt File
    48DNDownload File
    49DUUpload File
    4AFRRead Text File
    4FFBRun Batch File
    61RD1Display RAMSEG1 (FTA) in HEX
    62RD2Display RAMSEG2 in HEX
    63RD3Display RAMSEG3 in HEX
    6CR12Copy RAMSEG1 to RAMSEG2
    6DR13Copy RAMSEG1 to RAMSEG3
    6ER21Copy RAMSEG2 to RAMSEG1
    6FR31Copy RAMSEG3 to RAMSEG1
    7ERVGet Software Version
    CATRTHN Receive Packet
    CBTSTHN Send Packet
    F7CTerminal CW
    F8UTerminal UART
    FBBCW Beacon
    FCHCHAVR Compiler
    FDGRun HAVR Program
    FETHNGet THN Address
    FFIDGet System Name


    Przy użyciu samej klawiatury HEX są pewne niewielkie ograniczenia - nie da się na przykład korzystać z kompilatora HAVR (VFC), czy zapisać pliku tekstowego (V40) - tu należy użyć klawiatury ASCII lub kanału UART.

    Podstawowe zasady pracy w systemie THOS

    Podstawowym obszarem pracy w systemie THOS jest FTA czyli File Transfer Area. Jest to obszar roboczy dla niemal wszystkich funkcji systemowych, tam właśnie ładowany jest każdy plik poleceniem L a następnie można wywoływać kolejne funkcje dalszego przetwarzania. Na przykład gdy ładujemy plik programu HAVR jest on zawsze umieszczany w FTA a następnie po naciśnięciu G jest on wykonywany. W procesorach AVR FTA odpowiada RAMSEG1 czyli obszarowi 0x100-0x1FF. W najmniejszym procesorze ATMEGA8 (HF-6030) istnieją jeszcze tylko dwa dodatkowe segmenty pamięci RAMSEG2 (0x200-0x2FF) i RAMSEG3 (0x300-0x3FF), i mają one zadanie pomocnicze dla wielu operacji systemowych. W większych procesorach jak ATMEGA64 czy ATMEGA128 dochodzą dodatkowe segmenty ale nadal podstawowe zadanie grają te 3 wydzielone segmenty. RAM można modyfikować bezpośrednio wektorami V34 i V35.


    Lista systemów cyfrowych z zainstalowanym systemem THOS:

    SYSTEMuCRAMOPIS
    HF-6048ATMEGA161KBPierwszy historycznie system na którym prowadziłem eksperymenty z THOS. Obecnie projekt nie rozwijany.
    HF-6030ATMEGA81KBPierwszy w pełni uruchomiony system z THOS. Nadal aktywnie rozwijany (napisane ponad 150 wersji softu), aktywnie używany do testowania wielu funkcji sytemowych THOS i pisania sterowników
    HF-6050ATMEGA1284KBPierwszy "duży" system z RAM 4KB, co znacznie rozszerza możliwości w porównaniu do HF-6030
    HF-6099STM8S0031KBTHOS został częściowo "przetłumaczony" z assemblera AVR na STM8 (q)
    HF-60104P87C511KBTHOS w wersji na '51-ki (q)
    HF-6128ATMEGA1284KB
    HF-6158ATMEGA644KBObecnie drugi najbardziej aktywnie rozwijany softwarowo system, do chwili obecnej powstało 31 wersji oprogramowania. Podobnie jak w HF-6030 na tym systemie najpierw są testowane funkcje dla innych systemów
    HF-6169ATMEGA644KBSystem z uproszczoną płytą główną, przeznaczony do prototypowania



    Plany rozwojowe

    Planowane jest uruchomienie THOS na wielu innych mikroprocesorach, jest to jednak proces dość powolny który zajmie trochę czasu...


    Sources:

    HF Register

    Microcontrollers in my constructions

    Electronics

    Main Page