Forum: Compiler & IDEs IAR Makefile zu AVR-Studio Makefile


von Rolf (Gast)


Angehängte Dateien:

Lesenswert?

Saletti Miteinander!

Habe da eine kleine Frage betreffend Makefile. Ich probiere ein 
IAR-Projekt in AVR-Studio zu integrieren. Ich glaube das ist die 
Vorstufe zur Hölle, aber egal, es MUSS irgendwie gehen. Hab es zwei mal 
probiert und wieder komplett gelöscht da immer mehr Fehler. Nun der 
dritte und hoffentlich erfolgreiche Versuch.
Im Makefile von IAR ist ein Teil namens OPTIONS vorhanden, bei dem 
einzelne Flags sind die ich übernehmen will für AVR-Studio. Wo kommen 
die beim GCC-Makefile rein? Hab einfach mal eins mit mfile erstellt.
Zusätzlich hats da noch SECURITY_FILES und GATEWAY_FILES, welche 
projektspezifisch sein müssen... aber im Code wird das nirgends 
aufgegriffen. Es sind einfach .c-Files gelistet. Ist das für den 
IAR-Compiler?

Im Anhang noch das entsprechende IAR-Makefile.

Please help, ich dreh langsam am Rad!!
Gruss
Rolf

von Jo S. (tigermatze)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe das erst gestern durchexerziert.
Ich benutze IAR und WinAVR(AVR-GCC).
Mein IAR-Compiler erzeugt kein Makefile (bzw. erstellt es evtl. beim 
compilieren und löscht es dann wieder). Da nutze ich die 
Einstellmöglichkeiten unter den Projekt-Optionen.
Im WinAVR habe ich auch erste mit einem exernen Makefile experimentiert, 
aber dann festgestellt, dass es ebenfalls mit den Projekt-Optionen 
einfacher geht. Ich habe trotzdem mal das generierte Makefile in den 
Anhang gepackt.

mfg

von Rolf (Gast)


Lesenswert?

Hi Jo Sen

danke erstmal für die Antwort. Da ich von IAR eins hatte wollte ich 
eigentlich diesen Weg gehen, um dann für weitere Projekte mit dem Chip 
schon eine Vorlage zu haben. Habe nun aber auch über die 
Projekteinstellungen angefangen, scheint mir auch leichter zu sein.
by the way; Hast du sowas schon mal gesehen?
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  #ifndef _IAR_SYSTEMS_ASM_
  extern __no_init __root volatile int8u  emResetCause;
  extern __no_init __root volatile int8u  emResetCauseMarker;
  extern __no_init __root volatile int16u emResetRStack;
  extern __no_init __root volatile int16u emResetCStack;
  #endif
#endif //DOXYGEN_SHOULD_SKIP_THIS

irgendwie mag er das root dort nicht in den 4 Zeilen...
(Fehler: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'__root')

Gruss Rolf

von Jo S. (tigermatze)


Lesenswert?

Hab ich noch nicht gesehen.

__no_init besagt, dass die Variable nicht mit einem Standardwert 
initialisiert werden soll.
__root besagt, dass die Variable in den code eingefügt wird auch wenn 
sie nicht genutzt wird.

Über google hab ich gelesen, dass evtl. __root nicht funktioniert wenn 
die Variable als __no_init deklariert wurde.

mfg

von Rolf (Gast)


Lesenswert?

Danke für die Antwort
Ich hab nun mal abwechselnd beide Attribute ausgeklammert, jedoch 
bekomme ich immernoch eine ähnliche Fehlermeldung, einfach mit 
expected... before 'volatile'. Wenn ich alle drei Attribute ausklammere 
gehts natürlich, aber ob dann das Programm noch läuft ist eine andere 
Frage.
Werde es mal ausprobieren

Grüsse

von Gerald G. (gerald10)


Lesenswert?

hallo rolf,
hattest du erfolgt mit dem makefile? kannst es mir hochladen? wie sind 
deine compile und linker aufrufe? welchen iar compiler bzw linker nimmst 
du?

bye

von Gerald G. (gerald10)


Lesenswert?

ich will für diese demo sample ein makefile für den IAR compiler 
erstellen:

/**************************************************
 *
 * This is a LED chaser example program for the AVR
 * STK500 starter kit evaluation board. This program
 * works for all AVRs.
 *
 * Description:
 * This program will turn on the User LEDs one at
 * a time and circulate this procedure in a forever
 * loop.
 *
 * Copyright 1996 -2005 IAR Systems. All rights reserved.
 *
 * $Revision: 1.1 $
 *
 **************************************************/


// Include I/O definition file
#include <ioavr.h>
#include <intrinsics.h>

int main( void )
{
    unsigned char  led;

    PORTB   = 0xFF; // Give PORTB and the User LEDs an initial 
startvalue

    led     = 1;    // Start with LED0

    DDRB    = 0xFF; // Set PORTB as output

    while(1)        // Eternal loop
    {
        PORTB = ~led;   // Invert the output since a zero means: LED on
        led <<= 1;      // Move to next LED by performing a rotate left

        if (!led)
          led = 1;      // If overflow: start with LED0 again

        __delay_cycles(500000);  // Wait for 500 000 cycles
    }
}

von Gerald G. (gerald10)


Lesenswert?

ich hab mal hier reingeschaut: 
http://www.barello.net/avrx/AvrX-2.6/IAR-GCC-Avrx-2.6.zip
die verwenden auch IAR und haben ein makefile...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.