Autor: Tomislav Ratic, dipl. ing.

   
Razvojni sistem za 80C31 - RS8031

 

Konačna (izvršna) verzija sistema koji se bazira na nekom mikrokontroleru (procesoru) podrazumeva da se program izvršava (iščitava) iz ROM-a (bilo spoljašnjeg ili internog koji se nalazi u samom mikrokontroleru). Kod razvojnih sistema ovakav način izvršavanja programa je moguć, ali krajnje nepraktičan jer se posle svake izmene u kodu mora ponovo programirati ROM, tj. EPROM. Ovo ne samo da iziskuje vreme, nego je i broj reprogramiranja EPROM-a ograničen. (Kod OTP (One Time Programming) ROM-ova koji se nalaze u samom kontroleru razvijanje naravno nije moguće.)
Zbog gore navedenog, kod razvojnih sistema program se uglavnom izvršava iz RAM-a. U tu svrhu koriste se ili EPROM emulator ili mehanizam BOOT LOADERA.

EPROM EMULATOR ili BOOT LOADER?

Kod prvog načina, u podnožje za RAM postavlja se konektor koji povezuje mikrokontrolersku karticu sa posebnom karticom tkzv. EPROM emulatorom (EE). Na njoj je smešten RAM kapaciteta obično ne većeg od 64KB i kontrolna elektronika. Na PC je povezana preko serijskog ili paralelnog porta. Pomoću odgovarajućeg programa RAM na EE-u se "puni" izvršnim kodom, a za to vreme se mikrokontroler drži u resetovanom stanju. Po završetku "punjenja", kontroler se "osloba|a" reseta i počinje izvršavanje programa iz RAM-a. Kada je program jednom upisan u RAM, EE se u potpunosti ponaša kao pravi ROM sve do nestanka napajanja, kada se sadržaj RAM-a nepovratno gubi. Me|utim, ukoliko se obezbedi rezervno baterijsko napajanje za RAM, EE se spolja gledano ne razlikuje od EPROM programatora koji je povezan sa mikrokontrolerskim ure|ajem i koji omogućava programiranje EPROM-a i izvršavanje programa iz njega. Problem koji se često javlja sa EE je da su oseljivi na elektromagnetne smetnje i često znaju da izazovu "zaglavljivanje" ili nekontrolisano izvršavanje programa. Kod kvalitetnijih EE, ovaj problem je uglavnom rešen, a njih karakteriše i velika brzina upisivanja programa u RAM što je veoma značajno kod velikih kodova.
Za razliku od EE, mehanizam BOOT LOADERA ne zahteva dodatnu karticu, nego samo postojanje statičkog RAM-a na kartici razvojnog sistema. Princip "bootovanja" se zasniva na tome da se u EPROM-u mikrokontrolerske kartice nalazi mali program koji korisnički kod pomoću serijske komunikacije prihvata (sa PC-ja) i preusmerava u RAM. Po završetku "bootovanja", počinje izvršavanje upisanog programa iz RAM-a. Najveća prednost ovakvog razvojnog sistema je da je otporan na smetnje taman koliko i gotov ure|aj. Naime, ovde ne postoje žice koje povezuju EE sa mikrokontroleskom karticom - tim žicama se prenose data i adresni signali (ali i reset signal), tako da predstavljaju prave antene za prikupljanje smetnji. Osim ove pogodnosti, razvoj se vrši na gotovom (konačnom) ure|aju, bez potrebe za dodatnim ure|ajima kao što je Eprom emulator. Sam boot loader obično ne zauzima ništa od mehanizama kontrolera, tako da osim nekih zahteva u organizaciji programa ne postavlja nikakva ograničenja za korisnika.
Brzina upisa korisničkog koda u RAM zavisi od brzine serijske komunikacije koja je za quarc od 11.0592 MHz maximalno 19200 Bd. Pri brzini od npr. 9600 Bd, brzina upisa programa u RAM je oko 1KB u sekundi. Interesantno je da neki današnji (noviji) mikrokontroleri poseduju ili sopstveni boot loader ili je moguće boot loader upisati u internu (često fleš) memoriju, ali princip bootovanja ostaje isti.
Posebna vrsta boot loadera su tkzv. monitor programi. Monitori ne samo da omogućavaju izvršavanje programa iz RAM-a, već i kontrolu toka programa. Moguće je izvršavati program korak po korak, postavljati prekidne tačke, pratiti (i menjati) sadržaj internih registara itd. Pored očiglednih prednosti, mana monitor programa je što za svoj rad zahteva korištenje nekih mehanizama mikrokontrolera tako da oni nisu na raspolaganju korisniku.
Da li će koristiti EE ili boot loader (monitor), to zavisi od samog korisnika. I jedan i drugi način imaju svoje prednosti i mane, ali je cena ipak na strani boot loadera.

