PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 mit Code::Blocks



TrainMen
27.09.2014, 14:40
Hi Leute,
Kann mir jemand helfen beim Einrichten von Code::Blocks für den RP6.
Also besonders das Einbinden der Libs.

inka
27.09.2014, 14:48
Hi,
ich arbeite seit 2 jahren mit code:blocks und möchte inzwischen nichts anderes. Wo drückt der schuh?

TrainMen
27.09.2014, 14:50
Hi Inka,
wie binde ich die Libs ein ?

inka
27.09.2014, 15:07
Hi TrainMen,

ich arbeite mit der linux version, aber das müsste in der win-version identsch sein...

beim bereits angelegten projekt:

- rechte maustaste auf den projektnamen (in der linken spalte von codeblocks)
- datei hinzufügen
- bis zu lib durchklicken und c + h auswählen
- öffnen klicken
- ziel auswählen, wenn mehrere erstellungsziele angelegt sind
- Ok

man kann es uter "projekteigenschaften(bei mir properties)/erstellungsziele/(bei mir "built target files" ) noch ändern...

TrainMen
27.09.2014, 15:39
ja genau so habe ich es gemacht. Nur beim Compilieren bekomme ich die Meldung das die .h Datei nicht gefunden wird. Daraus folgernd natürlich x Fehlermeldungen. Also dachte ich das ich was falsch gemacht habe.

Ich habe zum Testen die Base Lib genommen.
in Header stehen die beiden h Files und in Sources die Lib .c sowie die RP6Base.LED.c aber die RobotBaseLib.h wird nicht gefunden.

Ich dachte nicht das es so kompliziert ist. Mir vergeht schon wieder Lust.

inka
27.09.2014, 15:52
Ich dachte nicht das es so kompliziert ist. Mir vergeht schon wieder Lust.

ist es auch nicht. Ich habe keine files für die base mit code:blocks kompiliert. Alles nur für die m32, die hast du doch auch...

könnten wir versuchen ein testprojekt mit einem der beispiele für die m32 anzulegen, damit wir es direkt vergleichen können? sage mir welche ich nehmen soll...

TrainMen
27.09.2014, 16:27
Also
Code::Blocks 13.12 frisch auf W7 installiert
Ein neues Projekt - AVR Projekt - Projekt Name Test 3 - dann 2x weiter auf Next der GCC-AVR Compiler ist ausgewählt.
Hinzufügen zum Projekt von (bei mir ein anderes Laufwerk) von
RP6Control_LCD.c das Programm
RP6Control.h
RP6ControlLib.c
RP6ControlLib.h

Die beiden .h Programme stehen in Header und die .c Programme in Sources.
Compilieren
Fehler

avr-gcc.exe -Wall -mmcu=atmega32 -DF_CPU=16000000UL -g -I"E:\Projekt RP6\WinAVR\avr\include" -c "E:\Projekt RP6\RP6Examples\RP6CONTROL_EXAMPLES\Example_01_LCD \RP6Control_LCD.c" -o "obj\Debug\E\Projekt RP6\RP6Examples\RP6CONTROL_EXAMPLES\Example_01_LCD \RP6Control_LCD.o"
E:\Projekt RP6\RP6Examples\RP6CONTROL_EXAMPLES\Example_01_LCD \RP6Control_LCD.c:34:58: error: RP6ControlLib.h: No such file or directory
E:\Projekt RP6\RP6Examples\RP6CONTROL_EXAMPLES\Example_01_LCD \RP6Control_LCD.c: In function 'runningLight':
E:\Projekt RP6\RP6Examples\RP6CONTROL_EXAMPLES\Example_01_LCD \RP6Control_LCD.c:46: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'runLight'

u.s.w

Was mach ich verkehrt.

@Dirk
Ja die RP6Config.h hatte ich vergessen sowie die Uart Files auch aber daran liegt es nicht,
- alle Dateien für die M32 eingebunden.

@inka
ich habe noch die Files aus den Common Ordner hinzugefügt, aber funktioniert auch nicht.

Dirk
27.09.2014, 16:29
Hi TrainMen,

... und denk dran, dass zur RP6 Base Library 4 Dateien gehören:
RP6Config.h
RP6RobotBase.h
RP6RobotBaseLib.h
RP6RobotBaseLib.c

Eingebunden werden auch immer:
RP6uart.h
RP6uart.c

EDIT:
Bei der R6 Control M32 Library sind es auch 4 Dateien:
RP6Config.h
RP6Control.h
RP6ControlLib.h
RP6ControlLib.c

Die RP6uart Funktions-Bibliothek wird auch immer eingebunden.

inka
27.09.2014, 17:20
hi TrainMen,

hast du in projekteigenschaften(properties) / einstellungen projekt (unten rechts) /

neues popupfenster geht auf

search direktories (oben der dritter reiter von links)

die lib direktories (jede einzeln) eingetragen?

TrainMen
27.09.2014, 17:38
hi inka
mal kurz einen Zwischenbericht.
Sieht gut aus, ich bekomme zwar jede menge Fehlermeldungen, aber die kenne ich schon, haben was mit dem Display zu tun. Scheint also zu funktionieren.

Jetzt muß ich aber erst mal Abendbrot essen. Ich melde mich morgen noch mal. Erst mal Danke.

TrainMen
27.09.2014, 23:04
Hi,

Dank inka hat es geklappt. Verstehen tuh ich es aber nicht. Denn diese Eintragungen die er erwähnt hat habe ich schon in den Globalen Compiler Einstellungen gemacht, warum ich die nochmal in jedem Projekt machen muß erschließt sich mir nicht.

Ich kann nicht sagen das ich begeistert bin. Es dauert ewig bis man coden kann, zig klicks um erst mal das Projekt einzurichten, wenn man seine Daten weit verschachtelt hat dauerts noch länger und das bei jedem Projekt Beginn. Vielleicht kann man sich ein Muster erstellen das dann Kopieren. Trotzdem sind dann noch viele umbenennungen zu machen.

Ich habe mir das alles besser vorgestellt, das Handling mit verschiedenen Libs dachte ich ist besser gelösst. Aber schon wenn man z.B. den Base Ordner mit Einbindet also Base/Common/Control so als Muster Projekt ohne Inhalt kann man nicht mehr Compilieren weil Befehle doppelt sind. Ist ja eigentlich auch klar. Im Makefile zusammen mit Notepad steht ja auch nur eine entweder die Base oder die Control. Aber bis ich darauf gekommen bin warum es hier Fehlermeldungen hagelt habe ich mir fast den Finger abgebissen.

Mal sehen was daraus wird. Ich werde es mal ein paar Tage damit arbeiten.
Vielleicht hat inka noch ein paar Tipps für mich.

inka
28.09.2014, 10:09
hi TrainMen,


Dank inka hat es geklappt. Verstehen tuh ich es aber nicht. Denn diese Eintragungen die er erwähnt hat habe ich schon in den Globalen Compiler Einstellungen gemacht, warum ich die nochmal in jedem Projekt machen muß erschließt sich mir nicht.
ich habe in den globalen einstellungen nur "/usr/lib/avr/" und bin nicht einmal sicher ob ich das eingetragen habe, ist ja nur der pfad zum compiler denke ich, alles andere ist im projekt...



Ich kann nicht sagen das ich begeistert bin. Es dauert ewig bis man coden kann, zig klicks um erst mal das Projekt einzurichten, wenn man seine Daten weit verschachtelt hat dauerts noch länger und das bei jedem Projekt Beginn. Vielleicht kann man sich ein Muster erstellen das dann Kopieren. Trotzdem sind dann noch viele umbenennungen zu machen.
die einrichtung der entwicklungsumgebung dauert etwas, man macht sie aber nur einmal. Muster/schablone habe ich nicht gemacht, ich kopiere innerhalb eines projektes die erstellungsziele - dann muss ich nur an drei stellen den pfad für die neue kompilierte datei anpassen und habe innerhalb der projektstruktur alle varianten, die es bei der entwicklung so gibt in einem zugriff. Finde ich gut...
Oder ich kopiere im dateimanager das ganze projektverzeichnis, öffnne dann in code:bolcks das "neue" projekt und muss dann ein, zwei pfade anpassen ein paar projekt-dateien umbenennen und habe dann ein komplett neues projekt. Die inkludierten dateien bleiben ja oft, oder sogar meistens und wenn nicht, kann ich es leicht unter den eigenschaften der erstellungsziele mit einbauen oder wegklicken (häckchen)....
Man kann auch aus einem erstellungsziel, wenn es in dem projekt zu unübersichtlich wird ein neues projekt erstellen (properties/erstellungsziele/projekt aus ziel erstellen)...


