Sie sind auf Seite 1von 5

Capitolul 3

15
B BL LO OC CU UL L D DE E M ME EM MO OR RI IE E
3.1. Introducere
Microcontrolerele HCS12 sunt prevzute cu trei tipuri de memorii interne:
memoria de tip Flash EEPROM pentru programe (pe scurt memoria Flash),
memoria de tip RAM pentru date (pe scurt memoria RAM) i memoria care
conine registrele pentru controlul tuturor blocurilor microcontrolerului (pe scurt
registrele de control sau mai simplu registre). Dimensiunile acestor memorii i
spaiile de adresare depind de varianta de microcontroler. Pe de alt parte, spaiile
de adresare pot fi modificate prin programarea biilor unor registre de control.
Declararea dimensiunilor memoriilor i precizarea spaiilor de adresare se
realizeaz n cadrul unor fiiere de iniializare ce se ataeaz proiectelor. Aceste
fiiere sunt analizate dup faza de resetare a microcontrolerului. n cadrul mediului
de programare integrat Metrowerks CodeWarrior IDE fiierele de iniializare fac
parte din acest mediu i se ataeaz automat la crearea proiectului, n funcie de
varianta de microcontroler utilizat. Din acest motiv, n capitolul de fa se va
realiza doar o prezentare funcional a memoriilor.
n modurile de expandare a memoriei, microcontrolerele pot lucra i cu
memorii externe. Acest caz nu va fi abordat n aceast lucrare. Registrele de
control utilizate n controlul memoriilor fac parte din cadrul blocurilor: MMC
(Module Mapping Control pentru precizarea dimensiunilor memoriilor i a
spaiilor de adresare), MEBI (Multiplexed External Bus Interface pentru controlul
interfarii microcontrolerului cu memoriile externe) i S12FTSxxK (xx=12; 32;
64; 96; 128, de exemplu: S12FTS32K 32 Kbyte Flash Module pentru controlul
modulului de memorie Flash de 32kB)
3.2. Registrele de control
Dup cum am precizat anterior, registrele de control servesc la controlul
tuturor blocurilor microcontrolerelor. De exemplu, unitii centrale de procesare
CPU12 i sunt ataate urmtoarele registre: acumulatoarele de A i B, acumulatorul
D format prin concatenarea acumulatoarelor A i B, registrele index IX i IY,
indicatorul de stiv SP, numrtorul de programe PC, registrul indicator de condiii
CCR i registrul de paginare a memoriei PPAGE. Facem observaia c registrele A,
B, CCR i PPAGE sunt de 8 bii iar registrele D, IX, IY, SP i PC sunt de 16 bii.
Rolul registrelor de control va fi analizat n capitolele destinate analizei blocurilor
la care sunt ataate aceste registre.
Pentru blocul de registre de control se poate aloca un spaiu de memorie de
1kB sau 2kB. n ceea ce privete spaiul de adresare, acesta poate fi plasat oriunde
n domeniul 00000x7FFF n segmente de 2kB. Pentru microcontrolerele
BLOCUL DE MEMORIE
16
MC9S12C32, dimensiunea blocului de registre de control este de 1kB. Dup
resetare, acest bloc este plasat n spaiul de adresare 00x03FF.
3.3. Memoria RAM
Aceast memorie constituie memoria de lucru a microcontrolerului i
servete la stocarea temporar a operanzilor, a rezultatelor pariale sau finale ale
unor operaii aritmetice sau logice etc. Memoria este organizat pe octei, un octet
poate fi memorat la o adres par sau impar. Datele de 16 bii se memoreaz pe
octei n locaii succesive de memorie, octetul MSB se memoreaz la adresa
inferioar care poate fi par sau impar. Datele de 32 bii se memoreaz pe octei n
locaii succesive de memorie, octetul MSB se memoreaz la adresa inferioar care
poate fi par sau impar. Memoria stiv se organizeaz tot n memoria de date
RAM. Dimensiunea acesteia i spaiul de adresare se precizeaz n fiierele de
iniializare.
Pentru memoria RAM se pot aloca spaii de memorie ce pot avea
dimensiuni de 2kB, 4kB, 6kB, 8kB, 10kB, 12kB i 16kB. n ceea ce privete
spaiul de adresare, acesta poate fi plasat oriunde n domeniul 00000xFFFF n
segmente de 2kB, 4kB, 8kB i 16kB (n funcie de dimensiunea spaiului de
memorie alocat). Pentru microcontrolerele MC9S12C32, dimensiunea memoriei
RAM este de 2kB. Dup resetare, acest bloc este plasat n spaiul de adresare
0x08000x0FFF.
3.4. Memoria Flash
Memoria Flash este utilizat pentru memorarea programelor. Unitatea
central de procesare CPU12 poate accesa direct o capacitate de memorie de
programe intern Flash de 64 KB prin utilizarea adresrii pe 16 bii. n acest caz
adresele sunt generate de registrul PC. Pe de alt parte exist posibilitatea
extinderii acestei memorii prin paginarea memoriei, n blocuri de 16kB, ntr-o
fereastr predefinit (zona de adresare 0x80000xBFFF). Adresa paginii este
coninut n registrul de paginare PPAGE. Din acest registru se utilizeaz 6 bii i
deci se pot accesa 64 de pagini de 16kB adic n total 1MB de memorie Flash.
Memoria este organizat pe octei, un octet poate fi memorat la o adres par sau
impar. n cazul instruciunilor codificate pe mai muli octei, acetia se
memoreaz n locaii succesive, octetul MSB se memoreaz la adresa inferioar
care poate fi par sau impar.
Pentru microcontrolerele MC9S12C32, dimensiunea memoriei Flash este
de 32kB. Dup resetare, aceast memorie este plasat astfel: 16kB de memorie n
zona 0x40000x7FFF i 16kB n zona 0xC0000xFFFF. Aceast memorie se
poate terge numai pe blocuri de 512 octei. Structura blocului de memorie dup
resetare este indicat n figura 3.1. n legtur cu aceast figur, facem urmtoarele
observaii:
- Memoria Flash din zona de adresare 0x00000x7FFF este accesibil direct
sau nepaginat numai dac bitul MISC_ROMHM este egal cu 0
(MISC_ROMHM =0 este i valoarea de dup resetare);
3.4. Memoria Flash
17
- Toat memoria Flash poate fi vzut prin fereastra de paginare, inclusiv
zonele 0x40000x7FFF (pagina 62 sau 0x3E) i 0xC0000xFFFF (pagina
63 sau 0x3F);
- Zona de memorie 0xC0000xFFFF este totdeauna accesibil prin adresare
nepaginat deoarece la sfritul acestei zone de memorie se gsesc vectorii
de ntrerupere (zona 0xFF800xFFFF) i tot aici se nregistreaz diverse
informaii privind protecia memoriei Flash (zona 0xFF000xFF0F). La
sfritul zonei de memorie 0xC0000xFFFF se nregistreaz i programele
de depanare sau programele de tip Bootloader.

