AVR32 Studio install

 ( csfeco | 2010. szeptember 11., szombat - 12:22 )

Sziasztok!

Egy NGW100-ra kellene fejlesztenem egy programot, ami a GPIO-t bizgeti, és ezzel kapcsolatban nyújt valamilyen (egyszerű) szolgáltatást a hálózaton.
De eddig a "Hello World!" program lefordításáig sem jutottam el.
Letöltöttem az avr32studio-IDE-2.5.0.283-linux.gtk.zip -et, és az avr32-gnu_toolchain néhány változatát.
A toolchain Ubuntu 9.10-hez csomagolt változata sem az Ubuntu 10.04-re sem a 9.10-re nem ment fel függőségi hiba miatt.
Csináltam egy VBox-os CentOs-t erre felment a megfelelő toolchain, és kibontva hibaüzenet nélkül fut a AVR32Studio is.
Próbaképpen csináltam egy klasszikus "Hello World!" projektet. Egyrészt úgy tűnik az ide nem találja a heder fájlokat. Másrészt fordításkor a következő üzenetet kapom (részlet):

Internal Builder: Cannot run program "avr32-linux-g++": Unknown reason

És tényleg nincs, acr32-linux-g++, csak avr32-g++.
Valaki elárulná hogyan jutok egy működőképes AVR32Sudio-hoz. A legjobb lenne Ubuntu alatt, de virtuális gépen is jó, így akár Windows is lehet.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Az avr32-g++ arra jó, hogy az ngw100-on natívan futó programot írj, míg az avr32-linux-g++ arra jó, hogy egy az ngw100-ra feltett linux-ra fordíts kódot.
Gondolom neked a már az ngw100-on lévő linuxra kellene(szeretnél) fordítani. akkor ajánlom, hogy szedd le a legújabb buildroot-ot,
és csinálj egy alap ngw100_defconfig-ot, így meg kapod a linuxos fordítót, meg uboot-ot meg egy új kernelt is akár.
a lényeg hogy a staging könyvtárban benne lesz minden ami kell ahhoz, hogy fordíts egy hello world-ot.

az avr32studio nem alkalmas (mivel két kattal nem lehetett megoldani, ezért hanyagoltam) az ngw100-on lévő linuxra történő fejlesztéshez,
az csak akkor jó ha natív avr32-es binárist akarsz létrehozni, és nem avr32 linuxon futót.

a 10.04-re is fel lehet tenni a toolchain-t csak keresd meg pontosan azt a verziójú függőséget ami kell neki, kb. 10 van, nekem felmentek,
az nem számít ha régebbi verziójú ubuntuhoz vannak a csomagok.

Nem mintha számítana, mert ugye az ngw100 linuxán futó program fejlesztésére a Studió nem alkalmas. De a függőségek kielégítése azért nem ilyen triviális. Ubuntu 10.04-en ugyan nem sokat sportoltam, de a 9.10-nél a Stúdiónak egy régebbi verzió kellett az egyik csomagból, amitől a KDE jó pár komponense függött, és a repóból nem lehetett letölteni a szükséges verziót, én itt adtam fel, illetve próbáltam meg a CentOs-t. A CentOs-on most már van egy AVR32Studio-m de minek.

Ha NGW100 akkor buildroot, leszed lefordít, ezzel megcsinálja a cross compile toolchaint is.
Ha trendi akarsz lenni, akkor a programodnak faragsz Makefilet, és a buildrootból fordítod, ha nem akkor intuitív módon megtalálod a keresztfordítót, és használod azt, no meg a lepörgetett libeket.

BTW. egyszerű GPIO (másik uc resetelése) tcp socketen keresztüli bizergáláshoz én spec shellscriptet használtam.

Azért az Atmel ezt jobban is megtámogathatná, úgy tűnik sokan úgy vélik a GPL helyettesítti a dokumentációt, pedig dehogy.
Az ember aszt hinné, hogy egy IDE alkalmas arra, hogy egy egyszerű alkalmazást elkészítsen vele az ember.
No mindegy, próbálkozzunk a buildroot-al:
Buildroot-ot leszedtem a http://www.atmel.no/buildroot/buildroot-src.html -ről.
A "make atngw100_defconfig", és "make source" ok.
A make parancs viszont egyből hibára fut:

