Archiv verlassen und diese Seite im Standarddesign anzeigen : nach update funktioniert nix mehr
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
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.
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.
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)]
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.