Fórum témák
» Több friss téma |
Fórum » Linux-szal az elektronikában
Sziasztok!
Segítséget szeretnék kérni sdcc ügyben! Ubuntut használok. Felraktamn a piklab-ot és az sdcc-t. Fut, működik minden rendesen, de amikor le akarom fordítani sdcc-vel folyton ezt a hibaüzenetet kapom: "implicit declaration" Ez mit jelent? És hogy tudnám orvosolni? Segítségeteket előre is köszönöm!
Elég régen programoztam C-ben, de valószínű (igaz nem adtad meg a C programot) hogy nincs a program elején egy vagy több változó vagy függvény deklarálva (változó nevét és típusát meg kell adni). A basicon kívűl kevés nyelv viseli el az értékadás közben létrejövő változót.
Üdv.
Van egy PikLab nevű program (olyan, mint az MPLAB) lehet mellé tenni elég sok fordítót...
PikLab - weblap Nemsokára írok róla részletesebben...
Sziasztok!
Egy másik topikban már felvetettem SDCC-s, Piklabos problémámat. Most megpróbálom itt hátha több okosság születik rá. Az alap probléma a következő: 16F818-as PIC-el szeretnék karakteres LCD-t vezérelni. Találtam is rá kész rutint, csak 18F252 PIC-re. Összerakosgattam a programot, fordítanám, és szól, hogy nem találja a PORTAbits.RA0-t. Megnéztem a headert tényleg nincs benne definíció a PORTA bitjeire. Na erre előszedtem azt a 18F-es headert amire az eredeti projekt készült. átvágólapoztam a bitek definícióját:
A projekt két fájlt tartalmaz: egy maga a főprogram, a másik az LCD kezelő. Mindkettő lefordul magában, viszont a projektet fordítva hibát kapok: error: missing definition for symbol "_PORTAbits", required by "hd44780.o" A netet végigbóklásztam minden hasonló problémánál valami lib fájllal történő linkelést írtak. Egy példa hasonló gondra Végigkerestem mindent de hasonló libio16f*.lib fájlt nem találtam a gépemen. Kínomban megnéztem a pic16f818.lib és a pic18f252.lib tartalmát. A 18-aséban találtam olyat, hogy PORTAbits, a 16f818-éban nem. Szóval az eb itt van valahol elhantolva. Hogyan lehetne módosítani a lib fájt? Bináris fájl, kézzel nem klehet babrálni. Vagy akkor közelítsük meg a másik oldalról: nekem csak a bitekre való hivatkozásra van szükségem. Hogyan lehetne megoldani egyszerűbben? Az AVR-es topikban olvastam egy megoldást, ami hasonlóan működik a 18-as headeréből kivágottal. Ott nem
így hozták létre, hanem [code ]#define PORTAbits (*(__PORTAbits_t*) PORTA_ADDR) [/code] ily módon. Az eredmény ugyanaz. ![]() A szerencsétlenkedésiemet összeraktam egy tar fájlba felrakom hátha valaki tud rá okosságot. A header fájl is benne van pic16f818m.h néven. Azt includeoltam mindenhova. Abban benne van a PORTAbits definíciója. Szóval itt állok meglőve még mindig..... Bármilyen ötletet szívesen veszek.
A .o gondolom bináris. Ezt nem tudod átirni (nincs hosszú I-m), a forrását kel módositani, és ujraforditani.
De azt is el tudom képzelni, hogy a linkelő program nem jó.
Szia!
Az *.o fájlok ha jól tudom valami objektum fájlok. Nem is ott kell keresni a problémát hanem ahogy te is mondtad a linkelésnél. Készíteni kellene egy olyan lib fájlt ami tartalmazza a Porta bitjeinek a definícióját, és azzal linkelni. Találtam róla finomságot: http://sdcc.sourceforge.net/doc/sdccman.html/node44.html Nahh erre gyorsan összedobáltam egy c fájlba a definíciót, és ráeresztettem a fenti linken leírt parancsokat. A lib fájl el is készült, de nem bináris fájl lett, hanem egy szépen olvasható html-hez hasonlító struktúrájú fájl amiben természetesen nyoma sincs a Portabits-nek. Szóval ![]()
Hogy lehet kommunikálni saját progiból Linux alatt PIC18F4550-en futó CDC Firmwarrel?
A Win COM portnak ismeri fel driver telepítés után. Linux először modemként akarja azonosítani, aztán kiírja, h nem az.
Ha jól emlékszem a /dev/ttyACM0 t kell megnyitni mint terminált.
Ja és az előző hozzászólásaimra megkerült a válasz. SVN verziót kell használni, és abban már benne van a headerekben minden fontos dolog.
cat /dev/ttyACM0 | od -t x1 -w1 -v -Ax
És elviekben máris büfizi a PIC a terminálba a szöveget. Persze ha kommunikálni is akarsz akkor szerzel valami sorosport terminált. Hadd ne mondjak most példát Linuxra van milliárd féle. Én pl. gtkTermet használok. De ez csak ízlés dolga. Szerintem lenne rá példa, mert nem mindenki tud angolul olyan szinten sajnos. Köztük én is... ![]()
Tudom, de azóta Gory írt egy cikket a témában.
Majd ha sok időm lesz akkor inkább a dolog Linuxos megközelítését írom le részleteseben.
Sziasztok!
Átolvasva a husz.okat felraktam a piklab-ot és a sdcc-t. A MC TCP-STACK jét kéne lefordítanom (a másik pic-es topikban ajánlották, hogy rakjak fel windózert... brrrrr. még a gondolat is szörnyű). Szoval hibát kapok a fordításkor. "Delay.h:42: delays.h: No such file or directory". A delays.h -t leszedtem a netről hova rakjam az sdcc-nek hogy lássa és egyáltalán kell-e neki. Köszi Zs
Válaszolok magamnak!
Megoldódott. Egyszerűen beraktam a delay.h fájl mellé és elfogadta. Érdekes viszont, hogy a fájlokban kétféle compiler-re hivatkozik. a C18 asra és a HI-tech c compilerjére. Úgynéztem az sdcc a C18-ast emulálja? Jól gondolom? Zs
Nemtudom, hogy próbáltátok-e már a Wine nevezetű programot? Ha nem kell telepíteni a windowsos programot, hanem úgyis működik hogy a telepített változatot másik gépre áthúzod pl. akkor ezzel elvileg menni fog
![]() ![]()
Én már próbáltam.
Fut a telepítős progi is. PL. PS7.0, a 8 as változat már nem, a PanoramaFactory, CoolEdit, Totalcommander. Ezek mind futnak. Viszont nem fut a stamp2.exe pedig az egy dos-os alkalmazás. Zs
Dosos progihoz használd a dosemu-t.
Illetve dosos játékokhoz a inkább a dosboxot.
Voltam az egyetemen a DSP laborban, olyan AVR32-es fejlesztőpaneleket mutattak amin Linux (BusyBox) futott. :eek2:
Arra lennék kíváncsi, h PICre is lehet-e Linuxot tenni? Milyen áramkörök kellenének hozzá? Próbáltam guglizni, de Linux alatti pic programozásra kaptam linkeket.
Nézz körül a CentOS linux körül..
Elméletileg lehet, de nem fog túl sokat tudni.
Köszi
Csak beinvitáltak 1 ilyen projektbe és mivel eddig PICeket tanulgattam, gondoltam érdekességképpen utánanézek, annak vmely típusán fut-e a Linux.
Szivesen. Szerintem max valamelyik óriási 18F-en megy talán...
Ha emlékeim nem csalnak a hackadayen volt valami ilyen projekt bemutatva dsPIC-ekkel. Bár lehet, hogy az "csak" RTOS volt és nem Linux.
Üdv!
Nincs valakinek valami infója arról, hogy miért nem működik rendesen az FTDI USB soros átalakítója Linux alatt? Beállítok egy adott baud értéket, mondjuk 19200-at. Ezt beállítva a terminálon nem jön vissza semmi. Ha 4-edét, 8-adát állítom be, akkor darab bájtra jól jönnek viszza a dolgok, de nem jó a tartalmuk. Viszont. Az USB-os JTAG adapterben is FTDI 232-van ua. a meghajtót tölti be hozzá, és az működik avrdudeval mint soros portos programozó.
Mindenhogy.
![]() minicom, gtkterm, kontorllerlab soros port monitorja. Mindegyiknél ugyanúgy rossz. A vas jó, winen megy. A sorosport driver sem rossz, mivel az avrdude sorosportként látja, ír rajta, programoz. Van valami csavar, hogy a POSIX szabvány vagy mi máshogy méri a baud értéket, valami crossplatform API doksijában legalábbis ezt olvastam. De ez nem megy sehogy sem normálisan. Paritás, stop stb stimmel. Továbbá van valami setserial nevű program, amivel tudsz olyan sorosportbeállításokhoz hozzányúlni amiket normál programokból nem lehet. Na valahol e program tájékán lehet az eb elhantolva.
Kincset leltem.
![]() ![]()
Hello!
Megtörtént a nagy áttérés, most keresem eddig használt programok linuxos változatát, helyettesítőjét. A nagyja meg i s van: eagle , povray+nextgen, kontrollerlab. Viszonont nem találok EHHEZ hasonló előlap tervezőt (wine-al sem megy ![]()
wine-val próbáltad már hogy fut-e? Én lehet hogy megpróbálom mindjárt..
|
Bejelentkezés
Hirdetés |