Applying linux-2.6.27.6-204-avr32-ap700x-fix-det_pin-for-nand-flash.patch using plaintext:
patching file arch/avr32/boards/atstk1000/atstk1002.c
patching file arch/avr32/mach-at32ap/at32ap700x.c
touch /home/csikfer/projects/buildroot-avr32-v2.3.0/toolchain_build_avr32/linux-2.6.27.6/.patched
(cd /home/csikfer/projects/buildroot-avr32-v2.3.0/toolchain_build_avr32/linux-2.6.27.6; \
/usr/bin/make -j1 ARCH=avr32 \
HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" \
HOSTCXX="/usr/bin/g++" \
INSTALL_HDR_PATH=/home/csikfer/projects/buildroot-avr32-v2.3.0/toolchain_build_avr32/linux headers_install; \
)
make[1]: Entering directory `/home/csikfer/projects/buildroot-avr32-v2.3.0/toolchain_build_avr32/linux-2.6.27.6'
CHK include/linux/version.h
UPD include/linux/version.h
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/unifdef
scripts/unifdef.c:209: error: conflicting types for ‘getline’
/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here
make[2]: *** [scripts/unifdef] Error 1
make[1]: *** [__headers] Error 2
make[1]: Leaving directory `/home/csikfer/projects/buildroot-avr32-v2.3.0/toolchain_build_avr32/linux-2.6.27.6'
make: *** [/home/csikfer/projects/buildroot-avr32-v2.3.0/toolchain_build_avr32/linux/.configured] Error 2

Nekem az jött le, hogy az Atmel supportja ebben a témában nagyon jó. Appnotek vannak kilószámra, a hogyan hekkeljünk custom lcd supportot-tól, a buildroot forgatásig.

Buildrootról van egy appnote én annak mentén csináltam ment is csonk nélkül Ubuntun.
make menuconfig # beállítgat NGW100 stb.
make atngw100_defconfig
make

Mint minden ez is relatív. Valamennyire jónak kell lennie a supportnak, mert különben nem lehetne használni a termékeit.
De ha valaki (mint pl. én is) azt hiszi, hogy vesz egy eszközt (jelen esetben az ngw100-at) amin fut egy ismert operációs rendszer, és amihez le lehet tölteni egy IDE-t is. Akkor ezen pik-pak lehet móricka programokat fejleszteni, és nem kell doksikat bújni vagy hibákat javítgatni hetekig, az nagyot téved. Ha így vesszük, akkor a support már nem is olyan jó.
Úgy tűnt, jó választás lesz a hálózati madzag másik végén GPIO bizgetésre az NGW100, mert linux alá már sokat fejlesztettem, így csak a feladatra kell koncentrálni, de ez eddig úgy tűnik nem jött be.

egész véletlenül :) használok ilyen cuccot sajnos Ubuntu alatt macerásan fordul, de nem megoldhatatlan.
A forrásban kel kicsit bűvészkedni.

toolchain_build_avr32/linux-2.6.27.6/scripts/unifdef.c
toolchain_build_avr32/uClibc-0.9.30/extra/scripts/unifdef.c

kódban a getline cseréld le parseline -ra és lefordul (több helyen szerepel a kódban mindet le kel cserélni ... )

kicsit favágás de muxik ;)

Köszi a tippet, sajnos nem csak ennyi hiba van.
Kijavítottam a függvény neveket, de ezután egy tar.gz fájlra panaszkodott, amit az Atmel oldaláról töltött le, de már nem az van ott amit szeretett volna. Rákerestem a hibára, állítólag ki kell kapcsolni a dokumentációt a target-en. Kikapcsoltam. Így mostmár egy harmadik hibaüzenetem van:
Failed to download, trying mirror
/usr/bin/wget --passive-ftp --retry-connrefused --waitretry=10 -P /home/csikfer/projects/buildroot-avr32-v2.3.0/dl http://www.atmel.no/buildroot/source/mirror/mirror
--2010-09-12 14:01:18-- http://www.atmel.no/buildroot/source/mirror/mirror
www.atmel.no feloldása… 194.19.124.54
Csatlakozás a következőhöz: www.atmel.no[194.19.124.54]:80… kapcsolódva.
HTTP kérés elküldve, várakozás válaszra… 404 Not Found
2010-09-12 14:01:19 HIBA 404: Not Found.
Ha a buildrout ennyi szart tölt le, nem lehetett volna szólni a web fejlesztőknek, hogy ezeket a komponenseket ne töröljék, vagy mozgassák ide-oda?
Tényleg az az egyetlen út egy sima, végrehajtható program megírásának, hogy végigverekszem magam ezen a bug halmazon (Biztos volt egy időpillanat, valamikor régen, amikor ez kiválóan működött, de az már elmúlt, időgépem pedig nincsen.). A feladat tulajdonképpen megoldható script nyelvvel is, de ha lehet nem bash-ban írnám meg, hanem perl vagy php-ben, esetleg python-ban, az nagy divat. De hogyan installálom bármelyiket, ha nincs működőképes buildroot?

látom te is találkoztál a buildroot szépségeivel :)
nekem kb. 2 hétbe tellett mire mindent összevadásztam a dl könyvtárba és sikerült egy olyan imaget csinálni ami el is indult.
azért ne csüggedj. "Ne dudálj, küzdj!" :)

Csakhogy erre (csak annak a lehetőségének megteremtése, hogy írjak rá egy programot) nekem nincs 2 hetem. Ez a 2 hét tulajdonképpen többe kerül, mint az (ezek szerint feleslegesen megvásárolt) 1 db NGW100-as teszt példány.
Csak tudnám mi a fa...-ért kel ebből akadálypályát csinálni. Sikerült implementálniuk a szabad szoftverek összes buktatóját és hátrányát, gratulálok.
Meddig tartana egy megfelelő verziójú Linux image-t kirakni, amin rajta van az összes vacak, elindítanám VBox vagy VmWatre alatt és kész. Én is ezt csinálom régi projektjeimmel, ha az új verziójú környezethez már nem passzol.
Amennyi szart már letöltöttem hiába, ahhoz képest egy pár gigás image nem is lenne olyan sok.