7b53.jpg (22093 bytes)

 

Razvojni sistem RS8031

Iako punoletna po svom nastanku, Intelova familija mikrokontrolera MCS51 je i dalje veoma zastupljena. Pojavom mikrokontrolera firme "Atmel" serije AT89XX (kao što su npr. AT892051, AT8951), koji ne samo što su kompatibilni, već se zasnivaju na Intelovom MCS51 setu instrukcija i skoro identičnoj arhitekturi, pokazano je da stari dobri 8051 nije za staro gvož|e. Iako su danas sve dostupniji 16-bitni kontroleri kao i Digital signal procesori, 8-bitni kontroleri su i dalje najpristupačniji i često najopravdaniji za upotrebu, i to ne samo za početnike. Sa razvojne tačke gledišta najpopularniji je Intelov 8031 - verzija osnovnog 8051 kontrolera bez internog ROM-a. Neke karakteristike kontrolera 80C31 (i 80C32) date su u prilogu texta.
RS8031 je razvojni sistem baziran na Intelovom mikrokontroleru 80C31 (80C32). Smešten je na kartici dimenzija 120x75 mm i čine ga:

  • Mikrokontroler 8031 sa quarcom na 12 MHZ

  • Latch - 74HC573

  • EPROM 32kB - 27C256

  • Statički RAM 32kB - 62256

  • Kontrolna logika sa 74HC00

  • Interfejs za serijsku komunikaciju po RS232 standardu sa MAX232

  • Priključci za pristup portovima P1 i P3, kao i DATA i ADRESS magistrali

  • SUBD9 konektor za priključivanje serijskog kabela

  • Reset kolo sa reset tasterom

  • DC konektor sa ulaznim grecom i filterskim kondenzatorom

  • Stabilizator napona sa 7805 i montiranim hladnjakom

Na slici 1. data je blok šema RS8031, a na slici 2. je prikaz rasporeda elemenata na pločici, tkzv. Top Overlay.



Slika 1. - Blok šema razvojnog sistema sa mikrokontrolerom 80C31 (80C32)

OPIS CELINA

· Mikrokontroler
U podnožje za mikrokontroler mogu se postaviti mikrokontroleri 80C31 i 80C32. Na kartici je standardno postavljen quarc od 12MHz, ali mogući su i drugi kristali - 11.0592 MHz i drugi.

· Napajanje
Spoljnje napajanje se na RS8031 priključuje preko standardnog DC konektora. Pošto je iza DC konektora grec, moguće je dovesti naizmenični ili jednosmerni napon od 12V, pri čemu nije potrebno voditi računa o polaritetu, pa ni o prepravci postojećeg adaptera-ispravljača. Za dobijanje +5V upotrebljen je integrisani stabilizator 7805 maximalne struje 1A, montiran na hladnjaku koji mu omogućava disipaciju od 2 do 2.5W pri temperaturi ambijenta od 50°C. Iza greca je elektrolitski kondenzator od 470uF za dodatno "peglanje" ulaznog napona. LE dioda D3 daje indikaciju prisutnosti napona od +5V.



7b52.jpg (20716 bytes)

Slika 2. - Raspored elemenata na pločici RS8031

· Komunikacija
Na kartici se nalazi integrisano kolo MAX232, koje omogućava serijsku komunikaciju po RS232 standardu. Serijski kabel se priključuje na SUBD9 konektor. Sa quarcom od 12MHz maximalna baudska brzina je 4800 Bd, dok se sa 11.0592 MHz mogu ostvariti i 9600, pa i 19200 Bd. Takodje, postoji i kontrolna LED (D4 - crvene boje) koja daje indikaciju da se podaci sa PC-ja šalju ka mikrokontroleru. Ona svetli ne samo prilikom bootovanja, već i pri svakom slanju sa PC-ja.

