Readme ku RTX51
Ivan Feno
feno
Středa Březen 17 12:05:18 CET 2004
-----Bude k dispozicii na FTP. -----
Multitaskový operačný systém pre mikroprocesory rady 8051 RTX51.
Popis programu RTX 51 Tiny pre pamäťový model SMALL, COMPACT a LARGE.
Stručná charakteristika operačného systému (OS) RTX51.
OS RTX51 je určený pre súčasné vykonávanie elementárnych úloh v
mikroprocesore rady 8051. Program je vytvorený tak, aby ho bolo možné využiť
bez potreby modifikácie zdrojových textov programu napísaného v assembleri
8051 a bez potreby špeciálneho hardwaru. V súčasnosti existujú tri verzie
programu RTX51. Všetky verzie využívajú časovač T0, ten nie je možné využiť
pre užívateľské aplikácie. Časovač pravidelne prerušuje vykonávanie činnosti
jednotlivých programov podľa prideleného časového kvanta, ktoré užívateľ
definuje vo svojom programe PROGRAMS.ASM s pomocou premennej typu pole:
CASY. Ďaľšou premennou, ktorú je možné použiť je RELOAD, ktorá je vložená do
registra TH0, ktorý potom v závislosti na tejto hodnote generuje interné
prerušenie od časovača T0.
V obslužnej rutine tohoto prerušenia je OS s RTX, ktorý periodicky
kontroluje činnosť všetkých programov s pridelenými časovými kvantami pre
jednotlivé úlohy. Premenná MAXTASK uchováva maximálny počet súčasne
vykonávaných úloh v OS RTX. Jednotlivé úlohy sú uzatvorené do nekonečnej
slučky, ktorá jednoznačne definuje hranice úlohy. OS RTX51 využíva banku
registrov č.3, t.j. úsek pamäti od 18h do 1Fh, táto oblasť je potrebná pre
nevyhnutnú činnosť OS RTX. Časové kvantum je v rozsahu 01h až 0FFh a udáva
počet prerušení počas ktorých bude elementárna úloha vykonávaná.
Všetky programy sú vytvorené ako relokovateľné, t.j. univerzálne tak aby ich
bolo možné umiestniť do ľubovoľnej časti pamäte, bez potreby prekladu
programu od absolútnej adresy.
Prvý modul RTXS.OBJ je určený pre mikroprocesor 8051, bez externej pamäti
dát. V tomto modeli je využívaná banka registrov č.3 v internej pamäti RAM,
od 18h do 1Fh, ďalej od adresy 30h do 70h sú uložené registre jednotlivých
úloh ACC, B, PSW, DPTR a časové kvantum úlohy. Každá úloha vyžaduje 8 byte v
internej pamäti RAM. Registre R0 až R7 nie sú v tejto verzii uchovávané,
takže sú zdieľané všetkými úlohami. Zásobník má implicitne veľkosť 16 byte
a je umiestnený na koniec pamäte. Maximálny počet úloh je v tomto modeli je
8.
Druhý modul RTXC.OBJ je určený pre mikroprocesor 8052, bez externej pamäti
dát. V tomto modeli je využívaná banka registrov č.3 v internej pamäti RAM,
od 18h do 1Fh, ďalej od adresy 30h do 0B0h sú uložené registre jednotlivých
úloh ACC, B, PSW, DPTR a časové kvantum úlohy. Každá úloha vyžaduje 8 byte v
internej pamäti RAM. Registre R0 až R7 nie sú v tejto verzii uchovávané,
takže sú zdieľané všetkými úlohami. Zásobník má implicitne veľkosť 16 byte
a je umiestnený na koniec pamäte. Maximálny počet úloh je v tomto modeli je
16.
Tretí modul RTXL.OBJ je určený pre mikroprocesor 8052, s externou pamäťou
dát. V tomto modeli je využívaná banka registrov č.3 v internej pamäti RAM,
od 18h do 1Fh. Polohu zásobníka v RAM je možné nastaviť pomocou premennej
STACK. Registre ACC, B, PSW, DPTR a časové kvantum úlohy sú uložené v
externej pamäti XRAM od adresy 00h do 0FFh. Každá úloha vyžaduje 8 byte v
externej pamäti XRAM. Registre R0 až R7 nie sú v tejto verzii uchovávané,
takže sú zdieľané všetkými úlohami. Maximálny počet úloh je v tomto modeli
je 32.
Obmedzenia OS RTX51.
RTX51 vo všetkých modeloch obsahuje len jeden zásobník, takže inštrukcie
LCALL, ACALL, RET, IRET je možné použiť len v jednej úlohe bez obmedzenia.
Tieto inštrukcie je možné bez problémov nahradiť inštrukciami SJMP, AJMP,
LJMP. Taktiež v týchto verziách nie je možné prideliť priority jednotlivým
úlohám. Pridelené časové kvantum je kvôli úspore pamäti RAM nemožné zmeniť
počas vykonávania úlohy na inú hodnotu, jako bola pri štarte OS RTX
nastavená. Polohu zásobníka SP v pamäti RAM si nastavuje RTX s výnimkou
modelu LARGE pri štarte podľa potreby a nie je ho možné meniť.
Doporučenia:
Podľa potreby je dobré využívať možnosti deklarácie premenných bez
absolútnej adresy. Nepoužívať inštrukcie CALL a RET vo viac ako v jednej
úlohe.
Preklad programu:
Prekladáme program programs.asm.
a51.exe programs.asm
L51.exe rtxs.obj, programs.obj to progs.obj
ohs51.exe progs.obj
Prvý riadok preloží programs.asm do tvaru programs.obj, druhý riadok spojí
moduly rtxs.obj a programs.obj do jedeného modulu progs.obj, a tretí riadok
vytvorí z modulu progs.obj výsledný tvar vhodný pre naprogramovanie do
mikroprocesoru progs.hex.
Vyššie uvedeným spôsobom môžeme za určitých podmienok využívať aj programy,
ktoré boli napísané vyšších programovacích jazykoch napr. C51 od firmy KEIL.
Tieto programovacie jazyky sú u nás vzhľadom na svoju cenu nedostupné, takže
pre chudobného našinca neostáva nič iné, len písať programy v assemberi
8051.
Další informace o konferenci Hw-list