Portál AbcLinuxu, 1. května 2025 09:26
Tento zápisek je především takové malé how-to pro mě a možná i pro ostatní.
Je to už nějaký ten pátek, co jsem přesedlal z Archu na Debian Squeeze, ale ten mi nějak nesedl tak jsem se rozhodl vrátit se zpět na Arch. První co bylo je, že jsem si nahodil moje oblíbené CodeBlocks, gcc-avr, avr-libs atd a hurá do vývoje mého soukromého projektu. Bohužel aktuální verze gcc v Archu je 4.6 a jak je zvykem, nejnovější verzi v Archu drží tedy i gcc-avr.
A teď tedy k věci. Pokud se člověk s touto verzí gcc rozhodne použít knihovnu avr/pgmspace.h, nabije si pěkně čumák s problémem okolo pgmspace, deklarace datových typů uložených ve FLASH a funkcí printf_P. Částečné řešení, které mi kdysi fungovalo se nachází zde : AVR C Runtime Library - Bugs: bug #32988, Internal compiler error:... . Toto mi před nějakým časem v Archu ještě fungovalo, ale zase se patrně cosi změnilo a tak ani kompletní doplnění const k datovým typům, které používám (prog_char) nepomohlo. Ikdyž kompilace proběhne, z dat je na LCD rozlitý čaj.
Nakonec se ukázala jako dobrá volba pomocí ABS vytvořit balíček s přepsáním verze v PKGBUILDU gcc-avr na 4.5.3. Toto je patrně poslední verze, kde pgmspace bez problému funguje s aktuální avr-libs. Zkusil jsem také zkompilovat stejnou verzi gcc, jakou má debian (4.3.5). Tam se bohužel ukázal problém s nadměrnou velikostí produkovaného hex souboru ( 16500B vs 13700B).
Tedy řešením je používat gcc-avr 4.5.3 a přidat baliček do IgnorePkg v /etc/pacman.conf
Když už jsem se tak rozepsal, tak bych mohl uvést druhý částečný problém. Tím je linkování správné libc.a knihovny v Codeblocks, kde při použití avr/eeprom.h mohou nastat problémy s hláškami typu :
car_meas.c:(.text+0x75e)||undefined reference to `__eeupd_block_m168'|
Toto řeším tak, že si v project build options přidám linkeru správnou cestu ke knihovně, například :
/usr/avr/lib/avr5/libc.a
Chce to vždy zkusit, který adresář s libc je ten správný (avr3,..,avr51). Většinou to je právě avr5 (mega16, mega168, mega32 myslím).
Pro AVR vyvíjím v Codeblocks už asi půl roku a zatím si nemohu stežovat. Přešel jsem tak plně od AvrStudia. Používat se dá i jtag ice a pěkně to pak debugovat přes avr-gdb a Codeblocks, ale o tom možná zase někdy jindy..
Tiskni
Sdílej:
no kazdy ma svoje.. ten debian neni taky zadna spasa no. skoda. myslel jsem ze budu spokojen, ale kdyz prichazely nepochopitelne kernel panic a obcas nechodila sit tak jsem si rekl dost. a rychle zpet k archu. tam to aspon muzu svest na aktualizace :D
ono nevim cim presne to bylo..ale pokud nahodim debian stable, vsecko rozchodim = funguje, tyden pracuji a nic se neaktualizuje a do niceho nereju a pak proste prijde vypadek site, wifi nechce jet, mobil jako modem se prestane chytat, obcas do toho padne kernel panic s nejakym silenym vypisem s baterkou pri probouzeni ze suspendu..tak se cloveku rychle zasteskne po Archu V nem si aspon na 100% dokazu vsecko dat do kupy.. v Debianu jsem obcas tapal a nechapal co ho zase jebe
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.