Сергей Борщ 143 15 ноября, 2008 Опубликовано 15 ноября, 2008 · Жалоба Текущее состояние компиллера таково что без разбора сует эту секцию всегда независимо от языка с которого компиляется исходник.А CFLAGS += -fno-exceptions не спасает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 15 ноября, 2008 Опубликовано 15 ноября, 2008 · Жалоба А CFLAGS += -fno-exceptions не спасает? при компиляции С эта опция по умолчанию должна быть выключена, так написано в описании фронтэнда GCC. C++ по умолчанию включена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 15 ноября, 2008 Опубликовано 15 ноября, 2008 · Жалоба выбери то что меньше глючить и дает лучший код Хорошо, спрошу иначе: какие потенциальные преимущества у arm-kgp-elf- перед arm-none-eabi- ? Кроме того, что свежак? :) А CFLAGS += -fno-exceptions не спасает? Да там чисто сишный примерчик. Но всё равно попробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 15 ноября, 2008 Опубликовано 15 ноября, 2008 · Жалоба Как-то IAR с этим справляется на ура: бз-з-з-з... Странно. WinAVR-20060421 (3.4.6) -Os .global netw_memcpy .type netw_memcpy, @function netw_memcpy: /* prologue: frame size=0 */ /* prologue end (size=0) */ movw r26,r24 movw r30,r22 .L7: tst r20 breq .L1 ld r24,Z+ st X+,r24 subi r20,lo8(-(-1)) rjmp .L7 .L1: ret /* epilogue: frame size=0 */ WinAVR-20060421 (3.4.6) -O2 и -O3 .global netw_memcpy .type netw_memcpy, @function netw_memcpy: /* prologue: frame size=0 */ /* prologue end (size=0) */ movw r26,r24 movw r30,r22 rjmp .L7 .L9: ld r24,Z+ st X+,r24 subi r20,lo8(-(-1)) .L7: tst r20 brne .L9 ret /* epilogue: frame size=0 */ WinAVR-20070525 (4.1.2) и WinAVR-20071221 (4.2.2) -Os, -O2 и -O3 .global netw_memcpy .type netw_memcpy, @function netw_memcpy: /* prologue: frame size=0 */ /* prologue end (size=0) */ tst r20 breq .L5 movw r26,r22 movw r30,r24 .L4: ld r24,X+ st Z+,r24 subi r20,lo8(-(-1)) brne .L4 .L5: ret /* epilogue: frame size=0 */ Что-то их не туда понесло в более свежих версиях :( То-то я не спешу менять... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 16 ноября, 2008 Опубликовано 16 ноября, 2008 · Жалоба получилось опции -Os void cpy ( char* x , char* y , size_t s ) { if ( !s ) return; size_t t = s; do { *(y++) = *(x++); } while( --t ); } 000000DC: 01FC MOVW R30,R24 Copy register pair 000000DD: 01DB MOVW R26,R22 Copy register pair 22: if ( !s ) return; 000000DE: 1541 CP R20,R1 Compare 000000DF: 0551 CPC R21,R1 Compare with carry 000000E0: F029 BREQ PC+0x06 Branch if equal 26: *(y++) = *(x++); 000000E1: 9181 LD R24,Z+ Load indirect and postincrement 000000E2: 938D ST X+,R24 Store indirect and postincrement 28: while( --t ); 000000E3: 5041 SUBI R20,0x01 Subtract immediate 000000E4: 4050 SBCI R21,0x00 Subtract immediate with carry 000000E5: CFF8 RJMP PC-0x0007 Relative jump 000000E6: 9508 RET Subroutine return это вроде то что нужно что характерно, при замене типа счетчика на char начинается маразм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 16 ноября, 2008 Опубликовано 16 ноября, 2008 · Жалоба что характерно, при замене типа счетчика на char начинается маразм. Дык надо лечить, тем более, что явно чтото сломали. Зачем мне int в счетчике, если нативный тип для AVR - unsigned char. Вот приведенный выше результат после 4.1.2 и 4.2.2 - это то, что должно быть. PS А что с падением? Или там совсем мрачно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба это вроде то что нужно Кстати, и к этому коду есть вопросы. IAR RSEG CODE:CODE:NOROOT(1) // 27 __x_z void cpy ( char* x , char* y , size_t s ) cpy: // 28 { MOV R19, R25 MOV R20, R24 // 29 if ( !s ) return; MOV R18, R16 OR R18, R17 BREQ ??cpy_0 // 30 size_t t = s; MOVW R25:R24, R17:R16 // 31 do // 32 { // 33 *(y++) = *(x++); ??cpy_1: LD R16, X+ ST Z+, R16 // 34 } // 35 while( --t ); SBIW R25:R24, 1 BRNE ??cpy_1 ??cpy_0: MOV R24, R20 MOV R25, R19 RET // 36 } И тут есть куда копать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба Кстати, и к этому коду есть вопросы. IAR какие? у ИАРа на две инструкции длинее. иар не смог сделать группировку и выполнить movw причины почему падает не смотрел, я рабочие дни работаю, хобби только по выходным Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба иар не смог сделать группировку и выполнить movw Зато GCC перестарался с циклом - лишних 3 такта на итерацию. Что суть более зло. Правда, я там видел у Вас -Os, а что будет с -O3? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 19 ноября, 2008 Опубликовано 19 ноября, 2008 · Жалоба вопрос к klen : на какую папку настроена ваша сборка avr-gcc ? при запуске avr-gcc выдает сообщение что не находит сс1. при добавлении пути к сс1 в %PATH% ругается что не находит какой-то библиотечный .o файл. в сборках WinAVR этого не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 21 ноября, 2008 Опубликовано 21 ноября, 2008 · Жалоба вопрос к klen : на какую папку настроена ваша сборка avr-gcc ? при запуске avr-gcc выдает сообщение что не находит сс1. при добавлении пути к сс1 в %PATH% ругается что не находит какой-то библиотечный .o файл. в сборках WinAVR этого не было. это косяг, такого не должно быть. Как Вы его устанавливали? 1. распаковываете архив. 2. кладете содержимое в отдельную папку XXX . 3. прописываете путь к XXX\bin все, из этого положения работатьдолжно сразу. двигать папки содержимого и файлы нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 21 ноября, 2008 Опубликовано 21 ноября, 2008 (изменено) · Жалоба так и сделал. не работает : cc1 -quiet -v -I. -Ilib -imultilib avr5 -iprefix e:\work\tools\prg\lng\c\gcc\avr\bin\../lib/gcc/avr/4.4.0/ -MD out\obj\skss_01.d -MF E:\work\projects\outcome\delta\skss_01\src\out\.dep\skss_01.o.d -MP -MQ out\obj\skss_01.o -DF_CPU=1000000UL -include skss_01.h skss_01.c -quiet -dumpbase skss_01.c -mmcu=atmega16 -auxbase-strip out\obj\skss_01.o -gdwarf-2 -Os -Wall -Wstrict-prototypes -Wundef -std=gnu99 -version -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -o c:\windows\Temp/ccTaTY11.s avr-gcc: CreateProcess: No such file or directory WinAVR 4.1.1 из той же папки компилирует нормально. и еще бинарные файлы вашей сборки намного больше чем у WinAVR : avr/bin занимает 33М против 6М. Изменено 21 ноября, 2008 пользователем ukpyr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 22 ноября, 2008 Опубликовано 22 ноября, 2008 · Жалоба 2_ukpyr 1. какой архив используете. 2. по размеру. я собираю все библиотеи с отладочной информацией. вдруг понадобится. в прошивку всервно идет только целевой код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 22 ноября, 2008 Опубликовано 22 ноября, 2008 · Жалоба 1. какой архив используете. kgp_avr-bu2.19.50_20081005-gcc4.4.0_20081003-avrlibc1.6.2.7z с последним WinAVR то же самое, пока не могу понять в чем причина. по размеру. я собираю все библиотеи с отладочной информацией. вдруг понадобится. в прошивку всервно идет только целевой код просто собираю флешку портабельного софта для работы на выездах, приходится экономить объем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 24 ноября, 2008 Опубликовано 24 ноября, 2008 · Жалоба kgp_avr-bu2.19.50_20081005-gcc4.4.0_20081003-avrlibc1.6.2.7z с последним WinAVR то же самое, пока не могу понять в чем причина. просто собираю флешку портабельного софта для работы на выездах, приходится экономить объем. я себе такую тоже сделал. для этого сделал себе MinGW с динамической конфигурацией путей в момент загрузки консоли. в пакете всегда есть msys, и все тулсы для сборки проектов win32,AVR,ARM с эклипсом трудно - на машине в которую воткнуто флеш должна быть еще и ява машина. если хотите могу выложть - переделаете под себя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться