Moduł wspierający diagnostykę i sprzętowe debugowanie 1
Diagnostyka mikroprocesorowego systemu czasu rzeczywistego Programowe emulatory procesorów, Sprzętowe emulatory procesorów, Debugery programowe, Debugery sprzętowe. Sprzętowy emulator procesora (in circuit emulator) Wady emulatorów sprzętowych: Wysoki koszt złącza oraz układu emulatora, ograniczenia maksymalnej częstotliwości pracy systemu mikroprocesorowego (ograniczenie długości magistral, crosstalk, zakłócenia, itp). 2
Debuger sprzętowy 3
4
5
6
Sprzętowy moduł diagnostyczny BDM (1) Interfejs BDM Zalety modułu diagnostycznego BDM: Niski koszt interfejsu łączącego diagnozowany układ z komputerem PC (port równoległy, USB), brak ograniczeń związanych z zakłóceniami praca z maksymalną częstotliwością, możliwość dostępu do prawie wszystkich rejestrów procesora oraz pamięci, możliwość warunkowego przerwania programu (pułapki). 7
Sprzętowy moduł diagnostyczny BDM (2) Manual BreakPoint (HALT) PST = 0xF Szeregowy kanał diagnostyczny BDM Diagnostyka w czasie rzeczywistym DDATA zawartość rejestru RBS (Reg. Breakpoint Status), adres operandu lub operand instrukcji, instrukcja WDDATA. Linie DDATA są aktualizowane na narastającym zboczu zegara. PST stan procesora, wykonywana operacja. Linie PST są aktualizowane na narastającym zboczu zegara. 8
Sprzętowy moduł diagnostyczny BDM (3) Śledzenie programu w czasie rzeczywistym (Realtime Trace Support). 8-bitowy interfejs umożliwia dynamiczne śledzenie wykonywanego przez procesor programu (execution path). Kanał diagnostyczny BDM (Background debug mode). Szeregowy interfejs BDM umożliwia debugowanie wykonywanego programu na niskim poziomie. Zatrzymanie procesora umożliwia dostęp do większości rejestrów oraz innych zasobów procesora. Diagnostyka w czasie rzeczywistym (Real-time debug mode). Dostęp do zasobów procesora w czasie rzeczywistym poprzez 8-bitową magistralę, rozbudowany system pułapek sprzętowych. 9
Diagnostyczny interfejs równoległy 10
Szeregowy interfejs BDM 11
Real-time Trace Support PST stan procesora, wykonywana operacja. Linie PST są aktualizowane na zboczu zegara. DDATA zawartość rejestru RBS (Reg. Breakpoint Status), adres operandu lub operand instrukcji, instrukcja WDDATA. Linie DDATA są aktualizowane na zboczu zegara. DDATA 4-bit ColdFire PST 4-bit Analizator (obraz programu) CLKOUT Dane wysyłane są w postaci czterobitowej począwszy od najmniej znaczącego bitu. Możliwe transfery: 4, 8, 16, 32 bity. LSB...MSB 12
Linie PST stan procesora (1) 13
Linie PST stan procesora (2) 14
Rejestry sterujące modułem diagnostycznym 15
Rejestr konfiguracyjny/statusowy CSR (1) Zapis rejestru modułu diagnostycznego lea wdebug data1, %a0 (%a0) data0:.byte align 4 data1:.long data2:.long 0 test.asm: Assembler messages: test.asm:115: Error: unaligned opcodes detected in executable segment 2C80.ABCD EF01.0000 16
WDEBUG.L <ea>y (1) Instrukcja pobiera dwa długie słowa umieszczone w pamięci pod adresem <ea> ((Ay), (d16, Ay)) i konfiguruje wskazany rejestr Drc (Debug Control Register). Instrukcja synchronizuje potok. Instrukcja musi zostać wyrównana do granicy 4 bajtów (4 słowa). Umożliwia to wykonanie rozkazów modułu BDM bezpośrednio z procesora ColdFire. 17
WDEBUG.L <ea>y (2) 18
Rejestr konfiguracyjny/statusowy CSR (2) 19
Rejestr konfiguracyjny/statusowy CSR (3) 20
Przykład diagnostyki dla instrukcji jmp (%A0) W przypadku instrukcji JMP, JSR adres efektywny <ea>x jest wyświetlany wyłącznie podczas użycia jednego z wymienionych trybów adresowania (An), (d16,an), (d8,an,xi), (d8,pc,xi). 21
Address Attribute Trigger Register AATR 22
Address Breakpoint Registers ABLR, ABHR Rejestry definiują obszary pamięci, które mogą zostać wykorzystane do zgłoszenia pułapek sprzętowych. Konfiguracja pułapek ustalana jest w rejestrze TDR (Trigger Definition Register). ABLR (low) ABHR (high) 23
Data Breakpoint/Mask Registers DBR/DBMR Zawartość rejestru DBR porównywana jest z 32-bitową dana odczytaną z głównej magistrali procesora. Konfiguracja zgłaszanych pułapek znajduje się w rejestrze TDR. DBR DBMR 24
Program Counter Breakpoint/Mask Registers PBR, PBMR Adres pobieranej instrukcji (PC) porównywany jest z zawartością rejestru PBR. Konfiguracja zgłaszanych pułapek znajduje się w rejestrze TDR PBR PBMR 25
Trigger Definition Register TDR (1) Rejestr umożliwia konfigurację sprzętowych pułapek ABHR/ABLR/AATR, PBR/PBMR, and DBR/DBMR. 26
Trigger Definition Register TDR (2) 27
Debugowanie w czasie rzeczywistym Podczas debugowania aplikacji pracujących w czasie rzeczywistym procesor musi nieustannie wykonywać program. Nie można zatrzymać pracy procesora (komenda HALT), jednak pracujący system może tolerować niewielkie opóźnienia. Daje to możliwość wykorzystania pułapek sprzętowych i przesłania kluczowych informacji (PULSE / WDDATA / BDM / PORT). Moduł diagnostycznych procesorów ColdFire obsługuje trzy rodzaje pułapek: pułapka wyzwalana zawartością PC (bity maskowalne, pułapka obsługiwana podobnie jak przerwanie), pułapka wyzwalana adresem operandu, pułapka wyzwalana przetwarzaną daną (bity maskowalne). Przechwycona pułapka powoduje wykonanie polecenia ustalonego w rejestrze TDR. Pułapki mogą generować przerwanie (wyjątek 12) o poziomie wyższym niż przerwania niemaskowalne. W czasie obsługi wyjątku pozostałe przerwania są ignorowane. 28
Przykładowe kody PST/DDATA 29
Background Debug Mode (BDM) 30
Background Debug Mode (BDM) Cykle synchronizacyjne Szeregowa transmisja Full-Duplex Maksymalna częstotliwość zegara DSCLK = 1/5 x CLKOUT Protokół umożliwia przesyłanie pakietów o długości 17 bitów (16 bitów danych + bit statusu/sterujący) Transmisja odbywa się na narastającym zboczu zegara CLKOUT (iloczyn logiczny CLKOUT z DSCLK) Najpierw przesyłany jest bit msb, lsb na końcu 31
Struktura pakietów BDM (1) Pakiet odbiorczy (debug module -> procesor) Pakiet nadawczy (procesor -> debug module) 32
Struktura pakietów BDM (2) 33
Rozkazy interfejsu BDM 34
Transmisja rozkazu przez interfejs BDM 17-bitowy rozkaz Oczekiwanie na zakończenie operacji odczyt 16-bit S=1, Data=0x0001 Sukces/Niepowodzenie 17-bitowa odpowiedź 35
RAREG / RDREG RAREG/RDREG - odczytuje 32-bitowy rejestr danych lub adresowy Odczyt 32-bit 36
WAREG / WDREG WAREG/WDREG zapisuje 32-bitowy rejestr danych lub adresowy Zapis 32-bit 37
Resume execution (GO) Wznawia pracę procesora zatrzymanego instrukcją HALT. 38
Read Control Register RCREG Instrukcja pozwala odczytać rejestr specjalny procesora ColdFire. 39
Write Control Register WCREG Instrukcja pozwala zapisać rejestr specjalny procesora ColdFire (podobnie jak MOVEC). 40
Read Debug Module Register RDMREG Instrukcja pozwala odczytać rejestr modułu diagnostycznego CSR (Debug Register). Odczyt powoduje wyzerowanie flag CSR[FOF, TRG, HALT, BRKT] oraz bitu statusowego CSR[BSTAT]. 41
Write Debug Module Register WDMREG Instrukcja pozwala zapisać rejestr modułu diagnostycznego DRc (Debug Register). 42
Testowanie połączeń elektrycznych 43
Interfejs diagnostyczny JTAG (1) Interfejs JTAG zgodny ze standardem IEEE1149.1 przeznaczony jest do testowania połączeń elektrycznych pomiędzy procesorem, a obwodem drukowanym. 44
Interfejs diagnostyczny JTAG (2) 45
Automat stanowy sterujący kontrolerem TAP Reset lub TMS > '11111' data register instruction register 46
Komendy JTAG 47