Programowanie ISP mikrokontrolerów ADuC7000 i STR73x

Rodzina STR73x

Mikrokontrolery z najnowszej „ARM-owej” rodziny firmy STMicroelectronics wyposażono w bardzo zmyślny mechanizm programowania pamięci Flash. Rozwiązanie zaproponowane przez producenta jest niezwykle elastyczne i daje użytkownikowi pełne panowanie zarówno nad protokołem transmisji, jak i kanałem którym są dostarczane dane przeznaczone do wpisania do pamięci mikrokontrolera. Te zalety są jednocześnie wadami, bowiem to na użytkownika spada zadanie przygotowania bootloadera. Zadanie nie jest bardzo trudne, bo producent mikrokontrolerów przygotował bardzo precyzyjną dokumentację zawierającą specyfikację programowania pamięci oraz przykłady programów ilustrujących jej obsługę.

 

Tab. 1. Możliwe tryby restartu CPU w mikrokontrolerach rodziny STR73x

M1 M0 Tryb pracy Mapowanie Opis
0 0 User Boot 1 Sektor B0F0 przypisany do adresu 0 Dostępne wszystkie sektory pamięci Flash za wyjątkiem SystemMemory
0 1 User Boot 2 Sektor B0F0 przypisany do adresu 0 Dostępne wszystkie sektory pamięci Flash za wyjątkiem sektora B0F1 oraz SystemMemory
1 0 System Memory Sektor SystemMemory przypisany do adresu 0
1 1

 

Sposób w jaki mikrokontrolery STR73x startują po wyzerowaniu określają dwa wyprowadzenia oznaczone symbolami M0 i M1 (tab. 1). Restart mikrokontrolera w trybie System Memory powoduje uruchomienie programu zapisanego fabrycznie w niemodyfikowalnym sektorze System Memory Sector o pojemności 8 kB (0x10C0000…0x10DFFF4)), którego zadaniem jest odebranie przez UART0 128-bajtowego loadera (przygotowanego przez użytkownika) i umieszczenie tego programu w pamięci SRAM od adresu 0xA0000000. Po załadowaniu tego programu (niezależnie od długości wykonywanego kodu mikrokontroler zawsze wymaga dostarczenia 128 B!) jest on wykonywany i może np. służyć do załadowania aplikacji użytkownika obsługującej zaawansowane protokoły transmisji danych i wykorzystującej interfejs CAN lub USB do odbierania danych przeznaczonych do wpisania do pamięci Flash. Na rys. 6 pokazano przebiegi na wyprowadzeniach mikrokontrolera podczas inicjalizacji SystemMemory.

 

 

Rys. 6. Przebiegi na wyprowadzeniach 
mikrokontrolera podczas inicjalizacji pamięci systemowej

Rys. 6. Przebiegi na wyprowadzeniach mikrokontrolera podczas inicjalizacji pamięci systemowej

 

  

Ponieważ dla prawidłowego zainicjowania trybu SystemMemory trzeba zachować zalecaną sekwencję sygnałów, producent zaleca zautomatyzowanie ich generowania. Na rys. 7 pokazano fragment schematu ilustrującego budowę typowego systemu z mikrokontrolerem STR73x wyposażonego w jednotranzystorowy inwerter-opóźniacz, który gwarantuje prawidłowe ulokowanie w czasie narastającego zbocza sygnału na wejściu M1 (zgodnie z tab. 1 to stan tego wejścia decyduje o przejściu w tryb SystemMemory).

 

 

Rys. 7. Schemat elektryczny bazowej 
konfiguracji mikrokontrolera STR73x

Rys. 7. Schemat elektryczny bazowej konfiguracji mikrokontrolera STR73x

 

 

Czytelników zainteresowanych poznaniem szczegółów zachęcam do przeczytania noty AN2260 i zapoznania się z przykładowym programem realizującym zapis pamięci Flash, przygotowanym i udostępnionym przez STMicroelectronics.

O autorze