Ich habe mir das alles besser vorgestellt, das Handling mit verschiedenen Libs dachte ich ist besser gelösst. Aber schon wenn man z.B. den Base Ordner mit Einbindet also Base/Common/Control so als Muster Projekt ohne Inhalt kann man nicht mehr Compilieren weil Befehle doppelt sind. Ist ja eigentlich auch klar. Im Makefile zusammen mit Notepad steht ja auch nur eine entweder die Base oder die Control. Aber bis ich darauf gekommen bin warum es hier Fehlermeldungen hagelt habe ich mir fast den Finger abgebissen.
Also das doppelte vorhandensein der funktionen in den eingebundenen libs kann man nur durch wegklicken oder dazuwählen in den erstellungsziel-eigenschaften realisieren. Hast aber schon so oder so ähnlich geschrieben.
Was ich bei code:blocks gut finde ist die unabhängigkeit vom dosfenster, in linux ist es der terminal bzw. wie die "echten" linuxer sagen shell, das war mir schon immer ein greul...Um die vielen verzeichnisse für die einzelnen varianten muss ich mich z.b. im regelfall nicht kümmenr, das macht das programm für mich (sind im verzeichnis "bin")...
Und - ich weiss nicht ob das notepad bietet - beim programmieren kann ich durch einen rechtsklick auf eine funktion in meinem code die deklaration und umsetzung dieser funktion in der entsprechenden lib aufrufen. Natürlich nur dann, wenn sie eingebunden ist...
Was ich nicht realisieren konnte ist das direkte flashen der hexdatei aus code:blocks heraus, dann wäre es ideal. Immerhin kann ich von dort den RP6-loader starten, alles andere bleibt...


Mal sehen was daraus wird. Ich werde es mal ein paar Tage damit arbeiten.
Vielleicht hat inka noch ein paar Tipps für mich.
ich habe es mir "abgewöhnt" ein software-werkzeug von A biz Z sofort kennenlernen zu wollen. Dazu fehlt mir einfach die zeit :-). Ich habe alles erfasst, was ich zum normalen programmieren brauche, natürlich mit gewissen komfort, wobei man sagen muss, die linuxversion ist schon sehr rudimentär gestrickt. Sie funktioniert, aber die win-version hat sicher mehr funktionalität...
Wenn es ein problem gibt, oder ich brauche etwas, was ich noch nicht kenne - google.., es gibt auch ein (englisches) forum und die *.org seite...

Ist die windowsversion von code:blocks eigentlich in deutsch? Meine linuxversion hat son komischen mischmach aus englisch und deutsch. Aber man gewöht sich auch daran. Hauptsache kein dosfenster, make und makeclean, kein struktur wirrwar. Und keine makefiles, die laufen irgendwo im verborgenem, was mir sehr recht ist...


Wie umfangreich/gut ist die (englische?) hilfe? Suche mal nach "manual code:blocks deutsch"...

Ich fände es schade wenn Du es wieder runterschmeisst, fand ich doch bisher keinen hier der code:blocks verwendet hat. Also zähne zusammenbeissen (ohne finger dazwischen) und durch... :-)

TrainMen
28.09.2014, 12:57
Hi Inka,
Ich bekomme manchmal diese Warnung obwohl ich bei den Globalen Compiler Einstellungen bei Optimiere Code ein Häkchen habe.

Fehlermeldung:
E:\Projekt RP6\WinAVR\avr\include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"

wo kann ich das noch Einstellen ?



ich habe in den globalen einstellungen nur "/usr/lib/avr/" und bin nicht einmal sicher ob ich das eingetragen habe, ist ja nur der pfad zum compiler denke ich, alles andere ist im projekt...


naja nicht ganz, der erste Reiter ist die pfad zum compiler, der zweite ist der Linker wo eigentlich die Libs reingehören aber eben ohne das Funktioniert.



Oder ich kopiere im dateimanager das ganze projektverzeichnis, öffnne dann in code:bolcks das "neue" projekt....


ja so habe ich es im Moment auch gelösst, so richtig zufrieden bin ich aber noch nicht. Das mit dem Erstellungsziel werde ich mal ausprobieren.


ich habe es mir "abgewöhnt" ein software-werkzeug von A biz Z sofort kennenlernen zu wollen.

ja das kennen lernen kommt beim Arbeiten mit dem Programm. Aber man muß ja erst einmal eine Grundlage haben, sinnloses umher klicken bringt nichts. Das Forum zu Code:Blocks hatte ich auch gefunden, nur bei meinen Englisch Kentnissen kann ich damit nichts anfangen.
Das Programm war in Englisch, ich habe aber eine deutsche Sprachdatei von Version 10.12 eingbunden. Ich habe jetzt auch so eine Mischung aus Englisch und Deutsch.

Also gleich runterschmeissen werde ich es nicht, dafür habe ich noch zu wenig versucht. Aber ich habe es mir eben leichter vorgestellt.

inka
28.09.2014, 14:04
hi TrainMen,


Ich bekomme manchmal diese Warnung obwohl ich bei den Globalen Compiler Einstellungen bei Optimiere Code ein Häkchen habe.

Fehlermeldung:
E:\Projekt RP6\WinAVR\avr\include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"

wo kann ich das noch Einstellen ?

google ist unser freund:

habe die komplette fehlermeldung und code:blocks eingegeben:

"This warning should go away, if you use any optimization level higher than "-O0"."

also in den compilersettings eine höhere stufe der optimierung als -O0 einstellen....




Aber man muß ja erst einmal eine Grundlage haben, sinnloses umher klicken bringt nichts. Das Forum zu Code:Blocks hatte ich auch gefunden, nur bei meinen Englisch Kentnissen kann ich damit nichts anfangen.
mit der installation und den settings die du jetzt hast hast du schon mal 85% dessen was du je brauchen wirst...


Also gleich runterschmeissen werde ich es nicht, dafür habe ich noch zu wenig versucht. Aber ich habe es mir eben leichter vorgestellt.
würde mich freuen wenn du dich meldest wenn du probleme hast oder was neues gefunden hast...

TrainMen
28.09.2014, 18:23
also die Optimierung steht schon bei O3. Ich hatte Google schon befragt aber eben wahrscheinlich nur das gleich erhalten wie Du.
Egal was ich da aktiviere volle Geschwindigkeit oder größe und aufwendige Optimierung ich erhalte immer die Warnung. Ja und mal so nebenbei bemerkt bei voller größen Optimierung hat die hex 71kb mit Makefile und Notepad 47kb.

