klen 1 4 декабря, 2006 Опубликовано 4 декабря, 2006 · Жалоба Собрал новые сборки GCC для ARM, кому интересно качайте пробуйте, сообщайте о глюках. Не тестилась по самые помидоры. http://www.klen.org/Projects/Embeded-gnu-t...last_build.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpiritDance 0 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба А оно пофиксено на тему прологов-эпилогов в irq-функциях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба Ну вы даете! по ссылке все написанно :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба klen , ты пишешь что поправил ошибку генерации пролога. Ты правил руками? или накладывал какой то патч? Дело в том, что я использую скрипт Gentoo Crossdev для генерации GCC для ARM. Возникли сомнения - исправляет ли он (скрипт) эту ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
goodwin 0 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба Ни фига там неичего не написано :( Имхо, все эти макромедии автору лучше убрать - на сайт никак не попадешь... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба Парни! Я на XTML писать не умею :ohmy: Я жне вебдизайнер а еммбеддер. Не бейте пианиста, он играет как умеет. 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба Можешь показать конкретно где править? Хочу свой скрипт поправить :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба Можешь показать конкретно где править? Хочу свой скрипт поправить :) 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)); } ............................. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба если я правильно понял комменитируем строчку emit_set_insn (lr, plus_constant (lr, -4)); ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 5 декабря, 2006 Опубликовано 5 декабря, 2006 · Жалоба если я правильно понял комменитируем строчку emit_set_insn (lr, plus_constant (lr, -4)); ? Ага, при включении -O1...-Os она как раз и отматывает регистр возврата на лишние 4 байта, в эпилоге это делается еще раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 121 30 марта, 2008 Опубликовано 30 марта, 2008 · Жалоба 1. Баг с прологом пофиксен ручками . ПОКА работает(уже два месяца активного использования), если ктото найдет что чтото вылезло в другом месте - буду дальше искать, если не нет запощу на багзиллу. Соответствующего патча вроде нет???? Такое ащущение что все на этот баг просто забили, поскольку он уж точно год висит и никого особот не напрягает. Возможно потому что очень просто написать обертку входа и выхода из обрпботчика на асме. Чем закончилась эта эпопея (имею ввиду бугзилпу)? И как обычно проистекает процесс от "запощу на бугзиллу" до "появилось в официальных исходниках"? Ага, при включении -O1...-Os она как раз и отматывает регистр возврата на лишние 4 байта, в эпилоге это делается еще раз.В каком-то из обсуждений проскакивало, что этот баг проявляется только при генерации thumb-intrwork кода. Я получил его в полном объеме на сборке yagarto в ARM-коде без interwork при любой оптимизации, в том числе и при -o0. Сейчас буду выкачивать сборку имени klenа. klen, вы в каких режимах проверяли свою сборку на предмет этого бага? P.S. эту ветку тоже надо двигать в форум по GNU Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
axle 0 31 марта, 2008 Опубликовано 31 марта, 2008 · Жалоба В каком-то из обсуждений проскакивало, что этот баг проявляется только при генерации thumb-intrwork кода. Я получил его в полном объеме на сборке yagarto в ARM-коде без interwork при любой оптимизации, в том числе и при -o0. Про то, что баг появляется только с флагом -mthumb-interwork писал я. У меня это явление наблюдалось стабильно только с этим флагом. Сейчас во всех проектах использую свою сборку arm-elf-gcc (без патча) и только код ARM (благо памяти хватает) - никаких проблем ни разу не наблюдал. Да и в сети находил упоминания, что баг появляется только с -mthumb-interwork. Но возможно это и не так. В багзилле я находил два сообщения на эту тему(1, 2). И в том и в другом предлагают патчи (патча от klen там нет). Но результаты не ясны. Вроде бы пока баг живее всех живых. Интересно было бы узнать, помогло ли удаление вызова emit_set_insn() и не сказалось ли на чем-нибудь другом. Патчи в багзилле более навороченные, поэтому есть сомнения. В любом случае :a14: to klen за попытку избавить нас от этого идиотского бага. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 31 марта, 2008 Опубликовано 31 марта, 2008 · Жалоба в крайних версиях врое этот гимор убрали, во всяком случе работает вообще мого по другому, переписано заново наверно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 17 сентября, 2009 Опубликовано 17 сентября, 2009 (изменено) · Жалоба Вливаюсь в ряды вставших на грабли с глюком в прологах/эпилогах обработчиков прерываний. Создал было свою тему, но потом обнаружил ещё две трёхлетней давности. Вот моя http://electronix.ru/forum/index.php?showtopic=67407 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, тоже непонятно что это. Изменено 17 сентября, 2009 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 17 сентября, 2009 Опубликовано 17 сентября, 2009 · Жалоба Это совсем старая тема, klen регулярно выпускает свежие сборки в другой: свежак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться