PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nach update funktioniert nix mehr



cploj
14.01.2009, 21:11
hallo, ich hab grad versucht die neue asuro lib von der asuro wiki zu installieren. nun kann ich keine hex dateien mehr erzeugen. ich bekomme immer folgende meldung:
"make: *** No rule to make target `test.hex', needed by `all'. Stop."

hab laut wiki alles richtig gemacht. was muss ich nur tun???

danke für jede hilfe,
christian

cploj
14.01.2009, 21:32
ok.. jetzt wird zumindest wieder kompiliert. aber ich merke nichts von folgender sache:


Der Vorteil der Objekt Bibliothek gegenüber der Quellode Bibliothek ist die drastisch reduzierte Größe der Hex-Files. Im Gegensatz zur Quellcode Bibliothek werden nur die Objekt Files gelinkt, die vom Benutzer Programm aufgerufen werden. Bei der Quellcode Bibliothek werden immer alle Files gelinkt, unabhängig davon ob sie überhaupt benötigt werden.

das FlashProgramm überträgt immer noch genau so viele Pages wie vorher... Wo könnte mein Fehler liegen?

malediction
14.01.2009, 21:43
ich glaube die reduzierte größe der hex dateien macht sich erst bei sehr großen, komplexen programmen bemerkbar. und da du - wie ich auch - anfänger bist, gehe ich davon aus, dass deine programme noch recht klein sind.

ist bei mir aber auch so. meine hex-files sind teilweise sogar größer als vorher, weil asuro ja jetzt - dank der neuen lib - theoretisch MEHR kann.

cploj
14.01.2009, 21:56
aha. das klingt plausibel... danke

radbruch
14.01.2009, 22:57
Hallo

So wie ich das verstanden habe sollten Funktionen nur eingebunden werden wenn sie auch benötigt werden. Hier mal ein Test:

//#include "asuro.h"

int main(void)
{
while(1);
}

..erzeugt bei mir 102 Bytes Programm. Mit include der normalen asuro-Library (Version 2.3 mit IR-Erweiterung) sind es über 1800 Bytes. Nun sollte man das noch mit der aktuellen Lib kompilieren. Da ich die aktuelle Lib nicht verwende kann ich das nicht testen, würde aber erwarten, dass irgendwas dazwischen, idealerweise nahe bei den 102 Bytes erzeugt wird. Und ich würde erwarten dass der Code länger wird wenn eine Funktion der Lib verwendet wird. Und der Codezuwachs bei der ersten Verwendung einer Funktion sollte größer sein als bei weiteren Verwendungen der selben Funktion (außer Inline ;)....

Gruß

mic

Hab' ich gleich mal weitergetestet:

1814 Bytes:

#include "asuro.h"

int main(void)
{
while(1);
}


1818 Bytes:

#include "asuro.h"

int main(void)
{
StatusLED(RED);
while(1);
}(Funktionsaufruf und Konstante?)

1822 Bytes:

#include "asuro.h"

int main(void)
{
StatusLED(RED);
StatusLED(RED);
while(1);
}


Wie erwartet bindet die normale Lib die Funktionen immer ein, das Programm wird nur um die Aufrufe länger.

cploj
14.01.2009, 23:01
hm. Interessanterweise ergibt das bei mir eine hex Datei mit 2026 Bytes

radbruch
14.01.2009, 23:11
Welche Version ist denn deine Lib? Das steht in asuro.c ganz oben. Ich verwende die ältere Version mit Wastes IR-Modifikation:


