Programátor ATtiny202 a dalších UPDI Atmelů
Proč jsem se pustila do prošlapávání cesty tímto směrem jsem vysvětlila u kompilace celého toolchainu, čili se k tomu nebudu vracet. Posunula jsem se kousek kupředu, avšak s výsledkem nejsem příliš spokojena, nicméně mám za sebou naprogramovanou ATtiny202, což je řekněme určitý pokrok.
Možnosti jsou v zásadě tři. Buď použijete řešení od Microchipu, včetně jejich softwaru, kdy tedy získáte programátor za několik tisíc, který možná rozběhnete s avrdude, ale možná také budete muset používat jejich vývojové prostředí. Druhou možností je jakýsi skript snad v Pythonu a GPIO bitbanging, což je strašlivá kombinace, třetí varianta je jtag2updi, což je z hlediska hardwaru výrazně příčetnější, bohužel software je více než problematický. Nicméně po zvážení všech možností jsem se rozhodla pro toto řešení.
Samotný projekt si stáhnete z githubu https://github.com/ElTangas/jtag2updi přičemž ono vám to na první pokus zkompilovat nepůjde. Především, musíte mít relativně mladé avr-gcc a celý toolchain (popisovala jsem v předcházejícím článku), musíte to zkonfigurovat divokým editováním make.sh a ten skript musíte navíc trochu opravit (pakliže nesypete všechno do /usr, což definitivně není dobrý nápad). Já osobně jsem se rozhodla použít pro začátek programátor biprog, to z několika důvodů. Především mi leží v šuplíku, mám avrisp a TL866-II+, čili pro něj tak nějak není využití, navíc ono blbnutí s virtuálními seriovými porty mi leze docela na nervy. Tedy ono to funguje dokud máte jeden jediný, jakmile jich ale máte několik, máte problém. Nicméně s tím nic nenadělám, protože jtag2updi je opět založený na seriovém řadiči, bohužel. V biprogu je docela dost užitečných věcí, především převodník USB/USART, tedy v mé verzi, dále je zde AtMega8, která je pinově kompatibilní s AtMega328P používanou v Arduinu, no a není tam propojený reset s USART rozhraním, čili to narozdíl od Arduina nepotřebuje žádné úpravy. Má to pochopitelně i svoji slabou stránku, tou je krystal 7.3728MHz. Čili pokud vytrhnete atmegu z něčeho ve stylu okopírovaného arduina, musíte přeprogramovat pojistky jinak se nerozběhne hodinový oscilátor. Měla jsem trochu obavy stran výkonu, ale zdá se mi, že to funguje. Pochopitelně musíte změnit definice portů, já poslala UPDI na SCK pin programovacího konektoru, avšak výběr můžete zvolit nějaký jiný, každopádně však použijte něco, co vede na ISP konektor, protože tady máte v serii rezistory. Také můžete použít některou z indikačních LED biprogu. Ono by bylo záhodno něco udělat i s těmi ostatními, ale já na to zatím neměla sílu. LED i UPDI můžete nadefinovat pomocí parametrů v make.sh, ale já jsem se rozhodla upravit sys.h a přidala tam volbu BIPROG, která zatím jen nadefinuje porty, avšak míním to dodělat a nějak pořešit ty stupidní LED. Ono je potřeba je buď rozsvítit, nebo zhasnout, ale každopádně musí sedět na výstupu, jinak to nejen vypadá dost divoce, ale je i otázka co se v tom procesoru děje, ono se mu to nemusí líbit. Patch aktuálně vypadá asi takto: https://drive.google.com/file/d/1T4hsuP848O34TmDE3jJzzYDEHmFs7Ysz/view?usp=sharing
Dalším krokem je úprava avrdude. Tomu pouze předhodíte konfigurák z projektu jtag2updi, přičemž vám doporučuji předhazovat ho avrdude pomocí parametru pakliže avrdude míníte používat i s jiným programátorem. Totiž. avrdude je tímto souborem podvedeno a myslí si, že všechny updi procesory jsou ve skutečnosti pdi a jakousi inteligenci v překladu mezi těmito dvěma světy dělá právě jednočip v programátoru. Vada toho řešení je jasná, avrdude tímto rozbijete konfiguráky, takže když ho zkusíte použít s nějakým programátorem, který updi umí (zatím pouze některé programátory od Microchipu), nebude to fungovat, protože updi procesory se budou tvářit jako pdi. Je to ošklivé a nesystemové řešení, avšak jiné řešení aktuálně není, tedy krom toho, že se ponoříte do hlubin avrdude a napíšete korektní implementaci.
Takže jsem tedy dospěla k biprogu s vyměněným procesorem se schopnostmi programovat AtTiny202. Co mi tedy chybí? No, upřímně řečeno, je to strašný bastl, ve kterém jsem se navíc zasekla. On by se totiž ten programovací software vešel do AtMega8, která v tom biprogu je tak nějak od přírody. On biprog má zavaděč, kterým se dá updatovat firmware, takže by dávalo smysl ho použít a zavést s ním do biprogu jtag2updi, případně tím zase vrátit původní firmware. Jenomže buď jsem neschopná, nebo tohle s avrdude nejde. Mělo by se to dělat nějakým šíleným softwarem pro WinXP a to tedy už opravdu ne. Nechápu a nerozumím tomu, vždyť biprog je z roku 2007 zhruba, tudíž nechápu, proč mě straší nějaká WinXP. Nabízí se možnost celý ten downloader pomalu rozebrat, ale upřímně řečno se mi do toho nechce. V jtag2updi je udělaná příprava na kompilaci pro tiny-0 procesory, čili se nabízí možnost postavit celý nový programátor a biprog ponechat jeho vlastní historii. Konec konců, je to silně obsoletní věc a na to, abych tím dostala firmware do nového programátoru, to jistě stačit bude. Takže tak maximálně udělám něco s těmi LED.
Biprog je obrovská deska, opravdu to bude chtít něco civilizovanějšího.
Komentáře
Okomentovat