Obsługa interfejsu Segger J-Link w środowisku uVision (ARM/Keil)
Następnie należy wybrać typ interfejsu wykorzystywanego do programowania układu docelowego. W tym celu w menu głównym Flash | Configure Flash Tools… i następnie w zakładce Utilities w polu Use Target Driver for Flash Programming należy wybrać J-LINK / J-Trace Cortex (rys. 10).
Rys. 10. Okno wyboru typu interfejsu programującego
W tym momencie jest już wybrany odpowiedni typ programowanego układu oraz właściwy interfejs do programowania. Wydaje się, że konfiguracja interfejsu jest zakończona. Co więcej, wybranie w menu polecenia skasowania pamięci mikrokontrolera Flash | Erase kończy się sukcesem (rys. 11). Przynajmniej tego należało oczekiwać…
Rys. 11. Komunikat o poprawnym skasowaniu zawartości Flash
Jednak po wyzerowaniu mikrokontrolera zamontowanego w zestawie uruchomieniowym okazało się, że nadal jest uruchamiany program, który znajdował się tam wcześniej, czyli pamięć nie została skasowana. Co więcej, próba zaprogramowania pamięci mikrokontrolera kończy się komunikatem błędu (rys. 12).
Rys. 12. Zaskakujący efekt – wbrew wcześniejszemu komunikatowi, pamięć Flash nie została skasowana i nie daje się zaprogramować
Ten zaskakujący efekt wynika ze specyfiki µVision, w którym dodatkowo konieczne jest wskazanie algorytmu do zaprogramowania układu docelowego. W tym celu należy w menu głównym wybrać Flash | Configure Flash Tools… i następnie w zakładce Utilities nacisnąć Settings (rys. 13).
Rys. 13. Pierwszy krok rozwiązania problemu braku algorytmu obsługi pamięci Flash
Rys. 14. Drugi krok rozwiązania problemu braku algorytmu obsługi pamięci Flash
W wyświetlonym oknie Cortex JLink/JTrace Target Driver Setup (rys. 14) należy nacisnąć przycisk Add, żeby wyświetlić listę pokazaną na rys. 15. Z listy tej należy wybrać algorytm odpowiedni do programowanego układu – w przypadku mikrokontrolera STM32F103VB jest to pozycja STM32F10x Mid-density Flash.
Rys. 15. W kolejnym kroku wybieramy z listy algorytm obsługi pamięci Flash dla używanego typu mikrokontrolera