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