Arduino: jiný výstup z Win a Linuxu

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Arduino: jiný výstup z Win a Linuxu
« kdy: 07. 05. 2013, 12:54:47 »
Zdravím,

včera jsem poseděl s kámošem nad Arduinem Duemilanove (a Mega) a 3,2" LCD touch shieldem (vše čína). K LCD se používá knihovna UTFT.

(Mega je polomrtvá - nějaký odvařený piny, tak) jsme vše dělali jen na Duemilanove.

Kámoš zkompiloval na Windows 7 (32bit) v Arduino prográmku example program pro to LCD, nahrál ho a už jsme čuměli na vykreslování.

Já to zkompiloval na Gentoo 64bit v Arduino prográmku úplně to samý a LCD ani neblikne. Nahrávání do Arduina je v pohodě, kompilace je v pohodě, Arduino se restartne, ale displej zaboha nic.

Liší se nám velikost zkompilovanýho kódu, někdy o desítky bajtů, jindy i o kilobajt(y).

Zkuste nadhodit, na co se zaměřit, aby to fachalo i u mě.

Předem díky za cokoliv
« Poslední změna: 07. 05. 2013, 13:14:46 od Petr Krčmář »


playback

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #1 kdy: 07. 05. 2013, 13:23:19 »
Máš stejnou verzi Arduino IDE? Teprve asi od verze 1.0.2? má IDE v linuxu přibalené gcc pro avr, takže verze před tím využívaly gcc nainstalované klasicky balíčkem a mohly v tom být rozdíly.

Máš na tom Gentoo správně nainstalovanou knihovnu pro to LCD?

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #2 kdy: 07. 05. 2013, 13:49:42 »
Na obou OS je Arduino IDE 1.0.4

Dle průvodce na webu Arduina mám nainstalovanou knihovnu dobře. Když zapnu verbose kompilaci, tak sype warningy, ale jede v pohodě, errory nevyhazuje.

Budeme to zkoušet ještě zítra, ale rád bych věděl, kterým směrem se ubírat.

3ugeene

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #3 kdy: 07. 05. 2013, 18:08:02 »
mozna bych zkusil jinou verzi IDE pod gentoo, jak to instalujete z webovek arduina nebo emerge?

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #4 kdy: 07. 05. 2013, 18:21:30 »
Prvně bych zkusil nahrát co nejstupidnější program. Nejlíp Examples/Blink. Podle toho se pak dá špekulovat dál.


Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #5 kdy: 09. 05. 2013, 16:12:05 »
Mirek: Zapomněl jsem napsat, že pitomůstky fachají ;-) Točení potenciometrama, čtení analogových vstupů, PWM, LOW/HIGH, všechno tohle jede. Pravda, nemam vyzkoušený všechny piny...

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #6 kdy: 09. 05. 2013, 16:13:22 »
Poslední větu předchozího příspěvku nebrat vážně - s kódem z Windows to jede, z toho plyne, že HW je v pořádku.

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #7 kdy: 09. 05. 2013, 17:01:23 »
No, tak to je blbý. To se do toho asi budeš muset zanořit víc... Další, co bych zkusil, by asi bylo otestovat svěrnici, po které se s displayem komunikuje. Budeš muset do datasheetu a najít si tam nějaký příkaz, na který by měl display nějak odpovědět - a odpověď si nějak zpátky signalizovat (přes seriák, bliknutím ledky nebo tak něco).

Ale každopádně to asi nebude snadný, protože jestli to Arduino IDE ve stejné verzi se stejným zdrojákem z jinýho stroje fachá, bude to chybka někde v Gentoo a asi nebude snadný ji odhalit, natož opravit...

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #8 kdy: 09. 05. 2013, 18:51:49 »
Zapomněl jsem na jednu velmi důležitou věc, který jsem zpočátku nepřikládal takovou důležitost...

U mě při kompilaci vyjedou errory stylu "Proměnou (asi typu?) PROGMEM nelze použít v tomto smyslu, musí být konstantou". Jde o vykreslování znaků. Když si otevřu zdroj (.c) a dopíšu tam před proměnnou "const", tak kompiluje v pohodě. Na Windows se tohle ale NEděje, tam to valí i bez "const".

Netušíte tedy, jak probíhá samotná kompilace? Teorii jak vím, ale jak je to v případě cross-kompilace, kdy Arduino má mít kompilátor v sobě a přitom na Gentoo jsem (údajně dle webu Arduina) potřeboval i crossdev, kterej si zkompiloval vlastní AVR GCC apod...

