- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 212

Thema: Linux AVR-GCC IDE "KontrollerLab"

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    6
    Hallo zusammen, ich bins eben nochmal.

    Nach dem ich etwas mit dem Programm gearbeitet habe, habe ich einen kleinen aber doch nicht unerheblichen Bugreport zu machen. Ich habe mir den Linker etwas angesehen.
    Es gibt den Parameter:
    Code:
    -Map,project.map
    Das sollte meiner Meinung nach heissen:
    Code:
    -Map=project.map
    Korrigiert mich wenn ich falsch liege.
    Aber was viel wichtiger ist: Wenn man Trigonometrische Funktionen verwendet, dann will der Linker nicht.
    Bug:
    Code:
    avr-gcc -mmcu=atmega32 -o project.out -Wl,-Map=project.map -Wl,-lm ad.o main.o motor.o pwm.o uart.o
    
    /usr/lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/libc.a(fmod.o): In function `fmod':
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/fmod.S:72: relocation truncated to fit: R_AVR_13_PCREL against symbol `__divsf3' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_div_sf.o)
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/fmod.S:80: relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_mul_sf.o)
    /usr/lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/libc.a(fp_cosinus.o): In function `__fp_cosinus':
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/fp_cosinus.S:76: relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_addsub_sf.o)
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/fp_cosinus.S:91: relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_addsub_sf.o)
    /usr/lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/libc.a(modf.o): In function `modf':
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/modf.S:80: relocation truncated to fit: R_AVR_13_PCREL against symbol `__fixsfsi' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_sf_to_si.o)
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/modf.S:81: relocation truncated to fit: R_AVR_13_PCREL against symbol `__floatsisf' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_si_to_sf.o)
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/modf.S:93: relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_addsub_sf.o)
    /usr/lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/libc.a(sin.o): In function `sin':
    /var/tmp/cross/avr/portage/avr-libc-1.4.4/work/avr-libc-1.4.4/libm/fplib/sin.S:71: relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in /usr/lib/gcc/avr/3.4.6/avr5/libgcc.a(_addsub_sf.o)
    Eigentlich mache ich das fast genauso in meinen Makefiles, nur das die Reihenfolge etwas anders ist. Und dann funktioniert es auf einmal. Ich weiß selbst nicht so genau wieso, aber hier mein workaround:

    File klavrgcccompiler.cpp:
    Code:
    QString KLAVRGCCCompiler::getLinkerCommand( )
    {
    
        QString retVal = m_project->m_settings[ PRJ_LINKER_COMMAND ];
    
        KLDocument *it;
        // First, save all of them:
        QPtrList< KLDocument > list = m_project->getAllDocsOfType( KLDocType_Source );
        for ( it = list.first(); it; it = list.next() )
        {
            retVal += " " + m_project->getObjectFileNameFor( it->url() );
        }
    
        retVal += " -mmcu=" + m_project->currentCpuFeatures().mmcuFlag();
        retVal += m_project->attribute( "-g", PRJ_COMPILER_GDEBUG, true );
        retVal += m_project->attributeLinkerSection( "-Wl,-Ttext=0x",
                             PRJ_LINKER_START_TEXT );
        retVal += m_project->attributeLinkerSection( "-Wl,-Tdata=0x",
                             PRJ_LINKER_START_DATA );
        retVal += m_project->attributeLinkerSection( "-Wl,-Tbss=0x",
                             PRJ_LINKER_START_BSS );
        retVal += m_project->attributeLinkerSection( "-Wl,--defsym=__heap_start=0x",
                             PRJ_LINKER_START_HEAP );
        retVal += m_project->attributeLinkerSection( "-Wl,--defsym=__heap_end=0x",
                             PRJ_LINKER_END_HEAP );
        
        retVal += " -o " + m_project->getOUTFileName();
        retVal += " -Wl,-Map=" + m_project->getMAPFileName();
        
        QString buf = m_project->conf( PRJ_LINKER_FLAGS, "" ).stripWhiteSpace();
        buf.replace( "#", "," );
        if ((!buf.isEmpty()) && (!buf.isNull()))
            retVal += " " + buf;
        
    
        
        return retVal;
    }
    Das sind keine großen Änderungen, aber dann geht es auch mit sin() und cos() aus der math.h

    Ich sage jetz einmal frecherweise: Wie wäre es mit einer v0.7.1, in der diese Änderungen drinnen sind?!

    MfG
    Jürgen
    Angehängte Dateien Angehängte Dateien

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests