You are hereIn Circuit Spy Orders Device
In Circuit Spy Orders Device
dev_orders_list
Funkcja zwraca listę rozkazów zaimplementowanych w aktualnie wgranym do urządzenia oprogramowaniu.
Opis rozkazów
dev_open_serial
Otwiera kanał komunikacyjny pomiędzy Serwerem a urządzeniem In Circuit Spy. Wywołanie tej funkcji jest niezbędne aby rozpocząć pracę z urządzeniem.
Opis rozkazów
Rozkazy bazowe urządzenia
Rozkazy bazowe urządzenia In Circuit Spy to zestaw funkcji możliwych do zrealizowania gdy urządzenie pracuje jako Bootloader. Tryb ten jest stanem podstawowym procesora urządzenia i jest niczym BIOS w komputerach PC. Ogólnie rozkazy można podzielić na dwie kategorie
- Rozkazy obowiązkowe
- Rozkazy dodatkowe
Różnica pomiędzy grupami polega na tym, że Rozkazy obowiązkowe muszą być zaimplementowane w każdym oprogramowaniu dostarczanym do danej konfiguracji. Natomiast Rozkazy dodatkowe są opcjonalne, co nie oznacza, że nie muszą one występować. Ich obecność jest obowiązkowa ponieważ realizują one funkcje wymagane dla danej konfiguracji. Opcjonalność w tym przypadku oznacza, że każda konfiguracja może mieć ich inny zestaw.
Rozkazy podstawowe to:
- dev_software_version Zwraca informacje o typie i wersji oprogramowania urządzenia In Circuit Spy
- dev_orders_list Zwraca listę wszystkich rozkazów wspieranych przez aktywne oprogramowanie
- dev_jump_to_address Umożliwia zmianę aktualnie wykonywanego programu
- dev_bootloader_init_routine Ustawia aktywność lub jej brak procedury resetującej system w oprogramowaniu Bootloader
Jak łatwo jest zauważyć Rozkazy obowiązkowe umożliwiają jedynie identyfikację aktywnego oprogramowania i jego zmianę poprzez "skok procesora" do innego obszaru pamięci.
W celu zarządzania przez Bootloader podstawowymi zasobami procesora dostarczono zestaw rozkazów umożliwiający skonfigurowanie i użycie prawie każdego z zasobów procesora. Do rozkazów tych należą:
- dev_hardware_version Zwraca informacje o konfiguracji sprzętowej urządzenia In Circuit Spy
- dev_list Dostarcza listę urządzeń wpiętych do komputera PC
- dev_open_serial Otwiera kanał komunikacyjny dla danego urządzenia
- dev_close_serial Zamyka kanał komunikacyjny dla aktywnego połączenia z urządzeniem
- dev_wr_rd_register Umożliwia zapis/odczyt do/z rejestru procesora
- dev_wr_rd_buffer Kopiuje dane pomiędzy przestrzenią adresową procesora a buforem systemowym serwera
- dev_crc_buffer Wylicza sumę kontrolną CRC dla wskazanego obszaru adresowego procesora
- dev_config_hardware Umożliwia załadowanie konfiguracji do układu FPGA urządzenia In Circuit Spy
- dev_wr_rd_flash Umożliwia pobranie i wgranie danych z i do wbudowanej w urządzenie pamięci FLASH
- dev_ext_clock Ustawia częstotliwość wyjściową programowalnego układu zegarowego urządzenia
- dev_transmission_state Zwraca informacje o asynchronicznej transmisji danych pomiędzy urządzeniem a Serwerem
- dev_rtc Konfiguruje Zegar Czasu Rzeczywistego (RTC) urządzenia
- dev_watchdog Uaktywnia funkcję Watchdog procesora
- dev_iap_command Wykonuje komendy IAP procesora
Uwaga. Dzięki Rozkazom Obowiązkowym możliwe jest użycie rozkazów dostępnych w innych konfiguracjach urządzenia In Circuit Spy. Wystarczy tylko, gdy nie jest się w aktywnej aplikacji Bootloadera, "przeskoczyć" do niej, następnie wgrać wymagane oprogramowanie, wykonać wymaganą zadaniem funkcję, "skoczyć" do Bootloadera i jeżeli jest to konieczne, wgrać nową wersję oprogramowania i następnie opcjonalnie "skoczyć" do niej.
dev_rtc
Urządzenie ICS oparto o procesor ARM LPC2148. Jednym z wielu jego peryferii jest zegar czasu rzeczywistego zwany RTC. Aby wykorzystać tą funkcję procesora stworzono rozkaz dev_rtc, którego zadaniem jest ustawianie i odczytywanie wartość przetrzymywanych przez RTC. Urządzenie wyposażono w układ podtrzymania zasilania modułu zegarowego. Zasilanie to oparto na kondensatorze 0,22F, co umożliwia na pracę RTC bez zewnętrznego zasilania przez co najmniej jeden dzień.
Opis rozkazów
dev_wr_rd_flash
W skład urządzenia In Circuit Spy wchodzi szeregowa pamięć FLASH AT45DB081. Aby wykorzystać jej zasoby powstała funkcja dev_wr_rd_flash, która umożliwia wykonanie dwóch podstawowych operacji na tej pamięci. Operacje te to dwukierunkowy przesył danych pomiędzy pamięcią a buforami systemowymi Serwera. Pamięć FLASH nie jest na ogół wykorzystywana. Jej użycie uzasadnione jest w sytuacjach gdy dane takie jak program procesora, konfiguracje układu FPGA lub inne dane użytkownik chce przechowywać w pamięci urządzenia ICS.
Ogólne informacje dotyczące pamięci FLASH urządzenia ICS
-
Pamięć AT45DB081 zawiera 4096 stron (page) o rozmiarze 264 bajty każda. Strona składa się z dwóch części:
<> przestrzeni danych 256 bajtów
<> przestrzeni dodatkowej 8 bajtów
W urządzeniu "ICS" pomija się przestrzeń dodatkową pamięci. Przez to zmniejsza się nieznacznie rozmiar dostępnej pamięci jednak dużo łatwiej jest zarządzać użytkownikowi operacjami zapisu/odczytu dla tej pamięci. -
Rozmiar Systemowego Bufora Serwera musi obejmować wartość określoną przez parametry start_page i end_page. Rozmiar bufora można obliczyć na podstawie wzoru:
rozmiar = (end_page - start_page + 1) * 256 Aby jednak uprościć tą zależność warto zdefiniować rozmiar Systemowego Bufora Serwera na wartość nie mniejszą niż rozmiaru pamięci czyli 4096*256 = 1048576 bajtów - Uwaga Ilość operacji zapisu jest ograniczona. Dlatego też należy używać tej operacji ostrożnie. Szczegóły w dokumentacji układu na stronach producenta
- Przy dużej ilość danych do zapisu/odczytu czas trwania operacji zapisu wynosi w przybliżeniu minutę. Operacji nie można przerwać bez szkody dla przeprowadzanej transakcji
- Wywołanie rozkazu wymaga połączenia z serwerem i otwartego kanału komunikacyjnego z urządzeniem
- Zapis danych pod niewłaściwy adres najczęściej powoduje krytyczny wyjątek co "zawiesza" procesor. Należy więc zachować ostrożność przy używaniu tego rozkazu
- Poprawna operacja zapisu/odczytu zwraca również informację o prędkości wykonanej operacji
Opis rozkazów
dev_ext_clock
W skład urządzenia In Circuit Spy wchodzi programowalny zegar ICS307-2. Jest to układ dostarczający sygnał zegarowy o szerokim zakresie częstotliwości z przedziału 6 do 200MHz z nieliniową rozdzielczością zależną w przypadku urządzenia ICS32sx, aż od 3 zmiennych. Szczegółowe dane układu można znaleźć w dokumentacji układu scalonego lub na stronach producenta. W celu ułatwienia konfiguracji układu, na stronie producenta, dostępny jest kalkulator parametrów układu online, który po wprowadzeniu właściwych danych, generuje parametr konfiguracyjny używany w rozkazie dev_ext_clock.
W celu obliczenia kodu częstotliwości wymagane są informacje:
- Clk2 Output REF, dla większości konfiguracji urządzenia ICS
- Output Duty Cycle Configuration 1 (CMOS)
- Crystal Load Capacitance "10"
- Input Frequency 10MHz
- Output Lowest Jitter, dla większości konfiguracji urządzenia ICS
Opis rozkazów
dev_watchdog
Funkcja uaktywnia moduł Watchdog procesora LPC2148 urządzenia ICS
Opis rozkazów
dev_transmission_state
Funkcja ta stosowana jest w przypadku używania transmisji asynchronicznej pomiędzy urządzeniem ICS a Serwerem. Informuje o przebiegu transmisji i jej parametrach.
Opis rozkazów
dev_wr_rd_buffer
Funkcja umożliwia wykonanie dwóch podstawowych operacji na obszarach pamięci procesora LPC2148 urządzenia In Circuit Spy. Operacje te to dwukierunkowy przesył danych pomiędzy pamięcią urządzenia a buforami systemowymi Serwera. Rozkaz ten ma dostęp do całej przestrzeni adresowej procesora, jednak w praktyce transfery danych obejmują jedynie pamięć RAM i (w trybie odczytu) pamięć programu.
Opis rozkazów
dev_bootloader_init_routine
Używanie rozkazu dev_jump_to_address w przypadku skoku do bootloadera może niekiedy wymagać zablokowania procedury resetującej ustawienia procesora wywoływanej automatycznie przy starcie systemu. Jest to szczególnie przydatne gdy użytkownik chce wykorzystać jeden z rozkazów dostępnych w bootloaderze a niedostępny w bieżącej aplikacji urządzenia ICS. W tym celu stworzono funkcję dev_bootloader_init_routine której zadaniem jest zarządzanie funkcją resetującą domyślnie wywoływaną przy resecie systemu. Możliwe dwie konfiguracje procedury resetującej to:
- enabled Procedura resetująca zostanie wykonana
- disabled Procedura resetująca zostanie pominięta
Ogólne informacje dotyczące rozkazu dev_bootloader_init_routine
- Wywołanie rozkazu wymaga połączenia z serwerem i otwartego kanału komunikacyjnego z urządzeniem
-
Rozkaz na ogół dostępny jest tylko w bootloaderze. Skok do bootloadera z zablokowaniem wykonania się procedury resetującej musi byc przewidziane jeszcze przy aktywnym programie bootloadera. To ograniczenie jest wymuszone przyjętą w urządzeniu ICS konfiguracją zasobów urządzenia. Założono, że adresy pamięci RAM
0x40007FD8 .. 0x40007FFF
są zajęte przez bootloader i inne aplikacje dostarczone z pakietem oprogramowania. W tym przypadku, dla rozkazu dev_bootloader_init_routine zajęte zostało 8 bajtów pamięci o adresach
0x40007FD8 .. 0x40007FDF
W przypadku gdy w tym miejscu bootloader wykryje tablicę znaków
'I', 'C', 'S', 0x20, 0xAA, 0x00, 0xff, 0x55
omija procedurę resetującą system. Dla uściślenia 'I' znajduje się pod adresem 0x40007FD8, 'C' pod adresem 0x40007FD9 itd - Skok do bootloadera odpowiada skokowi pod adres 0x00000000
- Wywołanie rozkazu reset blokuje wykonanie się procedury resetującej jednorazowo
Opis rozkazów