реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Собрал свежий GCC, bu2.17 + arm-elf-gcc4.2.0-20061114 + newlib1.14.0
klen
сообщение Dec 4 2006, 18:13
Сообщение #1


бессмертным стать можно тремя способами
*****

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



Собрал новые сборки GCC для ARM, кому интересно качайте пробуйте, сообщайте о глюках.
Не тестилась по самые помидоры.
http://www.klen.org/Projects/Embeded-gnu-t...last_build.html
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Dec 5 2006, 10:11
Сообщение #2


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



А оно пофиксено на тему прологов-эпилогов в irq-функциях?


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
COMA
сообщение Dec 5 2006, 10:24
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Ну вы даете!

по ссылке все написанно sad.gif
Go to the top of the page
 
+Quote Post
COMA
сообщение Dec 5 2006, 10:42
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



klen , ты пишешь что поправил ошибку генерации пролога.
Ты правил руками? или накладывал какой то патч?

Дело в том, что я использую скрипт Gentoo Crossdev для генерации GCC для ARM.
Возникли сомнения - исправляет ли он (скрипт) эту ошибку.
Go to the top of the page
 
+Quote Post
goodwin
сообщение Dec 5 2006, 10:52
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Ни фига там неичего не написано sad.gif Имхо, все эти макромедии автору лучше убрать - на сайт никак не попадешь...
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 5 2006, 11:13
Сообщение #6


бессмертным стать можно тремя способами
*****

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



Парни! Я на XTML писать не умею ohmy.gif
Я жне вебдизайнер а еммбеддер. Не бейте пианиста, он играет как умеет.

1. Баг с прологом пофиксен ручками . ПОКА работает(уже два месяца активного использования), если ктото найдет что чтото вылезло в другом месте - буду дальше искать, если не нет запощу на багзиллу. Соответствующего патча вроде нет???? Такое ащущение что все на этот баг просто забили, поскольку он уж точно год висит и никого особот не напрягает. Возможно потому что очень просто написать обертку входа и выхода из обрпботчика на асме.
2. если проблемы со флешем то вот урлы:
AVR 8.7мб
http://www.klen.org/Projects/Embeded-gnu-t...nutils-libc.rar

ARM c библиотеками 36.4 мб
http://www.klen.org/Projects/Embeded-gnu-t...ewlib1.14.0.rar

ARM для CrossWorks 9.1 мб
http://www.klen.org/Projects/Embeded-gnu-t...-CrossWorks.rar
Go to the top of the page
 
+Quote Post
COMA
сообщение Dec 5 2006, 11:16
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Можешь показать конкретно где править?
Хочу свой скрипт поправить smile.gif
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 5 2006, 11:19
Сообщение #8


бессмертным стать можно тремя способами
*****

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



Цитата(COMA @ Dec 5 2006, 11:16) *
Можешь показать конкретно где править?
Хочу свой скрипт поправить smile.gif



arm.c:
................
/* Generate the prologue instructions for entry into an ARM function. */
void
arm_expand_prologue (void)
{
..................
/* If this is an interrupt service routine, and the link register
is going to be pushed, and we are not creating a stack frame,
(which would involve an extra push of IP and a pop in the epilogue)
subtracting four from LR now will mean that the function return
can be done with a single instruction. */
if ((func_type == ARM_FT_ISR || func_type == ARM_FT_FIQ)
&& (live_regs_mask & (1 << LR_REGNUM)) != 0
&& ! frame_pointer_needed)
{
rtx lr = gen_rtx_REG (SImode, LR_REGNUM);

//emit_set_insn (lr, plus_constant (lr, -4));
}
.............................
Go to the top of the page
 
+Quote Post
COMA
сообщение Dec 5 2006, 11:22
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



если я правильно понял

комменитируем строчку
emit_set_insn (lr, plus_constant (lr, -4));
?
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 5 2006, 11:30
Сообщение #10


бессмертным стать можно тремя способами
*****

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



Цитата(COMA @ Dec 5 2006, 11:22) *
если я правильно понял

комменитируем строчку
emit_set_insn (lr, plus_constant (lr, -4));
?

Ага, при включении -O1...-Os она как раз и отматывает регистр возврата на лишние 4 байта, в эпилоге это делается еще раз.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 30 2008, 21:21
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(klen @ Dec 5 2006, 14:13) *
1. Баг с прологом пофиксен ручками . ПОКА работает(уже два месяца активного использования), если ктото найдет что чтото вылезло в другом месте - буду дальше искать, если не нет запощу на багзиллу. Соответствующего патча вроде нет???? Такое ащущение что все на этот баг просто забили, поскольку он уж точно год висит и никого особот не напрягает. Возможно потому что очень просто написать обертку входа и выхода из обрпботчика на асме.
Чем закончилась эта эпопея (имею ввиду бугзилпу)? И как обычно проистекает процесс от "запощу на бугзиллу" до "появилось в официальных исходниках"?
Цитата(klen @ Dec 5 2006, 14:30) *
Ага, при включении -O1...-Os она как раз и отматывает регистр возврата на лишние 4 байта, в эпилоге это делается еще раз.
В каком-то из обсуждений проскакивало, что этот баг проявляется только при генерации thumb-intrwork кода. Я получил его в полном объеме на сборке yagarto в ARM-коде без interwork при любой оптимизации, в том числе и при -o0. Сейчас буду выкачивать сборку имени klenа. klen, вы в каких режимах проверяли свою сборку на предмет этого бага?

P.S. эту ветку тоже надо двигать в форум по GNU


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
axle
сообщение Mar 31 2008, 05:01
Сообщение #12


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(Сергей Борщ @ Mar 31 2008, 04:21) *
В каком-то из обсуждений проскакивало, что этот баг проявляется только при генерации thumb-intrwork кода. Я получил его в полном объеме на сборке yagarto в ARM-коде без interwork при любой оптимизации, в том числе и при -o0.

Про то, что баг появляется только с флагом -mthumb-interwork писал я. У меня это явление наблюдалось стабильно только с этим флагом. Сейчас во всех проектах использую свою сборку arm-elf-gcc (без патча) и только код ARM (благо памяти хватает) - никаких проблем ни разу не наблюдал. Да и в сети находил упоминания, что баг появляется только с -mthumb-interwork. Но возможно это и не так.

В багзилле я находил два сообщения на эту тему(1, 2). И в том и в другом предлагают патчи (патча от klen там нет). Но результаты не ясны. Вроде бы пока баг живее всех живых.

Интересно было бы узнать, помогло ли удаление вызова emit_set_insn() и не сказалось ли на чем-нибудь другом. Патчи в багзилле более навороченные, поэтому есть сомнения. В любом случае a14.gif to klen за попытку избавить нас от этого идиотского бага.
Go to the top of the page
 
+Quote Post
klen
сообщение Mar 31 2008, 14:27
Сообщение #13


бессмертным стать можно тремя способами
*****

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



в крайних версиях врое этот гимор убрали, во всяком случе работает вообще мого по другому, переписано заново наверно
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 17 2009, 15:07
Сообщение #14


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Вливаюсь в ряды вставших на грабли с глюком в прологах/эпилогах обработчиков прерываний. Создал было свою тему, но потом обнаружил ещё две трёхлетней давности. Вот моя
http://electronix.ru/forum/index.php?showtopic=67407

Цитата(klen @ Dec 5 2006, 17:13) *
1. Баг с прологом пофиксен ручками . ПОКА работает(уже два месяца активного использования), если ктото найдет что чтото вылезло в другом месте - буду дальше искать, если не нет запощу на багзиллу. Соответствующего патча вроде нет???? Такое ащущение что все на этот баг просто забили, поскольку он уж точно год висит и никого особот не напрягает. Возможно потому что очень просто написать обертку входа и выхода из обрпботчика на асме.


Я бы не сказал, что этот баг не напрягает. Обёртку написать конечно просто - одна асм-команда пролог и две команды эпилог. Только нет гарантии правильной работы. Вот мой пример.

Код
void AdcIntr() __attribute__((naked));
...
void AdcIntr()        // обработчик прерывания АЦП
{
//    asm("LDR    SP, =(NEW_FIQ_STACK+128)");    // временно из-за проблем со стеком FIQ
    asm("STMDB    SP!,{R0-R7,LR}");        // пролог для FIQ
...
//    VICVectAddr = 0;            // для FIQ не нужна
    asm(    "LDMIA    SP!,{R0-R7,LR}    \n"    // эпиолог для FIQ
        "SUBS    PC,LR,#4    ");
}


Тестировал на разных уровнях оптимизации. На "none" вылетает в Data Abort. Залез а дизасм, читаю - оказывается атрибут "naked" выбрасывает не только сохранение/восстановление регистров, но и резервирование в стеке переменных, и даже (!) копирование SP в R11 в моём случае (видимо для работы со стековыми переменными). Interworking Arm/Thumb включён, но весь код написан на Arm.

Проблеме уже 5 лет и никто не "чешется". CW продолжает использовать очередное гуано в своих студиях.

Забыл указать, что оригинальный компилятор в CW 1.7. build 9 не менял на написанный klen-ом, пока не успел, пока камень в огород компилятора из комплекта CW. А как узнать версию конкретно cc1.exe не понял. Там ещё есть файл cc1plus.exe, тоже непонятно что это.

Сообщение отредактировал GetSmart - Sep 17 2009, 15:26
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 17 2009, 16:34
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Это совсем старая тема, klen регулярно выпускает свежие сборки в другой: свежак.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01503 секунд с 7
ELECTRONIX ©2004-2016