Registre de control 1kB
0x0000
0x03FF
Memoria RAM 2kB
0x0800
0x0FFF
0x0000
0x4000
0x7FFF
0x3FFF
0x8000
0xBFFF
0xC000
0xFFFF
Memoria Flash cu acces
nepaginat 16kB
(MISC_ROMHM=0)
Pagina 62 (0x3E)
Fereastra de paginare
Selecie Flash cu PPAGE
2*16kB
Paginile 62(0x3E) i
63 (0x3F)
Memoria Flash cu acces
nepaginat 16kB

Pagina 63 (0x3F)

0xFF00 Vectori de
ntrerupere 0xFFFF

Figura 3.1. Structura memoriei dup resetare.

n figura 3.2 este dat structura memoriei Flash de capacitate maxim,
adic 1MB. n legtur cu aceast figur, facem urmtoarele observaii:
- Memoria de programe poate fi n totalitate intern (maxim 1MB), n
totalitate extern (maxim 1MB) sau combinat;
- n cazul utilizrii memoriei de programe extern se utilizeaz: porturile A
i B pentru manipularea adreselor multiplexate cu datele, portul E pentru
generarea tactului i a altor semnale de control a memoriilor externe i
portul K (dac este disponibil) pentru completarea adreselor. n acest scop,
portul K va emite biii registrului PPAGE.
Microcontrolerele HCS12 nu sunt prevzute cu memorie de date de tip
EEPROM. n practic apar situaii cnd o astfel de memorie este necesar. Rolul
BLOCUL DE MEMORIE
18
memoriei de date EEPROM poate fi preluat de memoria Flash. Pentru memoria
EEPROM se pot aloca spaii de memorie de dimensiunile 0kB, 2kB, 4kB i 8kB.
De obicei memoria de date EEPROM ocup zonele de nceput ale memoriei Flash
din cel puin dou motive.