inka
28.09.2014, 19:13
Das ist ja interessant...
Ich bin jetzt nicht am pc und das einfingerschreiben am tablett ist alles andere als spass:-(...
Bis jetzt hatte ich ja keine vergleichsmöglichkeit, ab welcher größe des hexfiles kann man nicht den RP6 flashen?
Was hälst du davon wenn wir ein identisches projekt anlegen und die ergebnise wie auch die einstellungen vergleichen? Eines von den beispielen für die m32?

- - - Aktualisiert - - -

jetzt bin ich doch noch an den pc gegangen...

habe innerhalb von ca 9 minuten ein projekt "base_slave" angelegt, an den standardeinstellungen nichts geändert und eine slave.hex kompiliert mit der größe von 25.4 kb
Aber die neun minuten - dafür habe ich die zwei jahre gebraucht...


Du hast doch auch schon mit der base experimentiert. können wir morgen vergleichen und diskutieren? jetzt lockt erstmal tatort...

TrainMen
29.09.2014, 06:32
Ich verstehe nicht welchen Sinn die Globalen Einstellungen haben, denn eine Reaktion darauf gibt es nicht.
Das Problem mit der Warnung ist weg seit dem ich die Einstellungen direkt im Projekt gemacht habe. Ich ging davon aus das die Projekte dann diese "Globalen" Einstellungen übernehmen.


ab welcher größe des hexfiles kann man nicht den RP6 flashen?

Der Mega32 hat ja 32 kb Flash Speicher. Wenn man aber nun denkt das die Hex nur bis 32kb habe darf ist das falsch. Denn meine Hex hat 47kb mit dem Makefile und ich bekomme diese Ausgabe



Size before:
AVR Memory Usage
----------------
Device: atmega32

Program: 15626 bytes (47.7% Full)
(.text + .data + .bootloader)

Data: 454 bytes (22.2% Full)
(.data + .bss + .noinit)


Wie das alles zusammenhängt weiß ich auch nicht.



Was hälst du davon wenn wir ein identisches projekt anlegen...

Gesagt, getan. Ein neues Projekt "Slave" Eingebunden Libs :
RP6Config.h
RP6RobotBase.h
RP6RobotBaseLib.h
RP6RobotBaseLib.c
RP6uart.h
RP6uart.c
RP6I2CslaveTWI.c
RP6I2CslaveTWI.h

Compiliert. Die Hex hat 25kb mit Makefile Notepad hat sie 24kb

Ich muß heute Nachmittag noch mal ein Projekt mit meinem großen Programm machen. Da muß ja was falsch gelaufen sein. Denn wie man sieht sind sie ja beim Slave Projekt identisch und bei dem großen einen unterschied von 30kb.

- - - Aktualisiert - - -

ich habe mal schnell zwischen Kaffee und Schuh anziehen ein Projekt mit meinem großen Programm erstellt. Die Hex hat 85 kb. gegenüber den 47 vom Notepad.
Heute Nachmittag muß ich mal der 85 kb Hex den RP6 flashen mal sehen was der sagt.
Ich habe das doch noch schnell gemacht hat mir keine Ruhe gelassen.
Loader Meldung Code:Blocks Hex 29860 byte und Notepad Hex 15626 was macht den Code:Blocks für ein Müll mit rein ??

radbruch
29.09.2014, 08:09
Denn meine Hex hat 47kb...Hast du mal reingeschaut, was in einer HEX-Datei drinsteht? Das kann man mit jedem Editor anschauen.

Gruß

mic

inka
29.09.2014, 12:38
habe ich jetzt wieder einmal gemacht:

32spalten, unzählige zeilen voller hex-zahlen. So weit so gut, aber was sagt mir das über die größe der hexdatei? Oder über den "müll" den der compiler da reinschreibt?

kann man das irgendwo anders sehen?

TrainMen
29.09.2014, 12:45
ich habe mir das eben auch angesehen, Hex von Code::Blocks und Hex von Notepad. Identisch sind die Hex Zahlen nicht immer und bei der Hex von Code::Blocks sind die Zahlen Reihen eben länger. Aber was sollte ich denn da sehen ?

Nachtrag:

@inka
nimm doch mal bitte die Datei RP6Control_10_Move2_fast.c und compiliere sie. Im Original hat die Hex bei mir 27kb hier jetzt mit Code:Blocks 64kb. Mal zum vergleichen.

inka
29.09.2014, 13:29
RP6Control_10_Move2_fast.hex, erzeugt 14:27, 33kb

hast du noch andere libs eingebunden? global? im projekt?

TrainMen
29.09.2014, 13:35
keine weiteren Libs eingebunden, Global ist alles gelöscht da keine Wirkung, im Projekt sind es 6 .h und einschliesslich des Programms 5 .c Dateien

TrainMen
29.09.2014, 17:47
Es gibt neues.
Nach dem ich alles deinstalliert habe und neu installiert habe, noch ohne deutsche Sprache, habe ich vernünftige Hex-Grössen. Sie sind zwar immer noch 2-4kb größer als die von Notepad erzeugten aber immer hin.
Mal sehen was daraus wird.

hex hex
29.09.2014, 18:26
Hex Datei sind ASCII Zeichen und weitere Daten (adressen usw.). Das hat NICHTS mit der Größe im Programmspeicher zu tun.
Das was bei "AVR Memory Usage" ausgegeben wird, das ist die richtige Größe.

inka
29.09.2014, 19:03
habe ich vernünftige Hex-Grössen. Sie sind zwar immer noch 2-4kb größer als die von Notepad erzeugten aber immer hin.
super, bin gespannt was für erfahrungen Du nun machst...
Viel erfolg...