GenaSPB 11 9 апреля, 2011 Опубликовано 9 апреля, 2011 (изменено) · Жалоба У меня не вышло. text ненулевой, но не работает. Ни -O2 ни -Os :( А вот под ADuC706x - получилось, очень приличный эффект. Я уже писал, что проект на AT91SAM7S64 ужался раза в полтора (не менее 25%) и не перестал при этом работать. Автору (Klen) - большое спасибо за аккуратность при сборке. Изменено 9 апреля, 2011 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 133 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба Я уже писал, что проект на AT91SAM7S64 ужался раза в полтора (не менее 25%) и не перестал при этом работать.AT91SAM7S64. Сборка Yagarto 20110328 (gcc 4.6.0). Без -flto: 41012 c -flto: 42996. В коде данных практически нет - scmRTOS, 10 процессов. Работает, но размер вырос на 4.5%. Сборка 20100813 (gcc 4.5.1) давала 41552 (без -flto, естественно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yun 0 16 апреля, 2011 Опубликовано 16 апреля, 2011 · Жалоба Что-то линкер из последней сборки для MIPS стал ругаться на инверсию атрибута в описании блока памяти в скрипте линкера. MEMORY { kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000 } ../../../mips-kgp-elf/bin/ld.exe: invalid syntax in flags collect2: ld returned 1 exit status Меняю ld.exe на предыдущий (4.6.0 от 25.07.2010) - все нормально компилируется. Добрый день. Если не "секрет", не могли бы рассказать как Вам удалось воспользоваться этой сборкой для работы С PIC32MX? Какой язык программирования используется (C или C++) ? Какой отладчик используете? Интересует возможность применения C++ для работы с PIC32MX, использую эту сборку и стандартные средства отладки от Microchip. Теоретически, это возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lionet 0 17 апреля, 2011 Опубликовано 17 апреля, 2011 · Жалоба К сожалению, что-то никак я не освою работу с обсуждаемым предметом. Кроме, собственно, того, что Эклипс вызывает не очень хорошие эмоции, никак не разберусь с тулчейном. Есть демо-проект от терровской платы с stm32f107, несколько статей в pdf-ках. Отладчик их же te-arm-link. При заливке бинарника из проекта (т.е. который уже был в архиве) всё работает нормально. А вот скомпилить заново такой же -- ну никак.. Основная проблема сейчас -- unresolved inclusion заголовков стандартной библиотеки Си (типа stdint.h) (path к тулчейну прописан) Пытался разобраться со структурой тулчейна -- непонятно, почему некоторые файлы повторяются несколько раз, почему папка include в корне пустая... и т.п. Помогите разобраться, пожалуйста. Очень хочеться понять. На всякий случай: ОС ВинХР, 32bit, Eclipse IDE for C/C++ Developers Helios Service Release 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bender 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба А почему в newlib используются не оптимизированные стандартные функции, например memcpy() ? Побайтовое копирование на 32-х разрядной шине - это что-то с чем-то. Не ожидал такого подвоха, поэтому использовал из netbsd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alx2 0 19 апреля, 2011 Опубликовано 19 апреля, 2011 · Жалоба А почему в newlib используются не оптимизированные стандартные функции, например memcpy() ? Побайтовое копирование на 32-х разрядной шине - это что-то с чем-то. Где именно там побайтное копирование? У Вас, случайно, не определены макросы типа PREFER_SIZE_OVER_SPEED или __OPTIMIZE_SIZE__? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bender 0 19 апреля, 2011 Опубликовано 19 апреля, 2011 (изменено) · Жалоба newlib 1.19 вот тут смотрел __OPTIMIZE_SIZE__ PREFER_SIZE_OVER_SPEED не определял, компилю с опцией -Os Полез разбираться дальше для тестирования делаю так while(1) { LED1_ON; memcpy((void *)test1, (const void *)test2, 512); LED1_OFF; } 1.Оказалось что массивы легли в памяти не выровненными, несмотря на указание unsigned int test1[128] __attribute__ ((__aligned__(8))); unsigned int test2[128] __attribute__ ((__aligned__(8))); 0x400023cd test1 0x40002884 test2 выровнял, введя доп. переменные. Ничего не изменилось. по времени выходит 87 мкс 2.Для netbsd ситуация гораздо лучше: все тоже самое, только времени занимает 8.2 мкс Где еще покопать, чтобы разобраться? Изменено 19 апреля, 2011 пользователем Bender Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alx2 0 22 апреля, 2011 Опубликовано 22 апреля, 2011 (изменено) · Жалоба __OPTIMIZE_SIZE__ PREFER_SIZE_OVER_SPEED не определял, компилю с опцией -OsВот в -Os собака и порылась. При указании опции -Os gcc автоматически делает #define __OPTIMIZE_SIZE__ 1. Или пересоберите newlib без -Os, или используйте свою memcpy(). Изменено 22 апреля, 2011 пользователем alx2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 22 апреля, 2011 Опубликовано 22 апреля, 2011 · Жалоба мдя.. можно две версии тулслов собирать - одну худую другую быструю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bender 0 22 апреля, 2011 Опубликовано 22 апреля, 2011 · Жалоба Меня больше смущает то, что линкер размещает переменные по не выровненным адресам. И хотя все что надо работает работает, сомнения в правильности кода остаются. Да, к тому же хотя объем кода уменьшился, зато область ОЗУ (.bss) раздулась с 8 до 13 кбайт. Например, если линкер будет собирать без ключа -flto получим это: 0x40001580 dbg_buf 0x40001600 ... с ключом -flto выделилось больше ОЗУ 0x40000409 dbg_buf *fill* 0x40000df4 0x4 00 .bss 0x40000df8 0x898 C:\temp\ccOPsERd.ltrans2.ltrans.o 0x40000df8 ... без ключа -flto получим это: 0x40000fec task_io_stack 0x400011ec task_enc с ключом -flto под стек выделили не выровненную область 0x400025d1 task_io_stack 0x400027d1 task_enc И такое место не одно. Хотелось бы понять механизм оптимизации, как им управлять и почему не реагирует на __attribute__ ((__aligned__(8))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 22 апреля, 2011 Опубликовано 22 апреля, 2011 · Жалоба с ключом -flto под стек выделили не выровненную область Хм. Ну значит пока не готов ключ -flto для использования в реальных приложениях. Вернее, не везде готов. ЗЫ. Вот очень похожая проблема, но в кейле. Интересное совпадение:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 25 апреля, 2011 Опубликовано 25 апреля, 2011 (изменено) · Жалоба свежак host x86_64 таргет arm: http://www.klen.org/Files/DevTools/kgp-arm..._64_20110424.7z проект 15к ужал еще на 16 байт ;) таргет x86_64: http://www.klen.org/Files/DevTools/kgp-x86...w32_20110424.7z Изменено 25 апреля, 2011 пользователем IgorKossak Поменял местами линки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 25 апреля, 2011 Опубликовано 25 апреля, 2011 · Жалоба А я всё жду варианта под линукс... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bender 0 26 апреля, 2011 Опубликовано 26 апреля, 2011 · Жалоба А я жду под win32... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 26 апреля, 2011 Опубликовано 26 апреля, 2011 · Жалоба host x86_64-linux-gnu target x86_64-linux-gnu (201 Mb) http://www.klen.org/Files/DevTools/linux-x...20110426.tar.7z target x86_64-mingw32 (74 Mb) http://www.klen.org/Files/DevTools/linux-x...20110426.tar.7z target kgp_arm_eabi ( 41 Mb) http://www.klen.org/Files/DevTools/linux-x...20110426.tar.7z для исполнения бинарей последних двух нужны сошки из x86_64-linux-gnu ( 25 Mb ) http://www.klen.org/Files/DevTools/linux-x...20110426.tar.7z это выдернуто из x86_64-linux-gnu и чуток почищено. просьба к тем кто использует на хосте x86_64-linux-gnu пройтись ldd по бинарям тулсов и дать список сошек которые они реально используют, я тогда скриптик напишу чтоб не всю директорию с либами выкладывать а выдирать только те что нужны. для хоста x86_32-mingw32 пожже соберу как время будет. Вам повезло! у меня завелся осцил на который поставлен 32 битный говновиндовс (как же без ложки говна в бочке меда!) и чтоб осцил окончательно сответствовал требованиям к минизаводу по разработке девайсов - туда будут засовыватся 32 битные сборки тулсов . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться