Перейти к содержанию
    

У меня не вышло. text ненулевой, но не работает. Ни -O2 ни -Os :(

А вот под ADuC706x - получилось, очень приличный эффект.

Я уже писал, что проект на AT91SAM7S64 ужался раза в полтора (не менее 25%) и не перестал при этом работать.

Автору (Klen) - большое спасибо за аккуратность при сборке.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я уже писал, что проект на 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, естественно).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то линкер из последней сборки для 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. Теоретически, это возможно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, что-то никак я не освою работу с обсуждаемым предметом.

Кроме, собственно, того, что Эклипс вызывает не очень хорошие эмоции, никак не разберусь с тулчейном.

 

Есть демо-проект от терровской платы с stm32f107, несколько статей в pdf-ках. Отладчик их же te-arm-link.

При заливке бинарника из проекта (т.е. который уже был в архиве) всё работает нормально. А вот скомпилить заново такой же -- ну никак..

Основная проблема сейчас -- unresolved inclusion заголовков стандартной библиотеки Си (типа stdint.h) (path к тулчейну прописан)

 

 

Пытался разобраться со структурой тулчейна -- непонятно, почему некоторые файлы повторяются несколько раз, почему папка include в корне пустая... и т.п. Помогите разобраться, пожалуйста. Очень хочеться понять.

 

На всякий случай: ОС ВинХР, 32bit, Eclipse IDE for C/C++ Developers Helios Service Release 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему в newlib используются не оптимизированные стандартные функции, например memcpy() ?

Побайтовое копирование на 32-х разрядной шине - это что-то с чем-то.

Не ожидал такого подвоха, поэтому использовал из netbsd

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему в newlib используются не оптимизированные стандартные функции, например memcpy() ?

Побайтовое копирование на 32-х разрядной шине - это что-то с чем-то.

Где именно там побайтное копирование? У Вас, случайно, не определены макросы типа PREFER_SIZE_OVER_SPEED или __OPTIMIZE_SIZE__?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 мкс

 

Где еще покопать, чтобы разобраться?

Изменено пользователем Bender

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

__OPTIMIZE_SIZE__ PREFER_SIZE_OVER_SPEED не определял, компилю с опцией -Os
Вот в -Os собака и порылась. При указании опции -Os gcc автоматически делает #define __OPTIMIZE_SIZE__ 1.

Или пересоберите newlib без -Os, или используйте свою memcpy().

 

Изменено пользователем alx2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мдя..

можно две версии тулслов собирать - одну худую другую быструю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня больше смущает то, что линкер размещает переменные по не выровненным адресам. И хотя все что надо работает работает, сомнения в правильности кода остаются. Да, к тому же хотя объем кода уменьшился, зато область ОЗУ (.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)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с ключом -flto под стек выделили не выровненную область

Хм. Ну значит пока не готов ключ -flto для использования в реальных приложениях. Вернее, не везде готов.

ЗЫ. Вот очень похожая проблема, но в кейле. Интересное совпадение:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

свежак 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

Изменено пользователем IgorKossak
Поменял местами линки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 битные сборки тулсов .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...