· Kontrolna logika
Kontrolna logika je ostvarena pomoću kola 74HC00 i služi da podeli adresni prostor na dva bloka po 32KB i to invertovanjem adresne linije A15, ali i da omogući izvršavanje programa iz spoljnjeg RAM-a "sabiranjem" PSEN i RD signala.

· Latch
Za komunikaciju sa spoljnjom memorijom potrebno je ukupno 24 pina jer postoji 16 adresnih i 8 DATA signala. Me|utim, da bi smanjio broj pinova, kod kontrolera iz familije MCS'51 INTEL u tu svrhu koristi samo 2 porta - port P2 služi za postavljanje gornjih 8 adresa (A8-A15), dok se port P0 koristi i za podatke (D0-D7) i za donjih 8 adresa (A0-A7). Posledica ovakve organizacije je potreba za lečom, tj. na P0 se prvo postavljaju donje adrese koje se "ulečuju" (pomoću signala ALE - vidi šemu na slici 3.), a zatim se na isti port postave podaci ili se sa njega očitaju. Ovo je već odavno standardno rešenje, a kao leč se koristi kolo 74HC573 ili re|e 74HC373.

· Memorija
RS8031 poseduje EPROM od 32KB i RAM od 32KB. U tabeli 1. data je adresna mapa celokupne memorije. Donjih 32KB memorijskog prostora pripada EPROM-u, a gornjih 32KB RAM-u.

ADRESNA MAPA

 

Oblast

Unit

Veličina

Mehanizam

Pinovi

CODE

0000-7FFFh

ROM

32KB

PC

PSEN

 

8000-FFFFh

RAM

32KB

PC

PSEN

CONSTANT

0000-7FFFh

ROM

32KB

MOVC

PSEN

 

8000-FFFFh

RAM

32KB

MOVC, MOVX

PSEN, RD,WR

DATA

8000-FFFFh

RAM

32KB

MOVX

RD, WR

Tabela 1. - Adresna mapa RS8031

· Priključci
Na kartici se osim DC konektora i SUBD9 konektora, nalaze i konektori za pristup portovima P1 i P3. Oni su izvedeni kao 10-pinski IDC konektori na kojima je pored port pinova izvedeno i napajanje +5V i GND. Tu su tako|e i 8-pinski muški IDC konektor za pristup DATA magistrali, kao i 16-pinski muški IDC konektor za pristup adresama.

Opis rada RS8031

Na slici 3. data je električna šema razvojnog sistema. Iz adresne mape se vidi da je izvršavanje programskog koda moguće i iz EPROM-a i iz RAM-a, što ukazuje da se RS8031 zasniva na mehanizmu boot loadera. Kod Intelovih kontrolera iz familije MCS'51 upravljački signali za ROM i RAM se razlikuju. Za čitanje sadržaja ROM-a koristi se signal PSEN, a za upravljanje RAM-om koriste se RD (read) i WR (write) signali. Da bi se mogao primeniti mehanizam boot loader-a, tj. da bi se izvršni kod programa mogao čitati iz RAM-a, neophodno je na OE (output enable) nožicu RAM-a dovesti i PSEN signal, tako da se na OE pin u stvari dovode "sabrani" signali PSEN i RD. Ovo je ostvareno upotrebom kola 74HC00.
Ukoliko se kartica koristi kao razvojni sistem, u EPROM-u se nalazi BOOT-LOADER program. Njegova uloga je da korisnički kod koji se šalje sa PC-ja (preko RS232 kanala) prihvati i preusmeri u RAM počev od adrese 8000h. Maximalna dužina korisničkog koda je 32KB. Po završetku "bootovanja", poslednja naredba koja se izvršava iz EPROM-a je skok na 8000h, a zatim počinje izvršavanje korisničkog koda koji je sada smešten u RAM-u. Jedino o čemu programer mora da vodi računa je da ceo program koji se u završnoj (EPROM) verziji izvršava od 0000h, u ovom slučaju mora imati ofset od 8000h. Ovo se odnosi na sve naredbe kojima se vrši organizovanje programa (npr. naredba ORG), tako da je ofset neophodan i za vektorske adrese za servisiranje interapta.
Rad sa boot loaderom je jednostavan. Posle generisanja binarnog fajla korisničkog koda, pomoću DOS naredbe MODE se konfiguriše serijski port PC-ja na koji je priključena mikrokontrolerska kartica. Zatim se tako|e DOS-ovom naredbom COPY kopira binarni fajl na odgovarajući COMM port. Po završetku kopiranja, mikrokontroler počinje automatski da izvršava upisani program i to iz RAM-a.
Da bi se program uopšte mogao upisati u RAM na razvojnoj kartici, mora postojati veza izme|u računara i mikrokontrolera 80C31. Ona je ostvarena serijskim kabelom koji je dovoljno da bude trožilni - koriste se signali RXD, TXD i GND. Zbog načina rada serijskog porta PC-ja, neophodno je kratko spojiti pinove CD, DTR i DSR, kao i RTS i CTS. U tabelama 2. i 3. dati su izgled serijskog kabla sa kratko spojenim pinovima.

SERIJSKI KABEL

SERIJSKI KABEL

9-pinski konektor

9 - 9

9 - 25

25 - 25

25-pinski konektor

2 - Receive Data (RD)

2 === 3

2 === 2

2 === 3

2 - Transmit Data (TD)
3 - Transmit Data (TD)

3 === 2

3 === 3

3 === 2

3 - Receive Data (RD)
5 - Signal Ground (SG)

5 === 5

5 === 7

7 === 7

7 - Signal Ground (SG)

Tabela 2. - Serijski kabel

 

 

Kratko spojeno na konektoru serijskog kabla sa strane PC-ja

9 pinski konektor

25 pinski
konektor

Prvi kratkospojnik Carrier Detect (CD) , Data Terminal Ready (DTR), Data Set Ready (DSR)

1, 4, 6

8, 20, 6

Drugi kratkospojnik Request to Send (RS), Clear to Send (CS)

7, 8

4, 5

Tabela 3. - Kratko spajanje pinova na serijskom portu PC-ja

Kao što se vidi sa šeme na slici 3., postoji samo jedan reset taster. Ovo znači da nema tkzv. vrućeg reseta posle kojeg automatski počinje ponovno izvršavanje programa iz RAM-a, već da postoji samo "hladni" reset kojim se mikrokontroler vraća na početak boot-loader programa u EPROM-u. Ponovno izvršavanje programa je moguće ponovnim bootovanjem istog, ali pošto se resetom ne dira sadržaj spoljašnjeg RAM-a, to nije nepohodno. Dovoljno je poslati samo prvi bajt istog korisničkog koda, koji boot-loader shvata kao novi korisnički kod od samo jednog bajta. Ovim se samo na lokaciji 8000h prebrisava isti bajt i počinje ponovno izvršavanje programa. (Pošto se programi uglavnom pišu tako da je prva naredba koda skok za nekoliko desetina bajtova, koliko je potrebno da se preskoče vektorske adrese za servisiranje interapta, sa PC-ja je posle reseta dovoljno poslati samo kod za ljmp (02h) ili kod za sjmp (80h)). Ova operacija se može izvršiti na isti način kao i upis celog programa u RAM, pomoću naredbi MODE i COPY. Me|utim, jednostavnije je taj prvi bajt korisničkog koda, poslati kontroleru pomoću nekog komunikacionog programa (npr. Procomm ili Terminal emulation iz paketa Norton Commandera za DOS).
Kada se razvoj završi, krajnja verzija programa se upisuje u EPROM koji se postavlja u podnožje u kome se nalazio EPROM sa boot-loaderom. (Naravno, iz korisničkog sada je potrebno izbaciti sve offsete, jer se program iz EPROM-a izvršava počev od lokacije 0000h.) Ukoliko program za svoj rad ne zahteva spoljašnji RAM, on se može izvaditi iz podnožja. U ovom slučaju javlja se jedina hardverska razlika izme|u konačnog i razvojnog sistema - prazno podnožje za RAM.

Mogućnosti RS8031