0x4000
0x7FFF
0x3FFF
0x8000
0xBFFF
0xC000
0xFFFF
Memoria Flash cu acces
nepaginat 16kB
(MISC_ROMHM =0)

Pagina 62 (0x3E)
Fereastra de paginare
Selecie cu PPAGE
64*16kB
Paginile 0 (0x00)
63 (0x3F)
Memoria Flash cu acces
nepaginat 16kB

Pagina 63 (0x3F)

0xFF00 Vectori de
ntrerupere 0xFFFF
0x0000
Memoria Flash cu acces
nepaginat 16kB
(MISC_ROMHM =0)

Pagina 61 (0x3D)

Figura 3.2. Structura memoriei Flash de capacitate maxim 1MB.

Zona final a memoriei Flash nu se preteaz a fi utilizat pentru emularea
memoriei de date EEPROM deoarece n aceast zon se gsesc vectorii de
ntrerupere i programele de depanare sau Bootloader-ele. n al doilea rnd mici
zone de la nceputul memoriei Flash pot fi lsate neprotejate iar restul memoriei
rmnnd protejat contra tergerilor sau scrierilor accidentale. n acele mici zone se
va implementa memoria de date EEPROM.
n cazul microcontrolerelor MC9S12C32, se pot proteja zone de memorie
Flash de 512B, 1kB, 2kB i 4kB de la nceputul memoriei (adresa 0x4000) i n
ordinea cresctoare a adreselor. La fel se pot proteja zone de memorie Flash de
2kB, 4kB, 8kB i 16kB de la sfritul memoriei (adresa 0xFFFFF) i n ordinea
descresctoare a adreselor. n figura 3.3 este dat cazul n care zona de memorie
Flash de 1kB cuprins ntre adresele 0x40000x43FF este neprotejat (i deci aici
va fi implementat memoria de date EEPROM) iar restul memoriei Flash este
protejat.

3.4. Memoria Flash
19
0x4000
0x7FFF
0x5000
0x8000
0xC000




Protecie
512B, 1kB,
2kB, 4kB
Protecie
2B, 4kB,
8kB, 16kB
0xE000
0xF000
0xF800
0xFFFF
0x4800
0x4400
0x4200
Zona neprotejat 1kB:
0x40000x43FF
Programare:
FPROT_FPOPEN =0
FPROT_FPHDIS =1
FPROT_FPLDIS =0
FPROT_FPLS1 =0
FPROT_FPLS0 =1

Figura 3.3. Implementarea memoriei de date EEPROM de 1kB n zona neprotejat
(0x40000x43FF).

Note bibliografice
[1] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 3 Module
Mapping Control (MMCV4) Block Description), Rev 01.24, 05/2010, Freescale
Semiconductors.
[2] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 4 Multiplexed
External Bus Interface (MEBIV3)), Rev 01.24, 05/2010, Freescale
Semiconductors.
[3] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 18 32 Kbyte
Flash Module (S12FTS32KV1)), Rev 01.24, 05/2010, Freescale
Semiconductors.

Das könnte Ihnen auch gefallen