I2C - Arduino STM32 Nucleo L476RG

David Obdrzalek David.Obdrzalek na mff.cuni.cz
Čtvrtek Prosinec 13 12:56:54 CET 2018


On 12 Dec 2018 at 7:07, Jan Waclawek wrote:
> (*) Toto je jeden z tych problemov s arduinom - princip "nejako som to
> zbastlil a mne to to funguje" - a nie je to prilis transparentne ani
> zdokumentovane. 
Zdokumentované to není nejlíp, ale možná to je lépe zdokumentované než leckteré 
komerční vývojové prostředí, myslím :-)
(a kdyby nic jiného, jsou k dispozici zdrojáky, ale to za dokumentaci nepokládám) 
Co se týče transparentnosti, no, vzhledem k filozofii Arduina je defaultně všechno 
před uživatelem pokud možno schované, aby ho to neděsilo, takže to transparetní dost 
úmyslně není. Ale zjistit se to dá (viz též níže). A ano, "mě to funguje" je bohužel 
průvodním jevem rozšířeného projektu, do kterého přispívá kdejaký hejhula - ale 
bodejť by ne, když to je projekt pro hejhuly, chci říct studenty kreativního 
designu, kteří nechtějí být programátory a přitom programovat musejí, že :-)

> Konkretne, netusim, ako su volane komponenty prekladaca, s
> akymi prepinacmi; ba dokonca ani netusim, ako presne je z .ino generovany
> c, a netusim napriklad ani to, ci a za akych okolnosti sa ten .map
> generuje a ak ano, neviem kde je (t.j. neviem si ho od pana kolegu Jirku
> MWW vypytat, inak by to bola prva a najsamozrejmejsia vec co by som
> urobil; druha by bolo vygenerovat anotovany .disasm). Takze kym sa clovek
> drzi nejakeho blizsie nefinovaneho "vyslapaneho chodnicka", vsetko je OK a
> zivot je krasny; akonahle sa odkloni co i len na krok, tak mozu nastat
> problemy - co by samo osebe ani tak velmi nevadilo, ale v pripade tych
> problemov bohuzial ten netransparentny zlepenec ztazuje bezne postupy
> ktorymi sa taketo problemy riesia.
Tak to já taky u platforem, se kterýma nepracuju nebo nechci se s nima zabývat víc 
než je nutné pro splnění zadání, nevím. Nicméně, u Arduina to je takhle:

Nejdřív se zavolá arduino-builder, který z něco.ino vytvoří něco.ino.cpp do 
dočasného adresáře. Tamtéž se taky okopírujou všechny .c .cpp .h .hpp z místa, kde 
se vzal .ino, a to se pak všechno předhodí kompilátoru podle nastavení platformy. 
Všechny přepínače atd. jsou vidět, když se v nastavení Arduino IDE zapne výpis 
detailních informací nebo když se pro kompilaci použije CLI, nebo se to dá vykoukat 
z nastavení platformy a desky (ty soubory platform.txt, board.txt + totéž .local.txt 
atd.).
Zmíněný dočasný adresář je nastavený v preferences.txt, na který je odkaz v menu 
File/Preferences. Po skončení kompilace to tam zůstane, ale další spuštění ten 
adresář smaže (nabíhačka je, když si to někdo nastaví na adresář, kde má normálně 
svoje skripty :-).

.map se standardně myslím negeneruje, ale jistě by to šlo zapnout, nejspíš přes 
build.extra_flags, pak by se to zřejmě generovalo taky do toho dočasného adresáře, 
odkud se samozřejmě dá přečíst/zkopírovat. Případně po kompilaci ručně z .elf 
vygenerovat. Já jsem si třeba přes platform.local.txt nastavil, aby se mi při 
kompilaci automaticky okopírovaly (generovaly) .lst .hex .eep a .ino.cpp rovnou k 
tomu původnímu sketchi, abych to nemusel hledat a měl je po ruce (plus ten hex abych 
nemusel znovu kompilovat).

D.O.

PS Kdyby to vypadalo, že jsem zastáncem Arduina, tak to jsem spíš jen tak ďáblův 
advokát...



Další informace o konferenci Hw-list