RS8031 je naročito pogodan za početnike u radu sa mikrokontrolerima. To je standardni "low level" razvojni sistem na kojem se može programirati u asembleru ili u C-u. Pošto poseduje spoljašnji RAM, pogodan je za za korišćenje C kompajlera koji imaju mogućnost korišćenja tkzv. externog data bloka. Veličina RAM-a od 32KB dovoljna je i za prilično komplikovane programe pisane u C-u.
Umesto najjednostavnijeg boot-loadera, u EPROM razvojnog sistema se može upisati tkzv. monitor program i tako omogućiti kontrola izvršavanja korisničkog koda. Po potrebi, preko podnožja za EPROM, na RS8031 se može priključiti i EPROM emulator od 32KB.
Na RS8031 su izvedeni data i adresni signali, tako da je na jednostavan način moguće priključiti periferijske ure|aje. Na primer, ako je potrebno povećati broj ulazno izlaznih pinova, klasično rešenje je priključenje kola PPI-8255. Na slici 4. je dat primer povezivanja PPI kola sa mikrokontrolerom "mapiranjem" u adresni prostor. Dat je najjednostavniji primer, u kome se za selektovanje kola 8255 koristi adresni signal A15, isti kao i za selektovanje EPROM-a. Ovim, me|utim ne dolazi do "sudaranja" EPROM-a i PPI jer se za čitanje EPROM-a koristi PSEN signal, a za rad sa PPI signali RD i WR. Jedino je nezgodno što se na ovaj način razbacuje memorija, jer se prostor od donjih 32KB dodeljuje periferiji kojoj je potrebno svega 4 bajta adresnog prostora i time onemogućava priključivanje još neke druge periferije. Ukoliko je potrebno priključiti dve ili više periferija na sistem, mora se upotrebiti neki adresni dekoder što se ostavlja korisniku.

7b54.jpg (10125 bytes)
Slika 4. - Povezivanje PPI8255 sa RS8031

Poslednjih godina na tržištu postoji mnoštvo proizvoda koji podržavaju razne serijske protokole kao što su I2C bus, Microwire, SPI, serijski protokol firme "Dallas" itd. Zajedničko za sve njih je da omogućavaju jednostavno (serijsko) povezivanje periferija sa mikrokontrolerom. Mnogi od protokola su podržani od samih kontrolera hardverski integrisanim interfejsima i odgovarajućim instrukcijama kao npr. u Philipsovom 80552 koji podržava I2C bus, ili kontroleri proizvo|ača National Semiconductor i Motorola koji podržavaju SPI protokol. 8031 podržava samo standardnu RS232 komunikaciju, ali je za sve serijske protokole moguće napisati tkzv. "softverske drajvere". Na taj način se kontroleru 8031 znatno proširuju mogućnosti. Najveća prednost jednog protokola je široka lepeza ure|aja koji ga podržavaju. Npr. primenom I2C busa, na 8031 je moguće "prikačiti" AD konvertor, ulazno-izlazni expander (na koji se može priključiti smart LCD), real time clock, serijski eeprom, četvorocifarni sedmosegmentni LED drajver ... i to sve "sa utroškom" samo dva pina - jednog za clock i jednog za data signale. Pri ovom "softverski drajver" zauzme svega nekoliko stotina bajtova memorije. Na ostale pinove je moguće onda spojiti i neku malu tastaturu, izlazne releje (za koje je potrebno obezbediti strujno pojačanje putem običnih bipolarnih tranzistora) itd.
Posebno je interesantno što sve što se razvija na RS8031, kasnije može da se upiše u neki od kontrolera iz Atmelove familije AT80XX npr. AT89C51 itd.

ZAKLJUČAK

Osnovne karakteristike 80C31 (80C32):

  • 8-bitni CPU

  • 32 I/O linije - 16 za adresnu i data magistralu, 14 slobodnih, WR i RD pinovi

  • 128 (256 kod 80C32) bajtova on-chip Data RAM-a

  • Dva (3 kod 80C32) 16-bitna tajmera/brojača

  • Full duplex UART

  • 5 (6 kod 80C32) interapt izvora sa 2 nivoa prioriteta

  • On-chip oscilator sa taktom do 12MHz

  • 64KB adresnog prostora za programsku memoriju (ROM)

  • 64KB adresnog prostora za memoriju za podatke (RAM)

  • Idle i Power Down mod za redukciju potrošnje

Na osnovu svega gore rečenog, jedan uslovno rečeno hardverski slab sistem ne mora biti slab i u razvojnom smislu. Bilo da se zasniva na Intelovom ili nekom drugom mikrokontroleru, osnovni zadatak razvojnog sistema je da omogući razvoj (ili učenje) i da pri tom pravi što manje problema. Za početak je bolje da bude što jednostavniji, a vremenom da se prelazi na "veće visine".

 autor  je saradnik na Fakultetu Tehničkih Nauka u Novom Sadu


Pročitajte više o ovoj temi
Smart LCD, šta i kako? 
LOOK-UP tabele 
Softverska kašnjenja
Serijska komunikacija 
Mapiranje

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji