Programowanie mikrokontrolera w STM32Butterfly przez USB.pdf

(690 KB) Pobierz
652389187 UNPDF
Programowanie mikrokontrolera w STM32Butterl y przez USB
NARZĘDZIA KONSTRUKTORA
Programowanie
Dodatkowe materiały
na CD i FTP
mikrokontrolera
w STM32 Butterfl y
przez USB
Mikrokontrolery STM32 z  grupy Connectivity Line, w  skład
której wchodzą układy STM32F105 oraz STM32F107, można
programować na dwa główne sposoby: za pomocą interfejsu
JTAG oraz bootloadera znajdującego się w pamięci systemowej.
Zastosowanie interfejsu JTAG pociąga za sobą konieczność
posiadania odpowiedniego sprzętowego interfejsu JTAG, co
generuje dodatkowe koszty. Użycie bootloadera pozwala na
zrezygnowanie z  zakupu dodatkowego sprzętu, choć okupione
jest nieco mniejszą wygodą podczas programowania pamięci.
W  artykule przedstawiamy sposób zaprogramowania pamięci
z  wykorzystaniem klasy DFU (Device Firmware Upgrade) interfejsu
USB na przykładzie zestawu STM32 Butterfl y wyposażonego
w  mikrokontroler STM32F107VBT6.
Dodatkowe materiały na CD i FTP:
ftp://ep.com.pl , user: 18366 , pass: 3scpp470
• Program
• Przykłady
• Poprzednia część artykułu
loadera jest możliwe. Niestety, dwie z trzech
interesujących nas linii I/O mikrokontrolera
nie zostały wyprowadzone na żadne złącze,
w związku z czym konieczne będzie doluto-
wanie przewodów bezpośrednio do wypro-
wadzeń mikrokontrolera. Wyprowadzenia te
to linie PA10 i PB5, którym odpowiadają wy-
prowadzenia nr 69 oraz 91 obudowy TQFP-
100. Do tych wyprowadzeń należy dolutować
przewody i połączyć je z napięciem zasilania
( fot. 1 ). Wyprowadzenie PD6 dostępne jest na
złączu szpilkowym PD i należy je połączyć
z napięciem zasilania. Nie należy zapominać
o założeniu zworki BOOT0 w pozycję 1 oraz
zworki BOOT 1 w pozycję 0. Po wykonaniu
tych czynności i podłączeniu napięcia zasi-
Bootloader umieszczony w pamięci sys-
temowej mikrokontrolerów STM32F105 oraz
STM32F107 udostępnia trzy główne kana-
ły komunikacji, za pośrednictwem których
można wgrać program do pamięci Flash:
UART (opisany w EP 12/2009), interfejs CAN
oraz interfejs USB z wykorzystaniem klasy
DFU. Programowanie pamięci mikrokon-
trolerów STM32 z grupy Medium Density
(STM32F103) z  wykorzystaniem mechani-
zmu DFU zostało opisane w numerze 6/2008
„Elektroniki Praktycznej”. W przypadku mi-
krokontrolerów STM32F103 konieczne było
wgranie kodu odpowiedzialnego za obsługę
klasy DFU przez użytkownika za pomocą
innego kanału komunikacji, natomiast mi-
krokontrolery STM32F105 i STM32F107 za-
wierają ten kod w pamięci systemowej. Dzięki
temu możliwe jest ich zaprogramowanie za
pomocą interfejsu USB bezpośrednio po „wy-
jęciu z pudełka”. Jedyną rzeczą, jaka jest wy-
magana do zaprogramowania mikrokontrole-
ra znajdującego się na płytce STM32 Butterfl y
poprzez USB, jest przewód USB typu A-A,
tzn. zakończony z obu stron wtykiem typu
A męskim. W sklepach z akcesoriami kompu-
terowymi kabel oznaczony jako A-A najczę-
ściej jest przedłużaczem, a więc zakończony
jest z jednej strony wtykiem typu A żeńskim,
który do naszego zastosowania się nie nada-
je. W przypadku problemów z zaopatrzeniem
w odpowiedni kabelek można zmontować go
samodzielnie np. z dwóch kabli typu A-B.
Część mikrokontrolerów z  grupy Con-
nectivity Line jest obarczona wadą, która
w  skrajnych przypadkach uniemożliwia
wykorzystanie bootloadera. Wada ta wystę-
puje w przypadku mikrokontrolerów ozna-
czonych kodem daty produkcji mniejszym
niż 937 i ma wpływ na działanie wszystkich
kanałów komunikacji z bootloaderem. Szcze-
gółowe informacje na temat problemu i jego
rozwiązania zamieszczone są w dokumencie
„STM32F105xx and STM32F107xx Errata she-
et” dostępnym do pobrania na stronie www.
st.com . Pisząc w skrócie: aby możliwe było
uruchomienie bootloadera konieczne, jest
wymuszenie stanu wysokiego na kilku do-
datkowych, poza BOOT0, wyprowadzeniach
mikrokontrolera. W  przypadku mikrokon-
trolerów w obudowie LQFP64 wymuszenie
tego stanu na wszystkich wymaganych li-
niach jest niemożliwe, w związku z czym
bootloader w tych układach jest po prostu
niedostępny. Na szczęście w  przypadku
układu STM32 Butterfl y zastosowano mi-
krokontroler w obudowie 100-wyprowadze-
niowej, dzięki czemu uruchomienie boot-
Fot. 1.
ELEKTRONIKA PRAKTYCZNA 1/2010
79
loadera jest możliwe. Niestety, dwie z trzech
652389187.020.png 652389187.021.png 652389187.022.png 652389187.023.png 652389187.001.png
NARZĘDZIA KONSTRUKTORA
lania mikrokontroler powinien wystartować
z pamięci systemowej.
Jak już wcześniej wspominano, programo-
wanie z wykorzystaniem mechanizmu DFU
okupione jest dość sporym nakładem pracy.
Pierwszą czynnością jest ściągnięcie i zain-
stalowanie aplikacji DfuSe ( http://www.st.com/
stonline/products/support/micro/fi les/um0412.
zip ). W katalogu z aplikacją znajduje się ste-
rownik klasy DFU, który musi zostać zainsta-
lowany, aby możliwa była komunikacja apli-
kacji z mikrokontrolerem. W tym celu należy
połączyć płytkę STM32 Butterfl y przewodem
typu USB A-A z komputerem PC poprzez złą-
cze HOST, umieszczone na prawym skrzydle
motylka. System Windows powinien wykryć
nowe urządzenie klasy DFU i rozpocząć pro-
ces instalacji sterowników ( fot. 2 ). Po wskaza-
niu kreatorowi, aby automatycznie wyszukał
odpowiedni sterownik ( fot. 3 ), kreator powi-
nien odnaleźć sterownik i go zainstalować.
W trakcie instalacji może pojawić się monit
o wskazanie pliku STTub30.sys (należy wska-
zać plik w podkatalogu odpowiednim dla po-
siadanej wersji systemu operacyjnego), a tak-
że informacja o tym, że sterownik nie został
cyfrowo podpisany ( fot. 4 ). Proces instalacji
sterownika powinien się zakończyć oknem
informującym o  pomyślnym zakończeniu
procesu instalacji ( fot. 5 ). Po zainstalowaniu
sterownika należy uruchomić program Dfu-
Se Demon-
stration
( fot.  6 ).
Program
powinien
wykryć mikro-
kontroler umiesz-
czony na płytce STM32 But-
terfl y jako „STM Device in DFU mode”.
W polu „DFU Mode” wyświet-lane są dane
identyi kujące urządzenie USB: numery Ven-
dor ID, Product ID oraz Version. Mikrokontro-
ler STM32F107VBT6 posiada dwa możliwe
do zaprogramowania obszary: Internal Flash
reprezentujący pamięć Flash oraz Option
Bytes reprezentujący bajty koni guracyjne.
W celu zaprogramowania pamięci konieczne
jest przygotowanie pliku *.dfu.
Plik *.dfu oprócz danych przeznaczonych
do zaprogramowania zawiera również dane
identyi kujące wersję aplikacji urządzenia,
dla którego plik jest przeznaczony. Ponieważ
kontroler umiesz-
czony na płytce STM32
But-
mechanizm
DFU jest prze-
znaczony
do uaktu-
alniania
oprogra-
mowania,
zwykle stanowi on
do- datek do oprogramowania
umieszczonego w urządzeniu, które wykorzy-
stuje interfejs USB do innych celów. Wyko-
rzystując mechanizm DFU do programowania
pamięci mikrokontrolerów STM32, w rzeczy-
wistości nie uaktualniamy oprogramowania,
tylko wgrywamy jego „pierwszą” wersję, tak
więc dane identyi kujące urządzenie oraz
wersję zainstalowanego oprogramowania nie
mają znaczenia.
Do przygotowywania plików *.dfu służy
program DFU File Manager ( fot. 7 ). Pierwszą
czynnością, jaką należy wykonać po urucho-
mieniu programu, jest wybór operacji, jaką
zamierzamy wykonać. Do wyboru mamy
utworzenie pliku *.dfu z plików binarnych
oraz odtworzenie plików binarnych z  pli-
mechanizm
DFU jest prze-
znaczony
do uaktu-
alniania
oprogra-
mowania,
zwykle stanowi on
Fot. 2.
Fot. 5.
Fot. 8.
Fot. 9.
Fot. 3.
Fot. 6.
Fot. 4.
Fot. 7.
Fot. 10.
80
ELEKTRONIKA PRAKTYCZNA 1/2010
652389187.002.png 652389187.003.png 652389187.004.png 652389187.005.png 652389187.006.png 652389187.007.png 652389187.008.png 652389187.009.png 652389187.010.png 652389187.011.png 652389187.012.png 652389187.013.png 652389187.014.png 652389187.015.png 652389187.016.png
Programowanie mikrokontrolera w STM32Butterly przez USB
Fot. 11.
„Yes”. Pomyślne wgranie programu do pamięci
Flash zostanie zasygnalizowane odpowied-
nim komunikatem ( fot. 12 ).
Każdorazowe przygotowywanie pliku
*.dfu z pliku *.hex jest dość kłopotliwe i czy-
ni metodę programowania pamięci z wyko-
rzystaniem mechanizmu DFU mało przy-
datną na etapie tworzenia programu. Jak już
wcześniej wspominano, mechanizm DFU
został opracowany z myślą o prostym uak-
tualnianiu oprogramowania w działających
urządzeniach i na etapie produkcyjnym jego
przydatność jest mocno dyskusyjna. Progra-
mowanie z wykorzystaniem DFU traktować
należy jako rozwiązanie „awaryjne” w przy-
padku braku możliwości zaprogramowania
pamięci inną, bardziej wygodną metodą pro-
gramowania pamięci.
Można się również pokusić o zautoma-
tyzowanie procesu tworzenia pliku *.dfu
poprzez stworzenie aplikacji automatycznie
tworzącej plik *.dfu lub też stworzyć aplika-
cję wgrywającą program wprost z pliku *.hex.
Pomocne w tym będą źródła programów Dfu-
Se Demonstrator oraz Dfu File Manager , które
dostępne są w podkatalogu Sources katalogu
instalacyjnego oprogramowania DfuSe.
Radosław Kwiecień, EP
radosław.kwiecien@ep.com.pl
ku *.dfu. Nas interesuje oczywiście opcja
„I want to GENERATE a DFU ile...”. Po jej
wybraniu wyświet-lone zostanie okno słu-
żące do wprowadzenia parametrów tworzo-
nego pliku DFU ( fot. 8 ). Numery Vendor ID,
Product ID oraz Version są nieistotne, pozo-
stawmy je więc niezmienione. W zasadzie
jedynym istotnym parametrem jest parametr
Target ID, który w przypadku wewnętrznej
pamięci Flash mikrokontrolera ma wartość
0. Zaletą mechanizmu DFU jest możliwość
umieszczenia w jednym pliku DFU danych
dla kilku różnych pamięci, w tym również
pamięci zewnętrznych podłączanych np. po-
przez magistrale szeregowe. Klikając przycisk
„S19 or hex”, należy wskazać plik zawiera-
jący kod przeznaczony do zaprogramowania
pamięci mikrokontrolera. Po wskazaniu pliku
z kodem należy kliknąć przycisk „Generate”
oraz wskazać lokalizację i nazwę wyjściowe-
go pliku *.dfu. Pomyślnie zakończony proces
generowania pliku zostanie zasygnalizowany
odpowiednim komunikatem ( fot. 9 ).
Fot. 12.
Po wygenerowaniu pliku *dfu należy po-
nownie uruchomić program DfuSe Demon-
stration, a następnie załadować wygenerowa-
ny uprzednio plik *.dfu ( fot. 10 ). Po popraw-
nym załadowaniu pliku *.dfu wyświetlone
zostaną informacje na temat jego zawartości.
W celu zaprogramowania pamięci Flash na-
leży kliknąć przycisk „Upgrade”. Wyświetlo-
ny zostanie komunikat ( fot. 11 ), informujący
o  braku możliwości sprawdzenia, czy plik
*.dfu wgrywany jest do właściwego urządze-
nia. Należy potwierdzić chęć kontynuacji pro-
cesu wgrywania poprzez kliknięcie przycisku
R
E
K
L
A
M
A
ELEKTRONIKA PRAKTYCZNA 1/2010
81
652389187.017.png 652389187.018.png 652389187.019.png
Zgłoś jeśli naruszono regulamin