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

WinAVR-20100110 - gcc 4.3.3

Klen - gcc 4.6.0 (gcc 4.4.0 для Klen-20090323, 4.5.0 для Klen-20091202)

 

Некоторые баги (тяжело сказать - gcc как целого или порта AVR или эффект интерференции между ними) появились где-то на уровне gcc-4.2.x, сохранились в 4.3.х, пропали в 4.4.0

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


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

О'да!!!!!!!!!! переход от тройки к четверке был болезненный и четверка по началу была хуже тройки, но закладывались новые концепции.

 

пример из жизни, Миг-23МЛД в ближнем маневренном бою!!! рвал Миг-29 первых серий как Тузик грелку, причем драмматически. Со временем САУ на Миг29 поднастроили, напильньником приложтлись и ... вуаля! сверхмоневренный пипелац.

 

2_Genadi Zawidowski

Вы кажется какойто приемник творите или чтото в этом роде если не ошибаюсь.

новой сборкой должно собратся. хочу вашего подтверждения что кокос растет и крокодил ловится.

или пять не ловится? :laughing:

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


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

спасибо, klen, за ответ, да видно не в коня корм... сложно мне понять ваши слова, т.к. до сего момента не сталкивался с багами avr-gcc... разве что вот один, который меня подкосил: с целью оптимизации по размеру объявил ряд переменных регистровыми, и напоролся на то, что компилятор ни слова не говоря собирает код, в котором происходит использование регистров из моих регистровых переменных в функциях разных модулей, в итоге, естественно, каша и бардак :(

 

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

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


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

2_ARV

 

c регистровыми переменными все очень просто.

 

0. правильно проектируем приложение

 

1. если линкуете без внешних либ которые знать не знают о ваших регистровых переменных будь то libgcc libc libm (хотя это мало реально)

нада для всех исходников при компиляции скормить компиллеру ключи

-ffixed-rX -ffixed-rY
.... где X,Y,... номера регистров. тогда никто эти регисрты трогать не будет и они спокойно будут использоватся переменными обявленными в С коде
register uint8_t Var asm("rX") ;

 

2. в более реальном случае с использования ничего не знающих о вашей какойто там регистровой переменной библиотеках я делаю так - собираю все без регистровых переменных - нахожу в результирущем асм - листинге дыры в использовании регистров (в моем крайнем проекте это оказались r9 r12 r16 ) и делаю пункт 1. Это нада чтоб неналететь на затирание регистровых переменных библиотечными вызовами.

 

3, если в пункте 2 'дыр нет", берем перекомпилируем библиотеки ;) а правильнее начинаем с пункта номаер ноль!!!! - делаем чтоб регистровых переменных ненужно было. хотя клиника случается и без них не обойтись, сам пользуюсь но не злоупотребляю.

 

Я думаю кнонить ченить должен добавит по этой теме.

 

2_Vasen

неужели без толкача завелась сразу? неверю. про ldconfig не стал писать ;) хотя очем это я - линуксойды народ которуму разжовыать не нада

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


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

вот я олух! ну ведь знал я о ключике -ffixed-rX!!! как я мог забыть?! а по поводу оптимизаторов что скажете?

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


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

А вот кстати

klen, спасибо Вам за сборку для arm.

А не имеется ли оной для Ubuntu?

присоединяюсь, и аналогичный вопрос по AVR. А в основном уже сижу под линуксом, но вот подсел на чужие сборки и так сам и не наладил процесс :-)

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


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

... аналогичный вопрос по AVR...

а вопрос то в чем?

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


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

"Не имеется ли сборки для AVR для Ubuntu/64"

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


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

"Не имеется ли сборки для AVR для Ubuntu/64"

зддрасти приехали...

сообщение #343 читать до самого низу обязательно, Vasen уж наверно наверно педали нажимает, а Вы на стоянке пипелац в упор незаметили :)

если незаведется то кривым стартером (ldconfig) поможем - либы отделным архивом, их в /usr/lib usr/local/lib сыпать не нада - затрете системые и могут быть глюки потому что у меня версии свежие(т.е отличаются от тех что в ситеме), свалите сошки в отдельную папку и прокешируйте ее с помощщу ldconfig

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


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

Это Ваша версия, klen.

arm-kgp-eabi-size tc1_rom.elf
   text    data     bss     dec     hex filename
  31860       0    2552   34412    866c tc1_rom.elf
arm-kgp-eabi-objcopy -O ihex  tc1_rom.elf tc1_rom.hex

 

А это предпоследний yagarto

arm-elf-size tc1_rom.elf
   text    data     bss     dec     hex filename
  32148       0    2572   34720    87a0 tc1_rom.elf
arm-elf-objcopy -O ihex  tc1_rom.elf tc1_rom.hex

 

Как видите, в Вашу пользу выигрыш около 300 байт на 31 килобайт.

Прошивка работает, что приятно отличает от предпоследней версии. Прерывания, как Вы понимаете, заработали сами. Я не модифицировал текст (только префикс для компилятора в Makefile).

 

Стеки в bss... Пожалуй зря. На самом деле - не обратил внимания. Там ещё можно накопать - не используется user stack. Но очищаю bss я не в подпрограмме - потому и не заметил ничего плохого.

Где-то встретил требование по выравниванию стеков для ARM-EABI на 8 байт. Не прокомментируете?

 

klen, как Вы правильно заметили, делаю приёмник (уже давно разные варианты), сейчас на стадии рисования схемы платы передающего тракта для превращения в приёмо-передатчик. В программе формирование телеграфного сигнала с ручного манипулятора и управление автоматикой переключения приём-передача присутствует. Я на forum.cqham.ru этот проект выкладываю свежее состояние и фотографии плат.

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

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


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

Где-то встретил требование по выравниванию стеков для ARM-EABI на 8 байт. Не прокомментируете?

 

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

 

Прерывания, как Вы понимаете, заработали сами.

 

я таки думаю что не прерывания неработали, а вообще ничего неработао (или работало непрвильно еще недоходя до прерываний)

 

Я на forum.cqham.ru этот проект выкладываю свежее состояние.

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

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


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

зддрасти приехали...

сообщение #343 читать до самого низу обязательно, Vasen уж наверно наверно педали нажимает, а Вы на стоянке пипелац в упор незаметили :)

Так он же вроде для ARM просил, а не для AVR.

Ладно, выдохну выпускной -- разберусь.

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


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

Так он же вроде для ARM просил, а не для AVR.

Ладно, выдохну выпускной -- разберусь.

действительно, это я пипелац не увидел, извиняюсь.

выложу пожже

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


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

klen, не получилось развернуть архив со сборкой (сливал 2 раза).

Выкидывает вот такую ошибку:

b9ca3bd5a7b1e2209260be0b98ac71e5.jpg

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


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

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

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

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

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

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

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

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

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

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