OT o tych knizniciach k STM32

Jan Waclawek konfera na efton.sk
Středa Listopad 12 18:16:52 CET 2014


Uvod do problematiky

K STM32 dodava ST v ramci podpory niekolko "kategorii" softwaru priamo pre
tie jednocipy (t.j. nie software na PC na palenie, programovanie,
monitorovanie apod. - toho je tiez viac) - nieco je "zakladneho"
charakteru; nieco je konkretny firmware k roznym demoboardom (zakladnych
demoboardov k jednotlivym radom, tieto su 3 kategorie: Eval, Discovery,
Nucleo - alebo specializovane), ci uz jeden velky projekt ktory precvicuje
vsetky mozne featury toho demoboardu, a/alebo zbierka mensich projektov,
ktore tie featury precvicuju jednotlivo. Tie vacsie projekty pochopitelne
vychadzaju z toho "zakladneho" "substratu" (takze ho v sebe aj obsahuju).

Ten "zaklad" je dvojeho druhu - jednak uplny zaklad, hlavickove subory
popisujuce registre a bity periferii, obvykle nazvane stm32NNxxx.h (NN je
zaciatok mena modelu, xxx su pismena xxxx naozaj tam su). Toto je
vyzadovane ARMom v ramci jeho unifikacnej iniciativy pod heslom CMSIS,
preto ten subor vzdy treba hladat v strome pod adresarom s takymto menom. 
No a potom je akasi "abstrakcna vrstva", ktora ma za ulohu zjednodusit
ulohu programatora a zjednotit pristup k periferiam pre rozne varianty
periferii a rozne modelove rady - tieto pre strucnost nazyvam "kniznice"
(vratane tych uvodzoviek).

Historicky vyvoj

Historicky prva "kniznica" sa nazyvala "Standard Peripheral Library"
("SPL"), a je to pomerne jednoducha medzivrstva bez zasadnejsej
funkcionality, organizovana ako sustava .c-.h suborov pre kazdu periferiu.
K tomuto boli robene priklady, ktore napr. obsahovali aj zlozitejsie
kniznice typu "middleware", napr. rozne USB device classy, CF/FAT,
ethernet/TCP/IP, atd. 

Neskor vznikla druha, nazyvana "Cube", vyrazne zlozitejsia, obsahujuca aj
akusi "vyssiu vrstvu" vratane obsluhy preruseni a DMA specificky pre
periferie, dalej obsahujuca aj middleware kniznice. K tomuto je na PC
program (CubeMX), ktory pre tuto kniznicu z naklikanych periferii
vygeneruje kostru programu.

Kniznica "Cube" je nekompatibilna s kniznicou "SPL" - je napisana zgruntu
nanovo, ma ine nazvy funkcii, struktur, konstant, atd.

Je pochopitelne, ze udrziavat dva navzajom nekompatibilne systemy je
zbytocne, a tak sa ST rozhodlo "SPL" nadalej nepodporovat a pre vsetky
nove priklady pre nove demoboardy su uz len v "Cube"
(http://list.hw.cz/pipermail/hw-list/2014-October/464520.html )
(Tangencialnou vynimkou su balicky "Snippets", ktore vobec ziadnu
"kniznicu" nepouzivaju ale idu rovno na uroven symbolov z stm32NNxxx.h -
tieto su momentalne len pre najnovsie a najnizise rady F0 a L0).

Aj zrejme aj vsetko pre nove rady.

Lebo pre rad L0 uz SPL neexistuje.

A kopec ludi ma napisany kopec softu s SPL na L1/F0..4, ktory by mozno
chceli portovat na L0. Napriklad
https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FSTM32L05x%20Standard%20Library&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=30
a link v nom.

A ked pridu F7 - ktore su dost podobne na F4 - co potom?

Podla mna (ako som to pisal v tom vlakne z toho linku) su alternativy 3 -
prepisat na priamy pristup k registrom (styl "Snippets"), napisat si (hoci
aj neuplnu) nahradu za "SPL", prepisat na "Cube".

Ktora z troch alternativ je najlepsia? Co na to ludia z ST? Je mi jasne, ze
su tam viacere skupiny viacerych nazorovych prudov, ale ste pri zdroji a
zaoberate sa tym denne, tak skuste argumentovat pre a proti. Ako to vnimat
s ohladom na buducnost napr. Cube - co ak to ST kvoli nakladom v
buducnosti vzda; alebo co ak vymysli nieco este lepsie, este farebnejsie,
i ked nekompatibilne?

Dakujem,

wek




Další informace o konferenci Hw-list