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
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
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
Plik z chomika:
kaczor1000
Inne pliki z tego folderu:
Peczarski M. - Mikrokontrolery STM 32 w sieci Ethernet w przykładach.pdf
(12152 KB)
The Insaider's Guide To The STM32.pdf
(6627 KB)
STM32Butterfly.pdf
(2632 KB)
Reference manual.pdf
(8589 KB)
Alternatywna metoda programowania pamięci Flash mikrokontrolerów STM32(1).pdf
(2108 KB)
Inne foldery tego chomika:
8051
Arduino
Bascom
CNC
DipTrace
Zgłoś jeśli
naruszono regulamin