/************************************************** *****************************
*
* File Name: asuro.c
* Project : ASURO
*
* Description: This file contains ASURO main features
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* 1.00 14.08.2003 Jan Grewe build
* 2.00 14.10.2003 Jan Grewe LEFT_VEL, RIGHT_VEL -> MotorSpeed(unsigned char left_speed, unsigned char right_speed);
* LeftRwd(),LeftFwd(),RightRwd(),RigthFwd() -> MotorDir(unsigned char left_dir, unsigned char right_dir);
* GREEN_ON,GREEN_OFF,RED_ON,RED_OFF -> StatusLED(unsigned char color);
* LED_RED_ON, LED_RED_OFF -> FrontLED(unsigned char color);
* Blink(unsigned char left, unsigned char right) -> BackLED(unsigned char left, unsigned char right);
* Alles in Funktionen gefasst => leichter verständlich ?!?!
* 2.10 17.10.2003 Jan Grewe new Timer funktion void Sleep(unsigned char time36kHz)
*
* Copyright (c) 2003 DLR Robotics & Mechatronics
************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library "Robotrixer Buxtehude"
*
* Description: This file contains additional functions:
*
* signal (SIG_ADC) interrupt/signal routine for encoder-counter
* signal (SIG_INTERRUPT1) signal for switches
* Encoder_Init() initializing encoder-counter
* Encoder_Start() start autoencoding
* Encoder_Stop() stop autoencoding
* Encoder_Set(int,int) set encodervalue
* Msleep(int delay) wait for delay in milliseconds
* Gettime() get systemtime in milliseconds
* PrintInt(int)
*
* modifications in Sleep, SIG_OUTPUT_COMPARE2, PollSwitch, LineData
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* beta1 31.03.2005 Robotrixer asuro library
* ------- ---------- -------------- ------------------------------
* the encoder source is based on RechteckDemo.c ver 2.0 by Jan Grewe 22.10.2003
* Copyright (c) 2003 DLR Robotics & Mechatronics

************************************************** ***************************/
/************************************************** **************************
*
* File Name: asuro.c
* Project : asuro library modified for IR collision detector
*
* Description: modifications made in following functions:
*
* SIGNAL (SIG_OUTPUT_COMPARE2) -> SIGNAL (SIG_OVERFLOW2)
* Gettime() counts now 36kHz
* Init() timer2 modified for adjustable duty cycle
* Batterie() bug fixed
* Sleep() counts now 36kHz
* Msleep() counts now 36kHz
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* beta2 11.06.2005 Waste asuro library
* ------- ---------- -------------- ------------------------------
************************************************** ***************************/


Die optimierten Versionen beginnen bei 2.7 oder so ... [Link (https://www.roboternetz.de/phpBB2/viewtopic.php?p=275614#275614)]

cploj
15.01.2009, 08:27
aha. ich habe die 2.8.0 version installiert. liegts vll. daran?

m.a.r.v.i.n
15.01.2009, 22:14
Hallo,

ich komme auch auf 2026 Bytes Hexfile Größe für das 1. Beispiel von radbruch. Das liegt aber daran, weil im Makefile explizit noch die asuro.c eingebunden wird. Damit werden natürlich auch alle Funktionen aus der asuro.c eingebunden, und alle Funktionen, die aus der AsuroLib von asuro.c aus aufgerufen werden, bzw. alle Interrupt Funktionen.
Wenn ich asuro.c aus dem Makefile entferne, komme ich auf 300 Bytes Hexfile Größe.

@radbruch Sind deine Größenangaben der belegte Programmspeicher oder die Hexfile Größen?

radbruch
15.01.2009, 23:44
Hallo

Ich verwende KamAVR und erhalte diese Ausgabe (im Anhang) nach einem Klick auf [Make].

Das Hexfile mit 102 Bytes sieht so aus:

:1000000012C02BC02AC029C028C027C026C025C0C6
:1000100024C023C022C021C020C01FC01EC01DC0DC
:100020001CC01BC01AC011241FBECFE5D4E0DEBF28
:10003000CDBF10E0A0E6B0E0E6E6F0E002C005903B
:100040000D92A036B107D9F710E0A0E6B0E001C0EC
:100050001D92A036B107E1F701C0D2CFCFE5D4E0C1
:06006000DEBFCDBFFFCFA3
:00000001FF

6 komplette Zeilen zu je 16 Bytes + 6 einzelne Bytes. (Zieladresse, Daten, CRC?)

Gruß

mic

m.a.r.v.i.n
16.01.2009, 10:44
Hallo radbruch,

ok, damit komme ich dann auf folgende (Programmspeicher) Größen, mit WinAVR20080610.

1. 100 Bytes (manuelles anpassen des Makefiles, asuro.c entfernt)
2. 714 Bytes
3. 718 Bytes
4. 722 Bytes