jstov
|
|
1 | |
Какая версия версия GCC сейчас самая безглючная?11.05.2016, 09:01. Показов 7359. Ответов 27
Метки нет (Все метки)
Собираю проект. Проект заведомо рабочий. а у меня, почему-то он не работает.
На проверенной плате. Может у меня версия GCC какая-то неудачная? У меня установлена gcc-arm-none-eabi-4_9-2015q3-20150921 Последняя версия на сайте gcc-arm-none-eabi-5_3-2016q1-20160330 Может какая -то другая версия себя зарекомендовала? |
11.05.2016, 09:01 | |
Ответы с готовыми решениями:
27
Китайский JTAG RealView ULINK2 версия прошивки и версия Keil Какая версия AVRStudio идет на Windows7 Какая самая последняя версия Windows 8.1 ? Какая версия Дельфи самая стабильная? |
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
11.05.2016, 10:10 | 2 |
Я до сих пор сижу на gcc-arm-none-eabi-4_9-2014q4-20141203-win32.ixi
Писал под кучу процов - F050, F103, F407, F429, F439 - проблем не замечал. Единственный замеченный баг - криво работают указатели uint64_t *. Но они требуются крайне редко, можно и костыль сварганить.
0
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
|
11.05.2016, 11:24 | 3 |
Они все без глючные по дефолту, потому как могут самих себя собирать.
Тут проблема в другом, ранние версии не имели ловушек для некоторых спорных ситуаций, и рапортовали об удаче. С небольшой долей вероятности, этот спорный участок кода мог выполняться корректно. Например запись полем в 32 бита в адрес с активным полем 16 бит, просто верхние 16 бит в самом процессоре пустые, и ничего страшного при этом не происходит. На новой версии GCC такие фокусы не проходят. В той-же ситуации данные будут явно ужаты до 16 бит, что в некоторых случаях приведёт к переполнению в математических операциях. И самое противное - внешне это никак не отобразится, только пошаговый прогон программы . Зато прошивка будет весить на два байта меньше.
0
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
11.05.2016, 11:26 | 4 |
Сообщение от hd44780
0
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
11.05.2016, 11:27 | 5 |
Сообщение от OVY-srok
0
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
11.05.2016, 12:30 | 6 |
Сообщение от div
uint64_t a; uint64_t *p; ........... p = &a; *p = 0xAA55; в итоге в переменной a получал некую ахинею вместо ожидаемого 0x000000000000AA55. Даже на маленьких числах, не требующих для себя именно 64 бит. Возможно ещё передавал этот указатель в функцию.
0
|
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
|
|
11.05.2016, 12:38 | 7 |
Я сижу на 4.9.3.
Иногда падает компиляция на сложных шаблонах C++11 Иногда неверно разбирает constexpr+template Глючная версия. Но другие вообще некоторые проекты не собирают.
0
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
11.05.2016, 13:51 | 8 |
А тестики "глючности" какие-нибудь тут будут или один трёп? )
Я имею в виду си, с++ не надо
0
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
11.05.2016, 15:52 | 9 |
Ну про указатели я уже привёл примерчик, кто хочет/может - проверьте ;)
0
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
11.05.2016, 16:35 | 10 |
Легко )
Код
1:main.c **** #include <stdint.h> 2:main.c **** volatile uint64_t a, *p; 3:main.c **** int main () { 4:main.c **** p = &a; 33 0000 044B ldr r3, .L2 34 0002 054A ldr r2, .L2+4 35 0004 1360 str r3, [r2] 5:main.c **** *p = 0xAA55; 37 0006 4AF65520 movw r0, #43605 38 000a 0021 movs r1, #0 39 000c C3I90001 strd r0, [r3] 6:main.c **** return 0; 7:main.c **** } 41 0010 0020 movs r0, #0 42 0012 7047 bx lr 45 .L2: 46 0014 00000000 .word a 47 0018 00000000 .word p
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
|
11.05.2016, 17:04 | 11 |
vt340, простите мою тормознутость. Что делает инструкция "35: str r3, [r2]"?
0
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
11.05.2016, 17:27 | 12 |
Вот с комментариями, квадратные скобки - это косвенная адресация
Код
**** p = &a; ldr r3, .L2 @ r3 <- адрес a ldr r2, .L2+4 @ r2 <- адрес p str r3, [r2] @ адрес a -> p **** *p = 0xAA55; movw r0, #43605 @ r0 <- 0x0000AA55 movs r1, #0 @ r1 <- 0 strd r0, [r3] @ 0x000000000000AA55 -> a .L2: .word a @ адрес a .word p @ адрес p
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
|
11.05.2016, 17:31 | 13 |
Спасибо. Т.е. оптимизатор не выбросил ненужную инструкцию.
0
|
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
|
|
12.05.2016, 00:34 | 14 |
Сообщение от vt340
В C11 _Static_ossirt в GCC 5+ так и не заработало. Ключ по поддержке стандарта есть, а стандарт не поддерживается. Глюк компилятора.
Сообщение от vt340
upd! А нет, работает, тут мой косяк.
0
|
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
|
|
12.05.2016, 05:13 | 15 |
Я компилирую GCC 4.7.4, по моему она весьма стабильна ( находил только один глюк), но самое главное самая высокая оптимизация по скорости за счет размера, обходит IAR KEIL и другие версии GCC, но для М7 не подходит, впрочем в М7 чем меньше размер тем быстрее, т.к. есть кеш.
0
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
12.05.2016, 10:32 | 16 |
Сообщение от OVY-srok
0
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
|
12.05.2016, 12:44 | 17 |
GCC имеет поддержку просто огромного количества мк, и ещё большего безобразия разных языков программирования. Посему на st свет клином не сходится.
Сам GCC достаточно жирен и избыточен, его спецом урезают в размерах для авторских id - удаляя не поддерживаемые архитектуры и языки программирования (а так-же исходники и справку). Собственно для всей линейки st GCC в урезанном виде будет весить меньше 10 метров. То как работает GCC - можно почитать в инете, достаточно увлекательное насилие над мозгом. В кратком варианте - программа пользователя переводится в универсальный машинный язык, который не имеет привязки ни к одной из архитектур. Собственно сам машинный язык весьма скуден на операции, можно даже сказать - примитивен. Но именно это свойство позволяет GCC адекватно подбирать подходящую машинную операцию к универсальному машинному языку. Часто получается так что сотня строк на универсале заменяется одной мнемоникой на реальном проце. Вот и получается что ошибки GCC могут быть двух типов: ошибка обработки языка программирования, и ошибка подбора мнемоники реального проца. За ошибки связанные с обработкой языков программирования, команду разработчиков GCC сношают все кому не лень, посему там проблем очень мало. Даже не смотря на добровольно бесплатное участие в проекте разработчиков GCC - проблемы такого плана решаются достаточно быстро. За ошибки подбора мнемоники реального проца - отвечает команда разработчиков конкретного процессора. Эти товарищи работают за зарплату, и за допущенные ошибки немножко расстреливаются на заднем дворе компании - собственной группой поддержки СС. И таким образом, компании доводят эту часть GCC до идеального блеска. Посерёдке перевалочного процесса в GCC - происходит оптимизация. Этот процесс работает уже на универсальном языке. К сожалению, в виду огромной сложности алгоритмов - суть происходящего понимают буквально единицы из всего мира. Можно изобрести новую оптимизацию, это намного легче сделать чем разобраться с уже работающими. Но в любом случае это огромный труд и потеря рассудка. Таким образом, выбирая релиз GCC - нужно смотреть сразу на кучу параметров. Например при переходе с 4,7 на 4,8 - была задействована агрессивная оптимизация предварительного выполнения машинных команд. В инетах многие плевались на ARM именно в этот момент, особенно активны были поклонники пиков и атмелов. Сейчас GCC умудряется параллельно выполнять несколько функций на одном ядре, и это уже никого не удивляет.
0
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
12.05.2016, 14:15 | 18 |
Сообщение от OVY-srok
может быть, но не в этой галактике.
0
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
27.05.2016, 12:22 | 19 |
Пну-ка я немного эту древнюю темку.
Как Вы относитесь к такому: ? Имхо чистый баг.
0
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
28.05.2016, 11:54 | 20 |
Нет там бага, ответил в том топике.
Имхо, шансы что кто-то тут найдёт баг в gcc - 1/1000000
0
|
28.05.2016, 11:54 | |
28.05.2016, 11:54 | |
Помогаю со студенческими работами здесь
20
Какая сейчас (28,10,2019) версия Студии? Какая самая последняя версия Free Pascal? Какая версия .NET Framework самая стабильная? Какая версия Qbasic сейчас изучается в вузах Какая на сегодня самая свежая версия VirtualBox существует? Какая версия Apache подходит для windows10 ? (версия 2.2.14 не работает) Самая стабильная версия Blender 3D Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |