|
свежак KGP win32/arm/avr/mips/m68k, GNU tools chain |
|
|
|
Jan 19 2008, 21:36
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Всем привет. В ознаменовение нового года и открытия раздела выкладывается свежак. binutils-2.18.50-20080115 gcc-4.3.0-20080111 avrlibc-20080116 newlib-20080115 gdb-20080117 все зажато в формат 7z бросаете распакованное в любую папку, прописываете PATH папка/bin далее должно быть все бкз проблем, хидеры и либы должны сами находится и линковатся без дополнительных гимороев. Win32: KGP Win32здесь все, включая нидеры и либы, это то чем я собираю ВСЕ остальноя, включая драйверы для масдая. ~18Mb работает, мин нет. MIPS: KGP MIPSне тестировалось, нет платы. m68k/ColdFire: KGP m68kсобрал первый раз, возможны ошибки для m51qe, собирал ручками. Проверяйте, найдете неправильную кодогенерацию пишите поправлю компилер. Для остальных возможна ошибочная генерация в код FP инструкций(для тех которые не имеют FP), нада пробывать. Evgeny_CD так сказать инициировал интерес к данной сборке, ему и карты в руки. avr: KGP 8bit AVRТут как обычно, работает тоже без мин, я веду рабочий проект на mega1280, девайсы не жужжат. Новое - добавлена подархитектура avr35(usb82,usb162), поддерживается avr6 (m256x) arm: KGP ARMтоде самое, веду проект, все скомпиленное работает. спасиба за внимание.
|
|
|
|
|
 |
Ответов
(225 - 239)
|
Dec 2 2009, 07:20
|
Группа: Участник
Сообщений: 8
Регистрация: 6-03-06
Из: Новосибирск
Пользователь №: 15 027

|
Цитата(klen @ Dec 1 2009, 15:37)  с EABI стало лучше, Вами предложенный код компиляется на 2 инструкции длинне чем у Sourcery G++ Lite 2009q3-68. это скотино зачемто сохраняет в стек регистры которые можно неиспользовать. отсюда удлиннение. курю и думаю. кстате это к работе с битами никакого отношения не имеет. толко к registers usage. Спасибо большое! Скачал, проверил - все великолепно! Кстати, если в том коде результат собирать в промежуточной переменной, вот так CODE unsigned int func( var v ) { var vv;
vv.y.y0 = k[0][v.y.y0]; vv.y.y1 = k[1][v.y.y1]; vv.y.y2 = k[2][v.y.y2]; vv.y.y3 = k[3][v.y.y3]; vv.y.y4 = k[4][v.y.y4]; vv.y.y5 = k[5][v.y.y5]; vv.y.y6 = k[6][v.y.y6]; vv.y.y7 = k[7][v.y.y7]; return vv.x; }
то код компилится лучше, чем у CS. На 1 инструкцию (4 байта) меньше. И push/pop нет совсем.
|
|
|
|
|
Dec 2 2009, 10:06
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(Jat @ Dec 2 2009, 10:20)  Спасибо большое! Скачал, проверил - все великолепно! Кстати, если в том коде результат собирать в промежуточной переменной, вот так CODE unsigned int func( var v ) { var vv;
vv.y.y0 = k[0][v.y.y0]; vv.y.y1 = k[1][v.y.y1]; vv.y.y2 = k[2][v.y.y2]; vv.y.y3 = k[3][v.y.y3]; vv.y.y4 = k[4][v.y.y4]; vv.y.y5 = k[5][v.y.y5]; vv.y.y6 = k[6][v.y.y6]; vv.y.y7 = k[7][v.y.y7]; return vv.x; }
то код компилится лучше, чем у CS. На 1 инструкцию (4 байта) меньше. И push/pop нет совсем. вот я этого и добивался! я не знаю как там IAR и иже с ними, но если для GCC код С писать c пониманием во что и как это переваривается - можно недетски оптимизатору помочь. Но.. для этого нада спецнавыки и знания навыки. 2_dimka76 седня-завтра пересоберу выложу. 2_All_кому_нада _avr ктонить тыкнет носом в патч который avr-size заставляет знать размеры ОЗУ и FLASH микросхем. лень искать и лень самому писать.
|
|
|
|
|
Dec 2 2009, 11:42
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(klen) вот я этого и добивался! выкладывайте, пожалуйста, линуксячие сборки (32бит) - раз уж все равно собираете...
|
|
|
|
|
Dec 2 2009, 13:52
|
Знающий
   
Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394

|
Цитата(klen @ Dec 2 2009, 15:11)  я 64битные собираю. А где? На http://www.klen.org/Files/DevTools/ ошибка 403.
|
|
|
|
|
Dec 2 2009, 17:19
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(klen @ Dec 2 2009, 15:11)  Это сильно старый комп должен быть чтоб на него нельзя было поставить 64биный линукс. да, старенький; тогда, если не сложно, архив Ваших src, или изменения относительно оригинальных исходников, ну или краткую инструкцию по сборке (я уже спрашивал через личку - не пришло сообщение?). (хотя, жаль что нет 32бит - уж больно долго все это добро собирается)
|
|
|
|
|
Dec 2 2009, 20:54
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(klen @ Dec 2 2009, 23:42)  все что я правил уже в транке, я с транка собираю http://gcc.gnu.org/svn.htmlеще вопросы: - в gcc/config/arm/t-arm-elf какие-нить изменения вносите для полного мультилиба? - gmp- и mpfr- нужно скачивать отдельно, или они вообще не нужны?
|
|
|
|
|
Dec 2 2009, 21:25
|
Знающий
   
Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394

|
Цитата(klen @ Dec 2 2009, 20:10)  при следеющей пересборке выложу линуксовую сборку. Если Вас не затруднит. И очень желательно бы с исходниками. А если все будет еще и скриптами обернуто, как, например, в crunch-tools/cross-tool/buildroot/ptxdist/oe и т.п. (специфические патчи, откуда брать исходники и скрипты для сборки). А то пока со всех ресурсов все соберешь в кучу - столько времени и сил уходит  Причем, прекрасно знаешь/понимаешь, что кто-то это уже сделал или делает в этот же момент либо занят чем-то другим и ждет, кто быстрее его патч прикрутит к более свежей версии, если этот патч в транк/бранч не вошел. ЗЫ: Машины линуксовые есть - и 32 и 64. Можно хоть каждую ночь собирать на автомате.
Сообщение отредактировал faa - Dec 2 2009, 21:25
|
|
|
|
|
Dec 3 2009, 14:38
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
свежак для avr www.klen.org/Files/DevTools/kgp_avr_20091202_i686-pc-mingw32.7z 1. Исходники ко всему берутся из cvs репозиториев (binutils,gdb,avr-libc,newlib), svn trunk для gcc, поэтому Вы сами можете их и без меня забрать. 2. скрипта сборки у меня нет. делаю все руками. 3. по поводу сборки для линукс. пока ниче не получится. потому что тулсы тянут кучу системных и сторонних (пересобранных мной) либ. если их тупо скопировать хрен это заработает. в следующий раз попытаюсь скомпилять тулсы статически. если получится то буду выкладывать. сейчас к примеру сс1 тянет klen@klen-dev:/opt/kgp_avr/libexec/gcc/avr/4.5.0$ ldd /opt/kgp_arm_eabi/libexec/gcc/arm-kgp-eabi/4.5.0/cc1plus linux-vdso.so.1 => (0x00007fff043ff000) libcloog.so.0 => /opt/kgp_linux64/lib/libcloog.so.0 (0x00007fa56c78e000) libppl_c.so.2 => /opt/kgp_linux64/lib/libppl_c.so.2 (0x00007fa56c242000) libppl.so.7 => /opt/kgp_linux64/lib/libppl.so.7 (0x00007fa56bf7a000) libgmpxx.so.4 => /opt/kgp_linux64/lib/libgmpxx.so.4 (0x00007fa56bd76000) libmpfr.so.1 => /opt/kgp_linux64/lib/libmpfr.so.1 (0x00007fa56bb27000) libgmp.so.3 => /opt/kgp_linux64/lib/libgmp.so.3 (0x00007fa56b8ca000) libdl.so.2 => /lib/libdl.so.2 (0x00007fa56b6c6000) libelf.so.0 => /opt/kgp_linux64/lib/libelf.so.0 (0x00007fa56cb97000) libc.so.6 => /lib/libc.so.6 (0x00007fa56b357000) libstdc++.so.6 => /opt/kgp_linux64/lib/libstdc++.so.6 (0x00007fa56b030000) libm.so.6 => /lib/libm.so.6 (0x00007fa56adac000) libgcc_s.so.1 => /opt/kgp_linux64/lib/libgcc_s.so.1 (0x00007fa56ab95000) /lib64/ld-linux-x86-64.so.2 (0x00007fa56c9b0000) 4. mpfr и gmp необходимы для сборки gcc, если их нет gcc не соберется http://gcc.gnu.org/install/prerequisites.html здесь написано что необходимо. Вы должные скачать готовые либы и ниделы для своей платформы или скачать исходники их собрать. 5. мануал я писать как собирать все это барохло я не буду. никаких ''сИкретов" нет. все патчи уже содержатся в trunk.
|
|
|
|
|
Dec 4 2009, 05:47
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(klen @ Dec 3 2009, 17:38)  свежак для avr www.klen.org/Files/DevTools/kgp_avr_20091202_i686-pc-mingw32.7z Вы свою сборку с WinAVR не сравнивали ? Например, на предмет оптимальности получаемого кода.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Dec 4 2009, 09:29
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(dimka76 @ Dec 4 2009, 08:47)  Вы свою сборку с WinAVR не сравнивали ? Например, на предмет оптимальности получаемого кода. неа, уверен Вы сравните и раскажете. А че? плохой код выдает? а что такое "оптимальный получаймый код" я незнаю ? скорость, компактность, объем потребного озу, скорость кодогенерации. это все взаимоисключающие критерии. какой из них для Вас "оптимальный"  Вот например для индусов оптимальный код - тот который написан за один час и имеет 1000 строк кода и похер как работает. для меня "оптимальный получаймый код" - быстрые циклы ручками на асме, прарывания жЁско на асме, все остальное С-код GCC по любому пережует неплохо. Главное чтоб глюков небыло.
|
|
|
|
|
Dec 4 2009, 09:56
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(klen @ Dec 4 2009, 12:29)  а что такое "оптимальный получаймый код" я незнаю ? это - скорость, компактность, объем потребного озу, скорость кодогенерации в одном флаконе просто если все (и вы и создатели WinAVR, в том числе) собирают из одних исходников, то какая разница. этот вопрос и для ARM(ов) справедлив.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
  |
9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0
|
|
|