STM32Cube, pondelkove frflanie

Jaromir Sukuba jarin.hw na gmail.com
Pondělí Leden 26 19:17:42 CET 2015


V ramci rozsirovania obzorov som si povedal, ze v ramci suchsieho
pracovneho vecera idem opacit modernu a trendy vec: STM32 Cube.
Aby som citoval priamo ST, tak: "STM32Cube™ is an STMicroelectronics
original initiative to ease developers’ life by reducing development
efforts, time and cost."

Zvolme si za cielovy MCU STM32F072R8T, cielova aplikacia USB-CDC, nic
viac. Stiahne sa STM32CUBEMX, zozipovany exe subor, budiz. Este ze
pracovny stroj ma W7, doma si to pustim vo wine, Instalator bezi.
Nevyzera dvakrat vabne, ale gentleman taketo otazky neriesi.
Po instalacii si skusim nakliklat co vlastne chcem. Tu musim ST uznat,
ze to urobili pomerne prehladne a jednoducho. Spustim generovnaie
kodu, pise ze chce Firmware package a pyta sa, ci ho ma stiahnut.
Jasne, tahaj. Odidem na cikpauzu, po navrate z nej este stale
nadvazuje spojenie s HTTP serverom... meh, Problemy s prostatou este
nemam, ale zas tak rychlo som sa nevratil. Nojo, asi mam upchate
internetove droty, to sa stava, skusime este raz, ale najprv toto
musim zrusit... cancel. Cancel. CANCEL! Hernajz! Nic. Aplikacia
nereaguje. Task manager, aplikaciu zostrelit - az teraz si vsimam ze
je to Java, takze mi to ani nedviha krvny tlak.

Este raz. Spustit, naklikat co treba a znovu ho nechat stiahnut
Firmware package... dlhe minuty nadvazovania kontaktu s HTTP serverom
a zas nic. Nevadi, cancel... aha, ziadny cancel, ale rovno task
manager.

Tretie kolo, zatial prehravam 2:0. Spustit, naklikat, ale v druhom
okne si manualne stiahnut STM32Cube pre STM32F0, velky zip, pockame.
Help->Install new libraries a tam mu manualne vnutim najnovsiu verziu,
ktoru som prave stiahol, teda 1.2.0. Chvilku ten zip chrume, nakoniec
to vsetko schrasti a tvari sa spokojne. Dobre, dame mu generovat
sources. Generator hlasi, ze on chce verziu 1.2.1. Ja som mu pred
chvilou vnutil 1.2.0, lebo novsia skratka nebola. Ponuka mi download,
ale na tento trik mu uz neskocim. Nevadi, pokracuj, ved mas 1.2.0, to
ti musi stacit. Subory vygenerovane, ale je ich nejako malo, ani nie
tucet. Clovek si povie, parada, kde su tie dni, kedy kniznice mali aj
50 suborov... Vygeneruje sa projekt pre Atollic TRUE Studio, skusim ho
buildnut, errorov tolko kolko je zrniek piesku na Sahare. Hento chyba,
tamto chyba, tu nieco nie je v poriadku. Skusim sa pohrat v
nastaveniach generatora kodu, ci mu necham vygenerovat vsetko alebo
len minimalne pouzivane mnozstvo kniznicnych suborov, furt to iste.
Moment, on ocakava, ze mu podstrcim tu verziu 1.2.1, ale ja mam len
1.2.0... tak generatoru nanautim verziu 1.2.0 a teraz generuje projekt
trochu dlhsie... Aha! Teraz to vyzera kompletne, 498 suborov v
projekte. Zbezne kontrolujem, ci tam nie je prihodeny aj kus Linux
kernelu, ale nie je. Fakt 498 suborov. Ked dam vygenerovat len tie
subory, ktore su pouzite v knizniciach (nie vsetky), tak je to len 99
suborov, ohoho deti, dvojciferne cislo!
Takze, ked nemal Firmware library verzie, ktoru cakal (mimochodom,
taka na webe ST v tej chvili nebola), tak ticho nevygeneroval nic, ale
tvaril sa, ze je vsetko OK namiesto toho, aby zahlasil co tam bude
chybat, alebo sa pri troche inteligencie snazil pouzit predoslu verziu
Firmware library.
Kedze som sa medzicasom rozhodol, ze STM32F072 bude na moju aplikaciu
mala, skusim sa pozriet co je v sufliku... STM32L152RET, parada.
Kolecko som si zopakoval este raz a uz som mudrejsi z predosleho
tapania. V ziadnom pripade nic nestahovat automaticky, ale manualne,
podstrcit mu staru verziu namiesto neexistujucej novej a este raz
zdoraznit, ze chcem pouzivat staru, inak nic nevygeneruje. Teraz to uz
slo rychlejsie a snad v priebehu 5 minut mam buildnutelny kod.
Stale prehravam, ale uz je to 2:1.

Nojo, tak tu mame vytuzene zdrojaky. Je ich pozehnane, mam si z coho
vyberat. Zacinam sa v tom orientovat, tu sa nieco inicializuje, tam je
taky callback, aha. Pozrime sa ako je vyrieseny zapis dat z/do
virtualneho serioveho rozhrania do/z endpointov. Takto:
http://pastebin.com/VMHh5pN2
Cize, funkcia ma nastrkat data z endpointu do bufferu Buf, dlzky Len a
vratit USBD_OK ak je vsetko OK alebo USBD_FAIL ak sa nieco zhnoji.
Lenze, funkcia nerobi zhola nic, data ignoruje a rovno vracia USBD_OK.
Jasne, kto nic nerobi, nic nepokazi. V TX naprotivku uz je nieco
rozumne http://pastebin.com/cHqj9wYA - zas aby to nevyzeralo, ze ta
kniznica je celkom prazdna.
Nojo, chapem ze v tych knizniciach nemoze byt vsetko, ale toto tam
IMHO patri. A ked tam nic nie je, tak by sa aspon patrilo naznacit kde
ma uzivatel siahnut, aby vedel co tam dopisat. Takto stoji nad
prazdnou funkciou a nevie co dalej.

Zapas konci 3:1, idem domov.


Další informace o konferenci Hw-list