Migracje pomiędzy miniaturowymi mikrokontrolerami z rodziny HCS08, część 2

 

Następna część artykułu jest dostępna tu.
Poprzednia część artykułu jest dostępna tu.

Jednostka centralna (CPU)

Podstawową różnicą między omawianymi mikrokontrolerami jest to, że architektura RS08 ma zredukowany, w stosunku do S08, zestaw rozkazów, 14-bitową magistralę adresową (S08 16-bitową) oraz mniejszy zestaw rejestrów rdzenia (rysunek 4). Środowisko CodeWarrior potrafi jednak skompilować większość instrukcji S08 do pseudoinstrukcji. Opublikowany przez Freescale dokument „Getting Started with RS08” (nota aplikacyjna numer AN3266) zawiera wiele informacji użytecznych jeśli przewidywana jest zmiana z S08 na RS08. Można ją znaleźć pod adresem:
http://www.freescale.com/files/microcontrollers/doc/ app_note/AN2497.pdf?srch=1.

 

 

Rys. 4. 
Modele programowania architektur S08 i RS08

Rys. 4. Modele programowania architektur S08 i RS08

 

 

Jeśli rozwój projektu wymusza zmianę mikrokontrolera z MC9RS08KA2 na jeden z układów S08, trzeba być świadomym, że instrukcje SHA i SLA nie skompilują się. Instrukcji tych można jednak uniknąć, gdyż architektura S08 jest wyposażona w stos. Projektant może więc użyć pełnego zestawu instrukcji S08, żeby wykorzystanie kodu było efektywniejsze. Można też usunąć wszystkie instrukcje RS08 związane ze stronicowaniem.

Tryby adresowania

Mikrokontroler MC9RS08KA2 nie obsługuje adresowania rozszerzonego, stosowego, ani indeksowego z przesunięciem, które są obsługiwane przez układy S08. Unikanie tych trybów adresowania przy pracy z układami S08 umożliwia płynniejsze i łatwiejsze przejście na RS08, ale nawet jeśli nie da się ich uniknąć, to istnieją sposoby obejścia problemów przy migracji. Dodawanie w tych trybach adresowania (w mikrokontrolerach S08) może pozwolić na efektywniejsze wykorzystanie CPU.
Adresowanie rozszerzone można odtworzyć na mikrokontrolerach RS08 przez użycie stronicowania:

HCS08 —   LDA rozszerzone

     RS08 —    MOV#HIGH_6_13(rozszerzone),PAGESEL

                LDA MAP_ADDR_6(rozszerzone)

Z kolei żeby odtworzyć stosowy tryb adresowania, stos można emulować poprzez dodatkowy licznik programu typu shadow (shadow program counter) i wykorzystanie instrukcji SHA i SLA.
To samo można osiągnąć używając adresowania pośredniego zamiast indeksowego z przesunięciem (por. rysunek 5).

 

 

Rys. 5. 
Adresowanie indeksowe w mikrokontrolerach HC(S)08 i RS08

Rys. 5. Adresowanie indeksowe w mikrokontrolerach HC(S)08 i RS08

 

 

Nieobsługiwane instrukcje

W tabeli 2 zestawiono instrukcje obsługiwane w architekturze S08, a nieobsługiwane przez mikrokontrolery z rdzeniem RS08.

 

Tab. 2. Nieobsługiwane instrukcje

Typ instrukcji Instrukcje
Przerwania BIL, BIH, BMC, BMS, CLI, SEI, RTI, SWI
BCD BHCC, BHCS, DAA, NSA
Matematyczne ASR, DIV, MUL
U2 BLT, BMI, BGE, BGT, BLE, BPL, NEG
Warunkowe TAP, TPA

 

Uruchamianie i debugowanie programu

Mikrokontrolery MC9S08QD4 i MC9RS08KA2 nie mają wbudowanego sprzętowego modułu DBG. Oznacza to, że te układy mają tylko 21 komend (MC9S08QG ma ich 30) i tylko jeden breakpoint sprzętowy. Szczegółowe informacje dotyczące różnic w debugowaniu przy użyciu modułu DBG i bez niego można znaleźć w opublikowanym przez Freescale dokumencie „HCS08/RS08 Background Debug Mode versus HC08 Monitor Mode” (nota aplikacyjna numer AN2497) dostępnym pod adresem:
http://www.freescale.com/files/microcontrollers/doc/ app_note/AN2497.pdf?srch=1.

Zasilanie

Napięcie zasilania jest jednym z kluczowych czynników przy wyborze mikrokontrolera spośród opisanych układów. Wszystkie działają przy napięciu zasilania 3V, przy czym MC9S08QG8 i MC9RS08KA2 mogą pracować przy napięciu obniżonym do 2V, a MC9S08QD4 i MC9RS08KA2 przy napięciu podniesionym do 5V.

IRQ

Mikrokontrolery MC9S08QG8 i MC9S08QD4 mają wyprowadzenie IRQ (interrupt request), które pozwala na zewnętrzne przerwania i ich obsługę poprzez IRQ status oraz rejestr sterujący IRQSC.
Rdzeń RS08 ma zredukowane możliwości obsługi przerwań, gdyż nie posiada mechanizmu lookup vector, stosu i rejestru indeksowego. W związku z tym, nie jest też wyposażony w obsługę IRQ i przerwania należy obsługiwać poprzez programowe odpytywanie urządzeń. Techniki odpytywania są opisane w opublikowanym przez Freescale dokumencie „RS08 Peripheral Module Quick Reference” (numer RS08QRUG), dostępnym pod adresem: http://www.freescale.com/files/microcontrollers/ doc/user_guide/RS08QRUG.pdf?srch=1. Przy migracji z MC9RS08KA2 na mikrokontroler z rdzeniem S08 wszystkie odwołania do systemowego rejestru oczekujących przerwań (system interrupts pending register, SIP1), używanego przy odpytywaniu, muszą zostać przepisane tak, by odnosiły się do odpowiednich znaczników przerwań w zestawie rejestrów danego modułu i odwrotnie.

O autorze