Ještě bych mohl nějak ( ;D ) vyštípat "mezikusy" kompilace z obou strojů (takové ty OBJ soubory apod.) a porovnat je. Ovšem jak je získat, to bude ještě zajímavé... Jakékoliv tipy vítám.

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #9 kdy: 09. 05. 2013, 19:11:36 »
No to je ale dost podstatná věc :)

Čili nepřekládáš stejným kompilátorem (Gentoo použil jakýsi vlastní, ne ten originál Arduinovský?), ani stejný zdroják (doplnil jsi tam const). To jsi ale měl říct hnedka, protože pak se nediv, že výsledek je jiný...

Co se týče Gentoo, s tím ti neporadím. Za normálních okolností má Arduino IDE vlastní kompilátor přímo v sobě. Pokud se Gentoo frikulíni rozhodli to z nějakého mně nepochopitelného důvodu měnit a dali tam případně kdovíjakou verzi avr-gcc s kdovíjakými volbami, tak ať ti s tím pomůžou oni...

PROGMEM je makro, které slouží k používání konstant přímo z flash místo z RAM. Pokud jsi tam místo toho dal const, tak to pak funguje jako normálně - konstanta se překopíruje do RAM a používá odtud. To má různé konsekvence, ale každopádně že to vede k tomu, že program nefunguje, tomu se vůbec nedivím, ono to tam asi není jenom tak pro plezír :)

Takže abych to shrnul, pokud chceš, aby ti to fungovalo, tak do zdrojáku ze začátku nedělej zásahy a řeš, proč ti nejde překompilovat tak, jak je. Proč nejde překompilovat se nějakým Gentoo-specific překladačem, to ti fakt neporadím.

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #10 kdy: 09. 05. 2013, 21:01:47 »
Takže je to (pravděpodobně) tím, že mám kompilátor nějak "přednastavenej" a proto mi leze něco jinýho ven?

Když jsem použil klíčový slova, našel jsem tohle. Takže změna na const je nejspíš v pohodě (kompilátor v Linuxu bude asi přísnější, než ten použitej ve Windows).

Mohl bych snad zkusit Arduino IDE ještě na Ubuntu - na jakym jinym Linuxu by měl běhat bez problémů, než právě na něm :-D Bohužel nemám u sebe teď LCD :(

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #11 kdy: 09. 05. 2013, 21:10:47 »
Takže je to (pravděpodobně) tím, že mám kompilátor nějak "přednastavenej" a proto mi leze něco jinýho ven?
Neříkám, že to tím je, jenom to, že pokud nevíš, čím to vlastně překládáš, tak to je pak každá rada drahá :)

Když jsem použil klíčový slova, našel jsem tohle. Takže změna na const je nejspíš v pohodě (kompilátor v Linuxu bude asi přísnější, než ten použitej ve Windows).
Pokud jsi dostal tu hlášku "must be const", tak to je známá chyba spojená s verzí avr-gcc, takže to opravdu překládáš jiným kompilátorem než ten kolega na Windows. Pokud před to jenom přidáš const, tak by to (pokud si dobře vzpomínám) mělo fungovat. Ale úplně jistej si tím nejsem.

Mohl bych snad zkusit Arduino IDE ještě na Ubuntu - na jakym jinym Linuxu by měl běhat bez problémů, než právě na něm :-D Bohužel nemám u sebe teď LCD :(
Zkus to na čem chceš, ale hlavně zkus stock Arduino IDE tak, jak je na stránkách arduino.cc. Pokud použiješ překladač z jiného zdroje, tak se nesmíš divit... :)

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #12 kdy: 09. 05. 2013, 22:23:02 »
Použil jsem návod pro Gentoo z webu Arduina, ale asi bych měl zkusit přímo jejich balík... Jdu na něj. Díky za nasměrování, dám pak vědět

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #13 kdy: 10. 05. 2013, 21:03:34 »
Tak pro blbce jako jsem já:

Na Gentoo se Arduino IDE neinstaluje kompilací a cross-kompilací, ale stáhne se z webu Arduina .tar.gz pro architekturu (32/64 bit), ten se rozbalí a z něj to všechno fachá jak má.

Jen jsem musel emergnout (nainstalovat) libusb-compat, jinak to hlásilo chbu při uploadu zkompilovaného skriptu do Arduina.

Díky Mirku za nasměrování, všechno už fachá.

Re:Arduino: jiný výstup z Win a Linuxu
« Odpověď #14 kdy: 10. 05. 2013, 21:07:59 »
Tak supr. Rádo se stalo.