Mi lenne, ha megkérnéd szépen sbela-t, hogy adja már neked oda a dl/*-át, és akkor nem kéne itt siránkoznod.
Másrészt, ha új platformot választasz, nyugodtan számold bele azt a 2-12 hetet, míg minden elindul rajta, és képbe kerülsz.

Természetesen bárkitől elfogadok egy lefordított buildrout-ot, vagy Linux image-t amin van egy működőképes fordító. Még az sem nagy baj, ha nem ingyen van (azért ne legyen az ár összemérhető 2-12 mérnökhét árával).
És természetesen magamba szállok, nem is tudom mit képzeltem, amikor azt hittem, hogy néhány hetes, bughalmon való keresztülverekedés nélkül hozzákezdhetek egy ilyen fejlesztéshez. Meg tudhattam volna, hogy az Atmel azért hívja "legacy"-nak az NGW100-at, mert szép volt, jó volt, de most már leszarjuk.
Azért halkan megkérdezem, tényleg így kell működnie a nyílt forrású rendszereknek ?

Pár hónapja olvastam, hogy az Atmel már nem folytatja az AP700x támogatását, új fejlesztéshez nem javasolják.
Szerintem ezért incsenek rendesen karbantartva a forráskódok.

Ha nekem mindenképpen beágyazott rendszeren futó Linux kell, akkor valamilyen ARM alapú megoldást keresek.

Fuszenecker Róbert

OFF: Derék Komám;) párszor már próbáltam kapcsolatba lépni veled. Legutóbb a Te megkeresésedre válaszolva, de minden alkalommal visszapattantak a levelek :(

Ezek szerint így jártam ;(.
Mondjuk, azért mert abbahagyták a támogatást, azért még nem kellett volna lerombolni az egészet.
És, ha nem tévedek ilyenkor először az eszköz árusítását kéne abbahagyni, és csak ezután, nem azonnal beszüntetni a támogatást.

atmelFanokSzámláló--;

Az ngw100-at azért választottam, mert a legolcsóbb általam ismert ethernet interfésszel rendelkező mikrokontrolleres eszköznél alig drágább, és dögivel van rajta GPIO, és mivel Linux (gondoltam helytelenül) könnyű lesz rá fejleszteni.
Ha van valakinek ötlete, hogy milyen minimum 16 GPIO-val és ethernet interfésszel rendelkező olcsó, programozható eszközök vannak, az ne tartsa vissza. Teljesítmény nem igazán kell, csak biteket billegtet, és egy státuszt közöl a hálózaton.

Igen, az NGW100 szerintem is ritka jól sikerült eszköz. Nem is értem, hogy miért hagyták abba a fejlesztését.

Nem csak ezért, de pár éve én is csökkentettem eggyel a "számláló" értékét, és ARM-ra váltottam.

Ha ethernetes mikrovezérlőre van szükséged, bátran ajánlom figyelmedbe a Texas Instruments cég Stellaris mikrovezérlőit. Sok típusban van ethernet MAC és PHY (!), vagyis egy darab RJ45 csatit kell mellé szerelni (trafóval, LED-del), és kész a hardver :-)
Adnak hozzá tisztességes firmware libaryt, amivel egy ethernet keret küldése nagyságrendileg két sor :-)

Ezen kívül a CodeSourcery gyárt hozzá C/C++ fordítót (gcc, g++), de a CLANG/LLVM is kiválóan fordít ARM Cortex-M3-ra (és nem mellékesen M0-ra).

Történetesen van egy pár otthon, ha gondolod, tudok adni.
Másrészt a TI küld mintát ingyen, a futár "házhoz hozza" (nekem általában a céghez).

Azért választottam az ARM-ot, mert életerős platformnak tűnik, szemben pl. a különféle gyártók "házi" architektúrájával, melyek nem mindig életképesek...

A JTAG ICE MKII nem éppen olcsó, míg a gdb + OpenOCD + ARM_USB_OCD (Olimex) kb. 18.000 Ft.

Ha segítségre van szükséged, szólj, és megoldjuk.

Fuszenecker Róbert

Látom ismered egy kicsit a TI MCU-it tudnál-e olyat ajánlani ami tud LCD-t vezérelni + PHY (+MAC) + AC'97 + min. 200MHz ?

köszi, sbela.

Nehezet kérdezel :-)
Szerintem Cortex-M3-ben nincsen. Vagyis de.

Ha az LCD-d Intel 8080-as vagy Motorola 6800-as buszra illeszthető ("kisebb" LCD-k), akkor találsz olyat, aminek van externális memória interfésze, az LCD-d pedig egy RAM-nak látszik ilyenkor (az LM3S9B és LM3S97 sorozatban van számos olyan eszköz, aminek van küldő memória interfésze, és rendelkezik ETH MAC+PHY-vel, viszont meg kell elégedned a 60 MHz-cel). Paraméterikus táblázat.

Van nekem otthon egy BegaleBoard-om, abban Cortex-A8 mag van.
Emlékeim szerint van benne LCD/TFT kontroller, viszont az ethernetet teljesen kihagyta belőle a TI (a gonosz :-)), de számos USB csatlakozó van a kártyán, szóval bele kell dugni egy USB-ethernet átalakítót :-)
720 MHz-et ír rá a gyártó, de állítólag elmegy 800 MHz-en is. És 500 mA-t eszik 5V-on, ami 2.5W :-)

Fuszenecker Róbert

Ez azért van, mert az Atmel-nél minden termék életciklusa 8 év, és 4 év után már nem ajánlják, mert 8 év után már csak a meglévő raktárkészletekből lehet beszerezni alkatrészt,
azt hozzá kell tennem, hogy mi már most 5-6 év után is csak ilyen 210 v. 450 tételekben tudunk beszerezni, 10-20 db csak ritka eset.

Teljesen egyetértek hg8lhs-el abban, hogy ARM-ot kell használni, mi is térünk át rá, mert, ha még az MCU gyártása megszűnik is, maga a kódbázis portolása 1 nagyságrenddel könnyebb, az új típusra.

Ha nem ipari titok, lehet tudni, hogy mire tértek át?
Pusztán kíváncsiságból kérdezem :-)

Fuszenecker Róbert

Ezek szerint nem jó az Intel 80 buszos LCD :-)

Az Atmel ARM-jai nagyon jók, az előző munkahelyemen tervezték a G45 használatát (előtte a 9263-at szerették), de aztán végül eljöttem, és nem tudom, hogy végül áttértek-e.

Fuszenecker Róbert

"Ezek szerint nem jó az Intel 80 buszos LCD :-)" Hááát, szerintem nem tud meghajtani egy 7" TFT LCD-t. :)

Ha már feljött a téma: hogy lehet GPIO-t bizgetni ngw100 alatt? A két alaplapi ledet megtaláltam a sys v. proc alatt, de a GPIO-nak nyomát sem láttam. Leírásokat próbáltam vadászni a neten, de eddig sikertelenül.

Itt a hupon vettem egy kollégától, melyre még anno openwrt-t tett.
Az U-boot segítségével SD kártyáról sikerült visszavarázsolni a gyári környezetet. Tehát kártya nélkül most már szépen feláll a gyári rendszer, webes felület, stb fut.
Hogyan tovább?:)

Mea culpa, nem ide akartam...

Sziasztok!

AVR32 Studio fejlesztőkörnyezetet szeretném működésre bírni Ubuntu 11.10 alatt. A fejlesztőkörnyezetet az Atmel honlapjáról le is töltöttem, azt ki is csomagoltam az ott leírt módon és az elindítás is sikerült, de a közvetlen idítás után egy hibaüzenetet kaptam némi hiányosságról.

avr32program: (Need version 4.1 or newer)
avr32gdbproxy: (Need version 4.1 or newer)
avr32-gdb: (Need version 6.7 or newer)
avr32-g++: (Need version 4.3 or newer)
avr32-gcc: (Need version 4.3 or newer)
avr32-as: (Need version 2.19 or newer)
avr32-nm: (Need version 2.19 or newer)
avrfwupgrade: (Need version 2.0 or newer)

You are using the Linux version of the AVR32 Utilities and AVR32/GNU Toolchain.
There are multiple problems with dependent executables or path settings. Please consult the user guide for details.
The actual search path used is: /home/laci/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Ezeket a hiányosságokat hosszas hegesztés után így sikerült pótolni:

avr32program: (Need version 4.1 or newer)
avr32gdbproxy: (Need version 4.1 or newer)
avr32-gdb: Found version 6.7.1.atmel.1.0.4
avr32-g++: Found version 4.4.3
avr32-gcc: Found version 4.4.3
avr32-as: Found version 2.20.1.20100303
avr32-nm: Found version 2.20.1.20100303
avrfwupgrade: (Need version 2.0 or newer)

A probléma megoldásához a következő leírást használtam:
http://code.google.com/p/mizar32/wiki/CompilingElua

Ez szépen követhető addig, ameddig minden úgy halad, ahogy az le van írva. Nekem viszont problémám akadt.
A libboost-filesystem1.34.1 és a libboost-thread1.34.1 és libboost-filesystem1.38.1, libboost-thread1.38.1 csomagokat sehonnan sem tudom beszerezni.

1.46-os van telepítve, de az nem jó neki.

A forrásfájlokat felkutattam a sourceforge oldalon, de azokat nem tudom hogyan kell telepíteni. Innen szedtem le őket: http://sourceforge.net/projects/boost/files/boost/

Ezek nélkül nem tudok három lényeges csomagot feltelepíteni, mert függenek tőle. Honnan lehetne *.deb állományok formájában hozzájutni ezekhez? Már egy estém ráment a telepítésre, de egyszerűen nem haladok előre és az ötletekből is kifogytam.

Arra jutottam, hogy valami módon a forrásfájlokat le kéne fordítani, de azzal sem jártam sikerrel.
Nem értem, hogy több 100 megányi telepítőállományból miért kell a legfontosabb összetevőket kihagyni és több órányi buherálással tölteni az időt, hogy használatba tudjak venni egy programot. Már régen az AVR programozással kellene foglalkoznom, ehelyett még mindig ott tartok, hogy a rendszert próbálom befoltozni eredménytelenül.