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.

  Rozkazy  
  • Brak dodatkowych rozkazów

Opis rozkazów

  Podstawowa funkcjonalność  

Składnia

ics_client.exe --dev_orders_list IP TCP
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera

Poprawna odpowiedź

O. number
I. comment
O. Order_1
O. Order_2
...
  • "O." Identyfikator poprawnego wykonania rozkazu
  • number Ilość dostępnych rozkazów
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika
  • "O." Identyfikator poprawnego wykonania rozkazu
  • Order_1 Nazwa pierwszego rozkazu
  • "O." Identyfikator poprawnego wykonania rozkazu
  • Order_2 Nazwa drugiego rozkazu
  • ... Itd. Ilość wpisów zależy od zwróconego parametru number

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Wywołanie rozkazu wymaga połączenia z serwerem i otwartego kanału komunikacyjnego z urządzeniem

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.

  Rozkazy  
  • Brak dodatkowych rozkazów

Opis rozkazów

  Podstawowa funkcjonalność  

Składnia

ics_client.exe --dev_open_serial IP TCP serial_number
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • serial_number Numer seryjny urządzenia In Circuit Spy. Numer ten odczytać można za pomocą rozkazu dev_list

Poprawna odpowiedź

O. code
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • code Kod wykonania rozkazu. Powinien być '0'
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Wywołanie rozkazu wymaga połączenia z serwerem

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ń.

  Rozkazy  
  • --set Synchronizuje czas urządzenia z czasem Serwera. Rozkaz nie wymaga przekazywania składowych czasu jako parametrów. Całość wymaga jedynie wywołanie rozkazu set
  • --get Pobranie czasu urządzenia ICS

Opis rozkazów

  --set, --get  

Składnia

ics_client.exe --dev_rtc IP TCP --xxx
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --xxx Słowo klucz. Odpowiednio --set lub --get

Poprawna odpowiedź

0. year year_val
0. mon mon_val mon_name
0. mday mday_val
0. hour hour_val
0. min min_val
0. sec sec_val
0. yday yday_val
0. wday wday_val wday_name
I. I. year - Years
I. mon - Months since January - [1..12]
I. mday - Day of the month - [1..31]
I. hour - Hours since midnight - [0..23]
I. min - Minutes after the hour - [0..59]
I. sec - Seconds after the minute - [0..59]
I. yday - Day of the year - [1..366]
I. wday - Days since Sunday - [0..6]

   Powtarzające się elementy odpowiedzi:

  • "I. xxx yyy" Identyfikator komentarza wraz z słowem klucz i właściwym komentarzem

   Pozostałe elementy odpowiedzi. Każdy wiersz składa się z trzech lub czterech elementów: identyfikatora poprawnego wykonania rozkazu, słowa klucz, wartości i opcjonalnie nazwy

  • 0. year year_val Słowo klucz i wartość liczbowa wyrażona w latach
  • 0. mon mon_val mon_name Na odpowiedź składa się identyfikator, słowo klucz, wartość liczbowa miesiąca i nazwa miesiąca. Wartość liczbowa przyjmuje wartości z zakresu 1..12
  • 0. mday mday_val Identyfikator, słowo klucz i wartość liczbowa określająca dzień miesiąca. Przyjmuje wartości z zakresu 1..31
  • 0. hour hour_val Identyfikator, słowo klucz i wartość liczbowa określająca godzinę. Przyjmuje wartości z zakresu 0..23
  • 0. min min_val Identyfikator, słowo klucz i wartość liczbowa określająca minutę. Przyjmuje wartości z zakresu 0..59
  • 0. sec sec_val Identyfikator, słowo klucz i wartość liczbowa określająca sekundę. Przyjmuje wartości z zakresu 0..59
  • 0. yday yday_val Identyfikator, słowo klucz i wartość liczbowa określająca dzień roku. Przyjmuje wartości z zakresu 1..366
  • 0. wday wday_val wday_name Identyfikator, słowo klucz, wartość liczbowa dnia tygodnia i nazwa dnia tygodnia. Wartość liczbowa przyjmuje wartości z zakresu 0..6. Wartość '0' oznacza niedzielę

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Wywołanie rozkazu wymaga połączenia z serwerem i otwartego kanału komunikacyjnego z urządzeniem

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

  Rozkazy  
  • --wr_s Zapis danych z bufora systemowego Serwera do pamięci FLASH urządzenia
  • --rd_s Odczyt danych z pamięci FLASH urządzenia do bufora systemowego Serwera

Opis rozkazów

  --wr_s  

Składnia

ics_client.exe --dev_wr_rd_flash IP TCP --wr_s sys_buf sys_adr start_page end_page
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --wr_s Słowo klucz
  • sys_buf Numer bufora systemowego Serwera. Numerowanie rozpoczyna się od '0'
  • sys_adr Adres w systemowym buforze Serwera od którego rozpocznie się pobieranie danych zapisywanych w pamięci FLASH
  • start_page Numer strony od której rozpocznie się operacja zapisu
  • end_page Numer strony (włącznie) do której przeprowadzona zostanie operacja zapisu

Poprawna odpowiedź

O. code
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • code Kod wykonania rozkazu. Powinien być '0'
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Patrz uwagi ogólne
  --rd_s  

Składnia

ics_client.exe --dev_wr_rd_flash IP TCP --rd_s sys_buf sys_adr start_page end_page
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --rd_s Słowo klucz
  • sys_buf Numer bufora systemowego Serwera. Numerowanie rozpoczyna się od '0'
  • sys_adr Adres w Systemowym Buforze Serwera pod który rozpocznie się zapis danych z pamięci FLASH
  • start_page Numer strony od której rozpocznie się operacja odczytu
  • end_page Numer strony (włącznie) do której przeprowadzona zostanie operacja odczytu

Poprawna odpowiedź

O. code
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • code Kod wykonania rozkazu. Powinien być '0'
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Patrz uwagi ogólne

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
  Rozkazy  
  • Brak dodatkowych rozkazów

Opis rozkazów

  Podstawowa funkcjonalność  

Składnia

ics_client.exe --dev_ext_clock IP TCP --ctrl_word
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --ctrl_word Słowo klucz, ustawiające parametry pracy zegara

Poprawna odpowiedź

O. ctrl_word/> I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • ctrl_word Wartość słowa kontrolnego podanego jako parametr wywołania rozkazu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Wywołanie rozkazu wymaga połączenia z serwerem i otwartego kanału komunikacyjnego z urządzeniem

  • Format parametru przekazywanego do funkcji jest identyczny z wartością generowaną w kalulatorze na stronie producenta. W celu weryfikacji metody obliczonej na podstawie dokumentacji układu ICS307-02 przestawiony zostanie przykład.
    Dla parametrów układu scalonego znajdujących się we wstępie tego pliku pomocy oraz dla zegaru wyjściowego 200MHz słowo konfiguracyjne wynosi:
    0xa11a01
    Binarnie przedstawiona wartość to: 101000010001101000000001
  • UWAGA W konfiguracjach dostarczanych z pakietem dołożono wszelkich starań aby dowolny sygnał generowany wewnątrz urządzenia nie wpływał negatywnie na urządzenia zewnętrzne. Podejście to zostało wymuszone normami lecz przede wszystkim realną potrzebą niewpływania urządzenia ICS na zewnętrzne środowisko. Jednak, ze względu na uniwersalność zastosowanych rozwiązań, istnieje wiele sposobów aby użytkownik wyprowadził sygnał zegarowy (zmodyfikowany lub bezpośrednio) na linie IO urządzenia ICS. W wyniku tego, po podpięciu anteny lub tylko przewodu pełniącego rolę anteny, urządzenie ICS będzie nadawało sygnał radiowy o mocy wystarczającej do zakłócenia pracy odbiorników radiowo-telewizyjnych w najbliższym otoczeniu.

dev_watchdog

    Funkcja uaktywnia moduł Watchdog procesora LPC2148 urządzenia ICS

  Rozkazy  
  • Brak dodatkowych rozkazów

Opis rozkazów

  Podstawowa funkcjonalność  

Składnia

ics_client.exe --dev_watchdog IP TCP value
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • value wartość wprowadzana w procesorze LPC2148 do rejestru WDTC. Rejestr ten znajduje się pod adresem 0xE0000004

Poprawna odpowiedź

O. value
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • value Parametr przekazany przez użytkownika
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Uaktywnienie modułu watchdog wykonuje się przy pierwszym wywołaniu rozkazu

  • Wprowadzenie wartości '0' jest równoważne z wykonaniem resetu procesora LPC2148. Jest to więc jedna z metod wykonania pełnego resetu procesora urządzenia

  • Zależność pomiędzy wprowadzaną wartością a czasem przepełnienia licznika watchdog znajduje się w dokumentacji procesora. Procesor w większości przypadków pracuje z maksymalną dopuszczalną częstotliwością pracy rdzenia (60MHz) i peryferii. Pomimo tego wartość parametru warto dobrać eksperymentalnie

  • Wywołanie rozkazu wymaga połączenia z serwerem i otwartego kanału komunikacyjnego z urządzeniem

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.

  Rozkazy  
  • --progress Zwraca informację o stanie transmisji trwającej i zakończonej

Opis rozkazów

  --progress  

Składnia

ics_client.exe --dev_transmission_state IP TCP --progress
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --progress Słowo klucz

Poprawna odpowiedź

O. act state wr_progress rd_progress thread_error device_error speed
I. Transmission In Progress: act_name
I. Transmission State : state_name
I. Write Progress : wr_progress %
I. Read Progress : rd_progress %
I. Thread Transmision Error: thread_error
I. Device Transmision Error: device_error
I. Transmision Rate : speed MB/s
  • "O." Identyfikator poprawnego wykonania rozkazu
  • act Aktywność transmisji. '1' oznacza aktywną transmisję pomiędzy urządzeniem ICS a Serwerem. '0' oznacza brak transmisji

  • state Etap transmisji. Możliwe stany to:
           <> 3 Transmisja rozpoczęta
           <> 2 Dane przesyłane z Serwera do urządzenia
           <> 1 Dane przesyłane z urządzenia do Serwera
           <> 0 Transmisja zakończona

  • wr_progress Procentowy wskaźnik postępu w transmisji danych. Zapis danych do urządzenia

  • rd_progress Procentowy wskaźnik postępu w transmisji danych. Odczyt danych z urządzenia

  • thread_error Błąd wątku odpowiedzialnego za asynchroniczną transmisje danych. Parametr powinien wynosić '0' co oznacza brak błędu.

  • device_error Błąd urządzenia. Parametr powinien wynosić '0' co oznacza brak błędu.

  • speed Prędkość transmisji w [MB/s]. Parametr obliczany po zakończeniu transferu danych

  • "I." Identyfikator komentarza

  • comment Komentarz dla użytkownika

  • act_name Słowna interpretacja parametru act. "true" oznacza aktywną transmisję, "false" oznacza brak transmisji

  • state_name Słowna interpretacja parametru state

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Patrz uwagi ogólne

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.

  Rozkazy  
  • --wr_s Zapis danych do przestrzeni adresowej procesora urządzenia
  • --rd_s Odczyt danych z przestrzeni adresowej procesora urządzenia

Opis rozkazów

  --wr_s  

Składnia

ics_client.exe --dev_wr_rd_buffer IP TCP --wr_s sys_buf sys_adr dev_adr size
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --wr_s Słowo klucz
  • sys_buf Numer bufora systemowego Serwera. Numerowanie rozpoczyna się od '0'
  • sys_adr Adres w systemowym buforze Serwera od którego rozpocznie się zapis
  • dev_adr Adres w przestrzeni procesora pod który nastąpi zapis
  • size Ilość danych do przekopiowania

Poprawna odpowiedź

O. code
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • code Kod wykonania rozkazu. Powinien być '0'
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • 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
  --rd_s  

Składnia

ics_client.exe --dev_wr_rd_buffer IP TCP --rd_s sys_buf sys_adr dev_adr size
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --rd_s Słowo klucz
  • sys_buf Numer bufora systemowego Serwera. Numerowanie rozpoczyna się od '0'
  • sys_adr Adres w systemowym buforze Serwera od którego rozpocznie się odczyt
  • dev_adr Adres w przestrzeni procesora spod którego nastąpi odczyt
  • size Ilość danych do przekopiowania

Poprawna odpowiedź

O. code
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • code Kod wykonania rozkazu. Powinien być '0'
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • 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

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

  Rozkazy  
  • --get Zwraca informację o aktywności procedury resetujacej
  • --set Uaktywnia procedurę resetującą
  • --reset Blokuje procedurę resetującą

Opis rozkazów

  --get  

Składnia

ics_client.exe --dev_bootloader_init_routine IP TCP --get
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --get Słowo klucz

Poprawna odpowiedź

O. mode
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • mode Aktywność procedury. '1' oznacza, że procedura resetująca wykona się przy skoku do bootloadera. '0' oznacza, że procedura zostanie pominięta
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Patrz uwagi ogólne
  --set  

Składnia

ics_client.exe --dev_bootloader_init_routine IP TCP --set
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --set Słowo klucz

Poprawna odpowiedź

O. mode
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • mode Aktywność procedury, zwrócona wartość powinna wynosić '1' co oznacza, że procedura resetująca wykona się przy skoku do bootloadera
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Patrz uwagi ogólne
  --reset  

Składnia

ics_client.exe --dev_bootloader_init_routine IP TCP --reset
  • IP Adres IP serwera
  • TCP Numer portu TCP serwera
  • --reset Słowo klucz

Poprawna odpowiedź

O. mode
I. comment
  • "O." Identyfikator poprawnego wykonania rozkazu
  • mode Aktywność procedury, zwrócona wartość powinna wynosić '0' co oznacza, że procedura resetująca nie wykona się przy skoku do bootloadera
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Wystąpił błąd

E. code
I. comment
  • "E." Identyfikator błędnego
  • code Kod błędu
  • "I." Identyfikator komentarza
  • comment Komentarz dla użytkownika

Uwagi

  • Patrz uwagi ogólne

Szukaj