Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: свежак KGP win32/arm/avr/mips/m68k
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
klen
2_Mitsufan
дока по бинутилсам http://sourceware.org/binutils/docs-2.21
по gcc http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/
изменения 4.5->4.6 http://gcc.gnu.org/gcc-4.6/changes.html
отличия в 4.7 пока нельзя описать(ну тоесть можно но доки такой не существует, правла есть местами описание куда двигается процесс) поскольку 4.7 это код где поживому правки вносятся. различия только для релизов публикуется (то у чего код заморожен). а если нада то все svn в виде диффов покажет.

и как вам ядро M4K ? у меня есть теория что мипс есть наилучшая процессорная архитектура, только почемуто она не сильно в массы пропихивается. с другими сравнить можете хотябы по ощущениям. gcc должен для мипсов давать очень хороший код - архитектора ядра академическая.

2_demiurg_spb
да планирую, темболее что в выходные то что собралось компиляло мой проект с dwarf2 и компиллер не падал, и я даже собирал для говновиндовса, и даже под варстудией тестил - но чтото мне там не понравилось я и не стал выкладывать.
короче говоря я выложу сборку - а там посмотрим че получится. всетаки как я понял атмелу пипец со всех сторон. кстате что касается атмела вобщем то атмел достиг апофеоза маразма : http://www.terraelectronica.ru/news_postup.php?ID=2184 даже если они случайно нулик по ошибке сзади цены дописали - всервно атмелу кирдык. чтоб спастись атмел должен раздавать иструментальные средства с доплатой, килограммом травы, бутылкой водки и пирожком в придачу.

и вообще, я раньше критически относился к потенциалу нашей родины и качеству людского матреиала... но вот "у них" ведь тоже есть перлы. один из последних это вебдизайн сайта ST Microelectronix ( www.st.com ) - это что с чем то... посмотрев это становится спокйно на наше тихое болото - нефига они нас не победят wink.gif ножки подломятся
Andrew L
Добрый день. Пытаюсь писать под mips из под винды. После компиляции элементарной С программы в ассемблерном листинге функция main начинается с addiu sp,sp, -16. После выполнения данной команды процессор сваливается в исключение. Значение регистра sp до этого не трогал. Если оно изначально нулевое, то он попадает в конец области памяти, которая не существует физически(размер ОЗУ и ПЗУ меньше) Отсюда сделал вывод, что нужно инициализировать указатель стека. Как указать компилятору начало стека, области памяти(ОЗУ, ПЗУ)? Подозреваю что это делается в startup коде, но примеров под mips не нашел.
ukpyr
Цитата
ставить весь MSYS нет необходимости, вы его всеравно не будете использовать при работе. изза 4 файлов ставить сотню другую, незачем http://klen.org/Files/DevTools/make_sh_rm_touch.7z только тех утилит что мспользуются при сборке проектов с помощью make
закинул этот make в папку bin mingw-win32 - не запускается (вернее запускается но ничего не выводит в консоль и не выполняет Makefile). Из другой папки - нормально. Так и должно быть ?
Genadi Zawidowski
У кого для cortex-m3 получилось собрать с -Os -flto ? У меня ни одной непустой секции .text не находится...
AHTOXA
У меня не вышло. text ненулевой, но не работает. Ни -O2 ни -Os sad.gif
А вот под ADuC706x - получилось, очень приличный эффект.
Genadi Zawidowski
Цитата(AHTOXA @ Apr 9 2011, 22:47) *
У меня не вышло. text ненулевой, но не работает. Ни -O2 ни -Os sad.gif
А вот под ADuC706x - получилось, очень приличный эффект.

Я уже писал, что проект на AT91SAM7S64 ужался раза в полтора (не менее 25%) и не перестал при этом работать.
Автору (Klen) - большое спасибо за аккуратность при сборке.
Сергей Борщ
QUOTE (Genadi Zawidowski @ Apr 9 2011, 23:20) *
Я уже писал, что проект на 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
Цитата(Mitsufan @ Mar 31 2011, 00:54) *
Что-то линкер из последней сборки для 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
К сожалению, что-то никак я не освою работу с обсуждаемым предметом.
Кроме, собственно, того, что Эклипс вызывает не очень хорошие эмоции, никак не разберусь с тулчейном.

