J-Link Commander: jak zaprogramować pamięć mikrokontrolera bez licencji J-Flash
Na szczęście wszystkie interfejsy z rodziny J-Link, oprócz pracy w większości zintegrowanych środowisk programistycznych, mogą być sterowane przez oprogramowanie J-Link Commander (rys. 5). Za pomocą tej aplikacji można wykorzystywać możliwości interfejsu J-Link pracując w środowisku tekstowym, również z wykorzystaniem plików wsadowych (skryptów). Możliwe jest więc zautomatyzowanie pewnych etapów podczas produkcji urządzeń lub na przykład umożliwienie niewykwalifikowanemu użytkownikowi zmiany firmware’u w wykorzystywanym urządzeniu.
Po uruchomieniu J-Link Commandera, gdy interfejs jest dołączony do komputera, zostanie wyświetlone okno pokazane na rys. 5. W kolejnych wierszach znajdują się informacje o wersji zainstalowanego na komputerze oprogramowania (V4.56), wersji firmware’u (V8), wersji sprzętu (V8.00), numer seryjny interfejsu, nazwa interfejsu (SEGGER-EDU) oraz o zainstalowanych w interfejsie licencjach (FlashBP, GDB). Warto zwrócić uwagę na ostatnią linię:
VTarget = 0.000V
Podana informacja oznacza, że interfejs nie wykrył napięcia zasilania układu docelowego – w tym przypadku do interfejsu nie było nic dołączone. Gdy do interfejsu jest dołączony zestaw uruchomieniowy, okno po uruchomieniu programu wygląda jak na rys. 6. Można zobaczyć, że interfejs wykrył napięcie zasilające układ docelowy:
VTarget = 3.325V
Następnie są wyświetlane informacje o układach odnalezionych w łańcuchu JTAG. W przykładzie na rys. 6 interfejs był dołączony do zestawu ZL30ARM z mikrokontrolerem STM32F103CBT6 firmy STM (rdzeń Cortex-M3).
Jednym z najczęstszych zastosowań interfejsów JTAG jest programowanie pamięci Flash. Z wykorzystaniem wspomnianego zestawu ZL30ARM zaprezentujemy sposoby programowania pamięci mikrokontrolera STM32F103CBT6 interfejsem J-Link firmy Segger.
Programowanie pamięci z wykorzystaniem zintegrowanego środowiska programisty
Wszystkie interfejsy J-Link umożliwiają programowanie pamięci Flash za pośrednictwem wszystkich popularnych środowisk programistycznych IDE (np. uVision, EWARM, emIDE). Sposób postępowania jest zależny od wykorzystywanego środowiska – dokładny opis dotyczący Keil uVision został zaprezentowany w artykule Obsługa interfejsu Segger J-Link w środowisku uVision (ARM/Keil). Warto w tym miejscu tylko wspomnieć, że w sytuacji gdy dysponujemy jedynie plikiem wynikowym (np. w formacie Intel Hex), do programowania pamięci mikrokontrolera można wykorzystać również wersję demonstracyjną uVision. W takim przypadku nie działa ograniczenie wielkości kodu wynikowego do 32 kB.