ATtiny202 avr-gcc toolchain

 Halelujah wole, za pět korun požehnám, všichni se radujte a tchoři hořte, pusťte si Debustrol a userte si, protože tohle bylo něco katastrofálního. Ostatně, ono postaru se žít nedá a když jsem zjistila, že ATtiny13 koupím nejlevněji za 69Kč naznala jsem, že se s tím už jakože ale vážně musí něco dělat, protože tohle prostě nejde dál. A tak jsem hledala a našla — ATtiny202 za 15Kč. New model, takže žádné programování přes SPI, na to můžete rovnou zapomenout, tady po nás hodili nějakým UPDI, asi to znamená uprdeltesi či co, hajl Debustrol, tohle bude sranda sama o sobě, to se ještě nasmějeme, ajajaj. Totiž musíme přeci mít debug, lidi to chtěj. Jen nějak nevím kteří, pokud někdo neumí programovat bez debugeru, má jít prodávat ponožky, ale holt nová doba, tak teda hajl hipster...fakt jsem nečekala že se dožiju něčeho horšího než byli potyši. Prvním po(s)tupným bodem je ale mít něco, co do té věci míním nahrávat a to je to, čemu se budeme věnovat dnes.

Tak ona jedna možnost by byla nainstalovat MPLAB, AVR-studio, čert ví jak se to teď jmenuje, ovšem já nemám moc masochistické sklony, takže jsem se rozhodla jít cestou gcc toolchainu, protože, no, kdo zažil MPLAB (a dnes je to stejný podnik), nechce to zažít podruhé. Horší už je snad jen setkání s měřicím přístrojem UNIMA-KS a upřímně ani tím si nejsem úplně jistá. Prostě je to obé takový chaotický omniser, který náhodně dělá různé věci, které se rozhodně dělat nemají, ale ty krámy na to samozřejmě nedají, prostě nechová se to úplně deterministicky a občas v tom fakt nemálo plavou s nakloněnou hlavou, na což upřímně řečeno nemám tak úplně nervy, dělá se mi yaxi nedobře už  jen když vidím ten jejich web.

Na kompilaci avr-gcc toolchainu je docela dobrý návod https://www.nongnu.org/avr-libc/user-manual/install_tools.html Má ovšem určitá úskalí, například nevidím důvod dělat toolchain systemwide, když své PC používám jenom já a nikdo jiný. To je tak dobrý základ na to, aby se něco ukrutně rozbilo, což nene, navíc už jeden avr-gcc toolchain mám, takže jsem se to rozhodla nasypat do ~/opt/avr-gcc (--prefix= pro neznalé), teoreticky to můžete nasypat i do ~/.local a potom nemusíte blbnout s PATH, avšak právě ono blbnutí s PATH je dobrým způsobem jak mít v jednom systému nainstalovaných několik stejných věcí v různých verzích. A jistě by mi zas někdo doporučil docker, virtualizaci, či nějakou podobnou hloupost, která na víceuživatelském multitaskingovém OS nedává smysl. Každopádně ten návod je plně použitelný a postupovala jsem podle něj. Funguje to, jen počítejte s tím, že kompilace gcc je taková trochu delší záležitost a jako bonus to po vás hodí oblíbenými gmp, mpfr a mpc. Tohle si postahujete z gnu.org z adresáře infrastructure. Doporučuji zkompilovat to s --prefix=~/opt/sračky-na-gcc a potom export PATH=~/opt/sračky-na-gcc/bin:$PATH protože jinak to fungovat nebude, ale tohle už asi víte. Při kompilaci budete muset ještě za ./configure přidat --with-gmp=~/opt/sračky-na-gcc --with-mpc= … Ale to vám asi taky došlo. Po zkompilování gcc ten adresář zase můžete radostně smazat, neb vám tyto věci prostě k ničemu nebudou. Doporučuji vzít to v poslední verzi, jinak nemůžete vzít v poslední verzi gcc. A řešit mezi tím závislosti fakt nechcete, navíc nevidím důvod používat nějaká starší gcc. V tomto případě. Právě naopak, potřebujete podporu xmega3, jasně, na ATtiny202 potřebujete podporu xmega3, no to dává smysl, že. Obdobně se na jakémsi německém foru dozvíte, že nemáte používat poslední binutils, že pak nefunguje podpora xmega3. No, já na to mám jiný názor, takže klidně použijte poslední binutils, myslím si, že tam byl problém mezi klávesnicí a židlí, což ono tak obvykle bývá. 

Kdybych byla svině, tak vám řeknu, že to máte zkompilovat víceméně tak, jak je to popsané v tom návodu. Dopadli byste stejně jako já. Ono koneckonců cizí neštěstí je jako infarkt — nepotěší, ale u srdce zahřeje, tudíž nevidím důvod tajit, že pokud použijete poslední verzi avr-libc z gnu.org, tak budete mít sice gcc s podporou xmega3, budete mít funkční binutils, jenomže nebudete mít avr-libc s podporou xmega3 procesorů, takže vám to celé bude platné asi jako mrvému řád práce, takže to po vás začne házet takovými pěknými věcmi jakože PORTA je undefined atd. Po dlouhém zkoumání, přečtení mnoha článků v různých forech (holt taková je doba, dokumentace není, čtěte fora) jsem našla jakýsi „build script“ na https://github.com/stevenj/avr-gcc-build-script/blob/master/build.sh Proboha nespouštějte to, je to děsná pitomost, nicméně jsem z toho pochopila, že potřebuji avr-libc3.git.tar.bz2 protože jedině v tom je podpora pro nové xmega3 procesory. A že ten soubor původem byl na nognu.org. Což je mi ovšem platné jak sáňky v tropech, protože už tam ten soubor tak nějak není. Nicméně už jsem věděla co hledat a po dalších několika marných pokusech jsem našla repozitář na githubu kde byla víceméně aktuální verze avr-libc3, přesněji řečeno píšou tam v changelogu, že je přidaná podpora pro ATtiny202 a to mi tak nějak stačí. https://github.com/stevenj/avr-libc3

Takže stáhnout v zip (jaký „cip“ tohle vymyslel, proč to nemůže být v něčem normálním, jako třeba .tar.gz ? To by bylo asi moc mainstream, no můžu být asi ráda, že to není v raru), rozbalit a zkompilovat. Aby to nebylo jednoduché, musíte si přidat ./bootstrap, protože to yaxi nemá configure, to se generuje tím bootstrapem, ale překvapivě se to při tom nepodělalo (což ono jinak celkem rádo) a k dovršení děsu se to i zkompilovalo bez chyb a nainstalovalo. 

Pokud předpokládáte, že to taky bude fungovat, pak jste pochopitelně na omylu. Dobrá rada, nemažte ty rozbalené a zkompilované zdrojáky, budete je ještě potřebovat. Ve snaze zkompilovat krátký program na blikání LED ukradený z firemní dokumentace  Microchipu to po mně hodilo tím, že avr/legacyio/iotn202.h není souborem ani adresářem. COŽE?? Néé, já už nechci, co se to zase rozbilo? cd ~/opt/avr-gcc; find . | pomeranč iotn202 no a ono jakože opravdu ne. Tak jsem se podívala do adresáře se zdrojáky a tam byl. Tudíž jsem zkopírovala celý adresář legacyio a io ze zdrojáků do ~/opt/avr-gcc/avr/include/avr, vymazala z toho takové ty Makefile.in a podobné relikty, protože to je tam viditelně k ničemu (někde v install částech makefile se něco strašně podělalo, ale to pochopitelně vede přes configure  a na to já nemám úplně nervy). Každopádně po tomto zásahu to už konečně funguje. Tak jakože UF, říkal letní medvěd v zimě.

Tím pro dnešek končím, teď na pytlíkovo parkovišti (tme, ale oni ty zásilky od nich vypadají jak kdyby to společnými silami balil brouk Pytlík, Frodo Sáček a Atilla Igelit, navíc se tam součástky před objednávkou „parkují“…ne, nepřipadá mi to normální, ale už to neřeším) objednám ATtiny202 a nějaké další procesory, no a čeká mě zábava s výrobou a rozcházením programátoru.

Komentáře