Есть демо-проект от терровской платы с stm32f107, несколько статей в pdf-ках. Отладчик их же te-arm-link.
При заливке бинарника из проекта (т.е. который уже был в архиве) всё работает нормально. А вот скомпилить заново такой же -- ну никак..
Основная проблема сейчас -- unresolved inclusion заголовков стандартной библиотеки Си (типа stdint.h) (path к тулчейну прописан)


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

На всякий случай: ОС ВинХР, 32bit, Eclipse IDE for C/C++ Developers Helios Service Release 2
Bender
А почему в newlib используются не оптимизированные стандартные функции, например memcpy() ?
Побайтовое копирование на 32-х разрядной шине - это что-то с чем-то.
Не ожидал такого подвоха, поэтому использовал из netbsd
alx2
Цитата(Bender @ Apr 18 2011, 12:31) *
А почему в newlib используются не оптимизированные стандартные функции, например memcpy() ?
Побайтовое копирование на 32-х разрядной шине - это что-то с чем-то.
Где именно там побайтное копирование? У Вас, случайно, не определены макросы типа PREFER_SIZE_OVER_SPEED или __OPTIMIZE_SIZE__?
Bender
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 мкс

Где еще покопать, чтобы разобраться?
alx2
Цитата(Bender @ Apr 19 2011, 11:59) *
__OPTIMIZE_SIZE__ PREFER_SIZE_OVER_SPEED не определял, компилю с опцией -Os
Вот в -Os собака и порылась. При указании опции -Os gcc автоматически делает #define __OPTIMIZE_SIZE__ 1.
Или пересоберите newlib без -Os, или используйте свою memcpy().
klen
мдя..
можно две версии тулслов собирать - одну худую другую быструю.
Bender
Меня больше смущает то, что линкер размещает переменные по не выровненным адресам. И хотя все что надо работает работает, сомнения в правильности кода остаются. Да, к тому же хотя объем кода уменьшился, зато область ОЗУ (.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
Цитата(Bender @ Apr 22 2011, 18:10) *
с ключом -flto под стек выделили не выровненную область

Хм. Ну значит пока не готов ключ -flto для использования в реальных приложениях. Вернее, не везде готов.
ЗЫ. Вот очень похожая проблема, но в кейле. Интересное совпадениеsm.gif
klen
свежак host x86_64

таргет arm:
http://www.klen.org/Files/DevTools/kgp-arm..._64_20110424.7z
проект 15к ужал еще на 16 байт wink.gif

таргет x86_64:
http://www.klen.org/Files/DevTools/kgp-x86...w32_20110424.7z
AHTOXA
А я всё жду варианта под линукс... sm.gif
Bender
А я жду под win32...
klen
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 битные сборки тулсов .
AHTOXA
Цитата(klen @ Apr 26 2011, 12:03) *
target kgp_arm_eabi ( 41 Mb)


Докладываюsm.gif
Во-первых, распаковалось опять с ругательствами, ну да мы уже привыкшиsm.gif
Итак, по шагам:
1. Исправить симлинк с именем lib64, чтоб указывал на папку lib (в mc встать на "lib64", F9-Файл-Правка ссылки, ввести "lib");
2. Из второго архива, который с либами (kgp_x86_64-linux-gnu-lib-20110426.tar.7z), копируем в папку lib следующие файлы:
Код
libcloog.so.0
libcloog.so.0.0.0
libgmpxx.so.4
libgmpxx.so.4.1.2
libmpc.so.2
libmpc.so.2.0.0
libppl_c.so.4
libppl_c.so.4.0.0
libppl.so.9
libppl.so.9.0.0
libpwl.so.5
libpwl.so.5.0.0

Потом делаем
sudo ldconfig /home/me/kgp/lib
И всё начинает компилиться.
К сожалению, мой тестовый проект не заработал, пока не знаю в чём дело.
klen
Цитата(AHTOXA @ Apr 26 2011, 20:09) *
К сожалению, мой тестовый проект не заработал, пока не знаю в чём дело.

у меня вроде работают - FreeRTOS,USB,вычисления с плавучкой... еслиб че то вылезло гденибудь...
найдете косяг сообщите в чем. а то малоли че - Родина в опасности!



значит нада копипастить всего
libcloog
libgmpxx
libmpc
libppl_c
libppl
libpwl
Я тут подумал... можно их статически залинковывать - тогда и головной боли не будет, что чтото забыть положить можно. например libmpfr, libiberty,... я не вижу в списке - значит какято часть либов статически влинковалось.. нада причесать все единообразно.
AlexeyVoroshen
Здравствуйте, уважаемые.

Я использовал ранее в своих проектах только ARM7TDMI, GCC от kgp_arm_eabi и yagartoo.
а сейчас пытаюсь переползать на Cortex-M3.
Но никак не выходит то что надо,
а надо:
Cortex-M3 (STM32F103) and FreeRTOS and C++ and (kgp_arm_eabi or yagartoo)

Поделитесь пожалуйста файликами: скрипт линкера + startup + makefile
если кто может.

Заранее спасибо.
AHTOXA
Посмотрите пример из scmRTOS. Там c, cpp, kgp.
AlexeyVoroshen
to АНТОХА:

спасибо, изучаю.
Bender
Цитата(klen @ May 22 2011, 20:02) *


Ждем под х86_32....
klen
Цитата(Bender @ May 23 2011, 10:02) *
Ждем под х86_32....

да когдаж Вы ужо поставите эмулятор x86_64 sm.gif

пожже будет... интересно.... а наши думские депутаты могут запретить 32 битные вычисления? я думаю в нашей стране всеможно! и сразу.
Bender
Цитата(klen @ May 23 2011, 13:51) *
да когдаж Вы ужо поставите эмулятор x86_64 sm.gif

пожже будет... интересно.... а наши думские депутаты могут запретить 32 битные вычисления? я думаю в нашей стране всеможно! и сразу.

Работодателю не объяснишь, разве что правда запретят sm.gif
Ash_snz
Продолжаем мучать MIPS. Начали использовать FPU, даже заработало. Но только добавили в прогу cos & sin, как начались проблемы.
Выяснили, что помимо math.h ld-шнику нужно добавлять библиотеку. Добавили -lm.
Проблемы:
-используем -mhard-float, ибо есть сопроцессор, а libm такое подозрение отбилдена под msoft-float. Ругается на не совместимость sad.gif
-периодически ругается на ключ -G и размеры некого small-data section (кажется победили ключом -mno-gpopt).
-начала возмущаться на использование memcpy (попробуем отключить его использование(-mno-memcpy), хотя она сама его юзает...)

Вопросы:
1. Как можно пересобрать библиотеку libm (или все остальные тоже) под -mhard-float?
2. Нормально ли, что требуется пересобрать библиотеку, или я чего-то недопонял?
3. Что такое GP регистр(в проце есть такой регистр, но он не 64КБ), и почему возникают ошибки подобного рода?
Код
Small-data section exceeds 64KB; lower small-data size limit; (see option -G)
Информации про этот -G кот наплакал sad.gif
Даже не знаю где почитать.
klen
Цитата(Ash_snz @ May 25 2011, 08:41) *
Продолжаем мучать MIPS. Начали использовать FPU, даже заработало. Но только добавили в прогу cos & sin, как начались проблемы.
Выяснили, что помимо math.h ld-шнику нужно добавлять библиотеку. Добавили -lm.
Проблемы:
-используем -mhard-float, ибо есть сопроцессор, а libm такое подозрение отбилдена под msoft-float. Ругается на не совместимость sad.gif
-периодически ругается на ключ -G и размеры некого small-data section (кажется победили ключом -mno-gpopt).
-начала возмущаться на использование memcpy (попробуем отключить его использование(-mno-memcpy), хотя она сама его юзает...)

Вопросы:
1. Как можно пересобрать библиотеку libm (или все остальные тоже) под -mhard-float?
2. Нормально ли, что требуется пересобрать библиотеку, или я чего-то недопонял?
3. Что такое GP регистр(в проце есть такой регистр, но он не 64КБ), и почему возникают ошибки подобного рода?
Код
Small-data section exceeds 64KB; lower small-data size limit; (see option -G)
Информации про этот -G кот наплакал sad.gif
Даже не знаю где почитать.


все правильно ругается - собрано для M4K из picс32 - там нет сопроцессора как я понима. что у вас за девайс с сопроцессором - очегь интересуюсь. могу сделать сборку - все тоже но с поддержкой плавучки, посмотрим что выйдет.
нада пробывать.
понимаете правильно - для любого ядра с какойто фичей (тут нада понимать - набор доп инструкций) нада все прересообирать для того чтоб сам компиллер юзал эти фичи при компиляции Вашего кода и библиотеки были собраны этим же компиллером с использованием фич.
Так что все хорошо пока - хорошо когда явление объяснимо sm.gif
под какую хост-машину сборку нада сделать?
Ash_snz
Цитата(klen @ May 25 2011, 12:14) *
все правильно ругается - собрано для M4K из picс32 - там нет сопроцессора как я понима. что у вас за девайс с сопроцессором - очегь интересуюсь. могу сделать сборку - все тоже но с поддержкой плавучки, посмотрим что выйдет.
нада пробывать.
понимаете правильно - для любого ядра с какойто фичей (тут нада понимать - набор доп инструкций) нада все прересообирать для того чтоб сам компиллер юзал эти фичи при компиляции Вашего кода и библиотеки были собраны этим же компиллером с использованием фич.
Так что все хорошо пока - хорошо когда явление объяснимо sm.gif
под какую хост-машину сборку нада сделать?
Очень рад! Ваша помощь просто неоценима! sm.gif

Проц, точнее система на кристалле называется 5890ВЕ1Т. Собрана она на базе MIPS проца архитектуры R3000. В составе имеет системный контроллер, сопроцессор для обработки чисел с плавающей запятой, помимо всего прочего там еще понапихано контроллер RS порта, контроллер PCI... в общем полна коробочка. Производит сей чудо зверь НИИИСИ РАН.
Навскидку не назову названия системного контроллера ибо их там много, а букв еще больше. с работы уточню.
Пока потихоньку заставляем это чудо работать. добрались до математики и приплыли...
Что еще нужно учесть, чтобы сборку сделать? Мы пока уткнулись в основном только в -mhard-float. остальное - худо-бедно...
зы: работаем под винду.

добавлено: может научите как пересобирать? или где почитать хотя бы, весь инет уже пролазили.

TJ27
Цитата(Ash_snz @ May 25 2011, 19:41) *
Очень рад! Ваша помощь просто неоценима! sm.gif

Проц, точнее система на кристалле называется 5890ВЕ1Т. Собрана она на базе MIPS проца архитектуры R3000. В составе имеет системный контроллер, сопроцессор для обработки чисел с плавающей запятой, помимо всего прочего там еще понапихано контроллер RS порта, контроллер PCI... в общем полна коробочка. Производит сей чудо зверь НИИИСИ РАН.
Навскидку не назову названия системного контроллера ибо их там много, а букв еще больше. с работы уточню.
Пока потихоньку заставляем это чудо работать. добрались до математики и приплыли...
Что еще нужно учесть, чтобы сборку сделать? Мы пока уткнулись в основном только в -mhard-float. остальное - худо-бедно...
зы: работаем под винду.

добавлено: может научите как пересобирать? или где почитать хотя бы, весь инет уже пролазили.

http://www.codesourcery.com/sgpp/lite/mips...tal/release1797
Это для абстрактного r300 и MIPS вообще. Lite версия полностью free и с всеми исходниками
Для 5890ВЕ1Т кажется нужно еще патч на специфику процессора
Ash_snz
Цитата(TJ27 @ Jun 17 2011, 11:42) *
http://www.codesourcery.com/sgpp/lite/mips...tal/release1797
Это для абстрактного r300 и MIPS вообще. Lite версия полностью free и с всеми исходниками
Для 5890ВЕ1Т кажется нужно еще патч на специфику процессора
Спасибо, будем пробовать. Пока удалось запустить hard-float на некой библиотеке, найденной в недрах kgp sm.gif, но к сожалению без fast-math.
очередная проблема: после успешной борьбы с _gp заработали глобальные переменные, но выяснилось, что static прописывается в ПЗУ и изменить свое значение пытается там же, что недопустимо. Видимо нужно переделывать ld файл, дабы корректно объяснить линкеру в каких областях живет озу и пзу. знать бы как... литературы маловато.
кто подскажет где почитать как можно полнее про организацию ld?


зы жаль, Клен ушел в отпуск...
klen
..в отпуск.. ага щаззззз. а кто это такой отпуск??? я его уже 15 лет не видел.. в гробу отдохнем. Вы мне плату комдивчиком подарите, лучше с 64 битным- я Вам не только LD, я Вам весь "курятник дострою" sm.gif

свежак для ARM
хост x86_32 http://klen.org/Files/DevTools/arm-kgp-eab..._32-20110619.7z
хост x86_64 http://klen.org/Files/DevTools/arm-kgp-eab..._64-20110619.7z

свежак WinGW
хост x86_32 http://klen.org/Files/DevTools/i686-kgp-mingw32-20110619.7z
хост x86_64 http://klen.org/Files/DevTools/x86_64-kgp-...w32-20110619.7z

2_Ash_snz
сделал для Вас сборку которая будет собирать код для 5890ВЕ1Т с использованием инструкций сопроца, libm также собрана c поддерхкой сопроца. про fast-math Вы не заказывали - поэтому я не учел. проробуте сначало что с этим получится, если все ок то перекомпилю с -mfast-math
есть один прикол - пол линуксом все работет как часы, пересобраный под x86_32 ld ругается что мы его заставляем собирать выходной ELF без флагов поддержки fpu из объектников скомпиленных с поддержкой fpu - заявление довольно странное и глупое... но видимо под виндой все через жопу работает, даже ровный софт становится кривым. Не обращать внимания. потом возможно доковыряю этот косячог. выходной код генерится по умолчанию для R3000 с подержкой инструкций FP если других ключей меняющих это не указано, эквивалентно -march=r3000 -mhard-float. собрано лоя хоста x86_32

одним словом, парни, ЖГИТЕ КОД ДЛЯ КОМДИВЧИКА!!! и обязательно сообщите че там на выходе получите, очень уж хочется в родном отечестве доброе дело сделать. да и mips на фезюляж нарисовать не плохо.
http://klen.org/Files/DevTools/mips-kgp-el..._32-20110619.7z
klen
предыдущий пост был для тек кто "в танке", для нормальных людей собрал в кучу сборки для хоста x86_64-linux-gnu
runtime сошки лежат в каждой сборке в ./lib64 - их надо прокешировать ldconfig'ом

arm-kgp-eabi http://klen.org/Files/DevTools/linux-x86_6...110619.tar.lzma

это для тех кто глумится с PIC32
mips-kgp-eabi http://klen.org/Files/DevTools/linux-x86_6...110619.tar.lzma

это для тех кто не "в танке" но упорно перед ним бежит и никак не может свернуть
i686-kgp-mingw32 http://klen.org/Files/DevTools/linux-x86_6...110619.tar.lzma
x86_64-kgp-mingw32 http://klen.org/Files/DevTools/linux-x86_6...110619.tar.lzma

это для КОМДИВЧИКА 5890ВЕ1Т от предыдущего поста отличается добавкой C++ и Fortran, все собрано с -march=r3000 -mhard-float -ffast-math , с такимиже ключами по умолчанию будет генерится новый код который ВЫ подсуните компиллеру.
comdiv32-kgp-elf http://klen.org/Files/DevTools/linux-x86_6...110619.tar.lzma

чето я седня разошелся...
AHTOXA
Цитата(klen @ Jun 19 2011, 21:22) *


Ура! 08.gif Наконец-то arm-kgp-eabi научился компилять мои проекты! 08.gif Теперь у меня есть kgp под линуксомsm.gif
klen
Цитата(AHTOXA @ Jun 19 2011, 21:14) *
Ура! 08.gif Наконец-то arm-kgp-eabi научился компилять мои проекты! 08.gif Теперь у меня есть kgp под линуксомsm.gif

теперь точно пивопровод из Уфы ждать будем!

2_Ash_snz
товарищи! отзовитесь что у Вас получилось. Я с дуру в НИИСИ РАН позвонил, пообщался за 5890ВЕ1Т и комдивы вообще. говорят штатно нету С++/Fortran а теперь возможно есть 08.gif но нада проверить!
Ash_snz
Цитата(klen @ Jun 19 2011, 23:59) *
2_Ash_snz
товарищи! отзовитесь что у Вас получилось. Я с дуру в НИИСИ РАН позвонил, пообщался за 5890ВЕ1Т и комдивы вообще. говорят штатно нету С++/Fortran а теперь возможно есть 08.gif но нада проверить!
Вот это во истину влеикие новости!
Наша благодарность не знает границ, времени и пространства biggrin.gif . yeah.gif
Щас усё опробуем!

Основная задача - заставить считать и делать это - БЫСТРО!
Кстати. почему при работе с кешем оптимизации "-О", "-О2" и др. не работают? (они делают бинарник в 2 раза меньше и при переходе на С сегмент дазнт фанкшин)

зы мы бы с радостью подогнать проц, но увы...

2 не маленьких просьбы:

- 2 Klen, научите билдить библиотеки, а то понадобится другой/какой ключ - надо бы самим уметь.

- 2 All, Подкиньте ссылочку - где почитать про создание ld файлов?
klen
Цитата(Ash_snz @ Jun 21 2011, 08:05) *
Основная задача - заставить считать и делать это - БЫСТРО!

а че? пока даже считать не получается заставить wink.gif
с быстро ответ класический - какие бы у женщины небыли красивые сиськи - больше чем у нее при себе она вам дать не сможет wink.gif

Цитата
Кстати. почему при работе с кешем оптимизации "-О", "-О2" и др. не работают? (они делают бинарник в 2 раза меньше и при переходе на С сегмент дазнт фанкшин)

это очень интересно, я бы хотел понять что происходит. дело в том что кеш это аппаратная вещь (за исключением того что иногда есть совершенно боковые инструкции проца по управлению этой штукой на подобии переферийного модуля) и для программы это прозрачно как стекло. если кусок не влез в кеш или промах - проц ждет обмена по шине, на выполнение трассы это никак не влияет, худшее что Вы можете словить - джитер времени выполнения заданного участка кода.
пока ситуация мутная - мне ничего не понятно что происходит. оптимизация тут мне кажется нипричем. после получения бинаря уже низвестно - была эта оптимизация или Вы на асме руками написали - это просто программа в машинных кодах.
жду пояснений также что такое С сегмент - это сегмент чего?

Цитата
зы мы бы с радостью подогнать проц, но увы...

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

Цитата
2 не маленьких просьбы:
- 2 Klen, научите билдить библиотеки, а то понадобится другой/какой ключ - надо бы самим уметь.
- 2 All, Подкиньте ссылочку - где почитать про создание ld файлов?

какие библиотеки?
билдятся просто - компиляете исходники библиотеки, собираете в либу с помощью утилиты ar. получаете файл с лиьы который можно подлинковывать к проекту
те которые libc и libm - они уже сбилдены, libc автоматом линкуется, для подлинковки libm воткните ключ -lm. но Вы это наверно и без меня знаеет.

ненавязчивая рекомендация: пигмеи!!! бросте винду и поставте линукс. будете как люди разработку вести.

по поводу ld - ВСЕ ТУТ!! http://sourceware.org/binutils/docs-2.21/ld/index.html

я так понимаю что пока Вы это все прочтете потухнет солнце а комдив устаеет. поэтому давайте я Вам помогу сделать ld скрипт - мне хочется на Вас потренироватся с мипсом и скорее узнать результаты, а если все заработает то будете уже сами разбиратся в природе работающих явлений.
сообщите карту адресного пространства проца, флеш то в нем есть или только ОЗУ?
почту тоже неплохо былобы узнать.
Ash_snz
Первый билд (mips-kgp-elf-comdiv32-x86_32-20110619.7z) ругается на чем свет:
Код
(standart input): Assembler message:
(standart input): Internal error!
Assertion failure inpute_file_open
../../../../../src/bu/gas/input-file.c line 167
please report this bug.

Второй билд (comdiv32-kgp-elf-20110619.tar.lzma) под линукс, по этому взяли с него только библиотеку(как собственно и с первого) увеличений в быстродействии не получили...

Цитата
а че? пока даже считать не получается заставить

считает. но хотелось бы быстрее wink.gif

зы make может влиять на сборку? а то у нас непойми откуда и зовется cs-make.
Genadi Zawidowski
target arm (AT91SAM7Sxxx), host x86: работает.
Память (с -flto):
new version:
Цитата
Program: 23464 bytes
(.text + .data + .bootloader)

Data: 2416 bytes
(.data + .bss + .noinit)

previous version:
Цитата
Program: 23668 bytes
(.text + .data + .bootloader)

Data: 2412 bytes
(.data + .bss + .noinit)


Last version without "-flto":
Цитата
Program: 29872 bytes
(.text + .data + .bootloader)

Data: 3520 bytes
(.data + .bss + .noinit)


Только сейчас заметил, что ПЗУ за счёт ОЗУ уменьшилось... не понимаю, что со скриптами.
upd: убрал свои ramfunc

Цитата
ненавязчивая рекомендация: пигмеи!!! бросте винду и поставте линукс. будете как люди разработку вести.

Я полагаю, поведение линкскрипта не меняется от операционной системы?
klen
Цитата(Genadi Zawidowski @ Jun 21 2011, 13:47) *
Я полагаю, поведение линкскрипта не меняется от операционной системы?

неа, не меняется, одна и таже сборка для разных хостов должна давать байт в байт одинаковый выход - алгоритмы теже, меняется экосистема в которой работаеш.

судя по цифрам LTO дает однозначный эффект в плюс.

2_Ash_snz
1. то что ругаеся это хорошо - значит дышит.
2. первый раз вижу чтоб бинутилс вываливался - это относительно довольно примитивный инструмент (в данном случае ассемблер). непонятно.
3. дайте контрольный кусок кода - желательно обрезаный по минимуму Ваш проект, после выкидывания всего кроме одной процедуры с вычислениями на плавучке. я соберу - посмотрим асм, и увидим - можно еще быстрее чтото сделать или нет.

я перед выкладыванием тестил и под виндой и под линуксом - формулы компилялись с использованием инструкций плавучки. может у Вас тот не мой компиллер
и так все на плавучке делат?

я пересоберу для винды полную сборку, первая была пробная

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

ни make ни cs-make повлиять не могут - это всеголиг инструменты, повлиять может содержимое скриптов в которых написано как и что этим инструментам делать. посмотрите в логи компеиляции и линковке - там видны опции компилятора и линкера - это конечная информации которая влияет на выдаваемый код.
Genadi Zawidowski
Коллеги, а кто как делает ramfunc - и как оно с -flto уживается?

Как я понял, секции с именами отличающимися от стандартных при -flto не оптимизируются и не удаляются из результирующего файля (или пару раз копируются в .data).

У кого работает - как выглядит линкскрипт и имя секции?

Ещё, у кого-нибудь -flto с кортексами дружит? Как помирили?
klen
освеженная сборка для комдивчика на x86_32 масдай

http://klen.org/Files/DevTools/comdiv32-kg..._32-20110622.7z

тестовый проект на котором я проверял. для примера реализован функционал квадратурного ЧМ демодулятора.
в примере демострируется совместная компиляция С, С++ и Fortran исходника и залинковывание в один бинарь. Это демострация того что можно например перемешивать в одном проекте вычислительные библиотеки на фортране, GUI написанные на С++ и например системные и иные библиотеки реалисзованные на С. Какой другой не GCC компиллер позволит сделать теже действия ?
тамже есть листинги с выходным асмом - видно что компиляймый код и код libm собран с использованием инструкций плавучки. если и можно чтото сделать быстрее то только самому написать на асме элементраные функции - но чтото я сомневаюсь что есть более лучшие ряды или быстрые алгоритмы для их вычисления чем те что сейчас используются в libm

http://klen.org/Files/DevTools/comdiv32_c_...fortran_test.7z


есть вопросы по обходу глюков инструкции cvt если она идет за abs neg mov. но подозреваю что это старые кристаллы и может быть проблема сейчас не актуальна. в любом случае можно будет добавит окучивание этой неприятности если она вдруг окажется в наличии.
AHTOXA
Цитата(Genadi Zawidowski @ Jun 21 2011, 16:39) *
Ещё, у кого-нибудь -flto с кортексами дружит? Как помирили?

У меня не заработало. Размер убавился изрядно, но результат не дышит.
klen
Цитата(AHTOXA @ Jun 22 2011, 19:06) *
У меня не заработало. Размер убавился изрядно, но результат не дышит.

у меня тоже с LTO весело - кода становится больше но работает!!! sm.gif
я думаю что моя проблема в том что я все раздробил на отдельные библиотеки и потом их уже слинковываю в оконечный бинарь. кода в кучу валил вроде нормално было - но это не кашерно, проект должен иметь структуру и архитектруру даже на уровне файлов. ну и в раме конечно функции присутствуют.

... если полумать то что мешает из либ разложить функции на ровном столе и правильно отсортировать... нада смотреть код LTO!


неее... у меня нынче LTO не работает, при линковке выкидывает:
lto1.exe: error: FPA is unsupported in the AAPCS

у меня не собирается, у Вас собирается.. где разница вот в чем вопрос. я ликеру и компиллеру -flto добавил, мож чтот еще нада ?
AHTOXA
Цитата(klen @ Jun 22 2011, 21:13) *
у меня не собирается, у Вас собирается.. где разница вот в чем вопрос. я ликеру и компиллеру -flto добавил, мож чтот еще нада ?

Ещё зачем-то надо передать линкеру уровень оптимизации:
Код
ifeq ($(USE_LTO),YES)
    CFLAGS    += -flto
    CXXFLAGS    += -flto
    LD_FLAGS    += -flto $(OPTIMIZE)
endif


Цитата(klen @ Jun 22 2011, 21:13) *
lto1.exe: error: FPA is unsupported in the AAPCS

lto1.exe?! А как же
Цитата(klen @ Jun 21 2011, 13:10) *
ненавязчивая рекомендация: пигмеи!!! бросте винду и поставте линукс. будете как люди разработку вести.

? biggrin.gif
klen
не помогло
у меня также lto1 ругается - FPA is unsupported in the AAPCS
пытаюсь понять смысл и куда лезть

.. понял

с незапямятных времен в тестовом проекте остался ключ линкеру -mfpu=fpa, компиллеру когдато убрал а линкеру нет и оно работало до сейчас.
теперь lto1.exe просто падает sm.gif это уже приятней - хоть понятно что происходит, известно куда ковырять

Цитата
Ещё зачем-то надо передать линкеру уровень оптимизации:

попробывал на MIPS в частности на сборке для комдива - подтверждаю
линкеру зачемто это нужно - без проталкиваня ключа оптимизации размер наооборот больше чем без LTO
это надо будет происследовать...



ОБЪЯВЛЕНИЕ:
у меня на сервере накопилось очень много старья около 100 сборок, собираюсь все это почитить и вообще сайтом занятся и привести его в порядок. если кому нада какаянибудь из старых сборок то забирайте до выходных. на выходных уборка на винчестере будет.

FORTRAN в армах ктонибудь реально использует? были случаи?
Genadi Zawidowski
НАсчёт архива сборок... Где смотреть? На страничке http://klen.org/Projects/Embeded-gnu-tools...cc_archive.html только новости от 2006 года...

Маленький код с -flto с кортексом - у меня аналогично - в результат попадает только стартап, остальное, похоже, опитмизируется в ноль как суетное и бесполезное...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.