Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
jstov
0 / 0 / 0
Регистрация: 30.04.2016
Сообщений: 6
1

Какая версия версия GCC сейчас самая безглючная?

11.05.2016, 09:01. Просмотров 6352. Ответов 27
Метки нет (Все метки)

Собираю проект. Проект заведомо рабочий. а у меня, почему-то он не работает.
На проверенной плате.
Может у меня версия GCC какая-то неудачная?
У меня установлена gcc-arm-none-eabi-4_9-2015q3-20150921
Последняя версия на сайте gcc-arm-none-eabi-5_3-2016q1-20160330

Может какая -то другая версия себя зарекомендовала?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2016, 09:01
Ответы с готовыми решениями:

Китайский JTAG RealView ULINK2 версия прошивки и версия Keil
Есть китайский клон 20-pin JTAG очень похожий на Keil-вый. Какую версию Keil с ним можно...

Какая версия Дельфи самая стабильная?
Я щас сижу на делфи 7, Хочу перейти на что-то более новее. Какая версия самая стабильная?

Какая самая последняя версия Windows 8.1 ?
Доброго времени суток. Нужна помощь. Подскажите пожалуйста какая самая последняя версия Windows 8.1...

Какая самая последняя версия Free Pascal?
Какая самая последняя версия Free Pascal? Чем она отличается от остальных Pascal?

Какая версия Qbasic сейчас изучается в вузах
какая версия Qbasic сейчас изучается в вузах ?

27
hd44780
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 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
OVY-srok
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
11.05.2016, 11:24 3
Они все без глючные по дефолту, потому как могут самих себя собирать.
Тут проблема в другом, ранние версии не имели ловушек для некоторых спорных ситуаций, и рапортовали об удаче. С небольшой долей вероятности, этот спорный участок кода мог выполняться корректно. Например запись полем в 32 бита в адрес с активным полем 16 бит, просто верхние 16 бит в самом процессоре пустые, и ничего страшного при этом не происходит.
На новой версии GCC такие фокусы не проходят. В той-же ситуации данные будут явно ужаты до 16 бит, что в некоторых случаях приведёт к переполнению в математических операциях. И самое противное - внешне это никак не отобразится, только пошаговый прогон программы . Зато прошивка будет весить на два байта меньше.
0
div
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.05.2016, 11:26 4
Цитата Сообщение от hd44780
Единственный замеченный баг - криво работают указатели uint64_t *. Но они требуются крайне редко, можно и костыль сварганить.
А как указатели могу работать криво?
0
11.05.2016, 11:26
div
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.05.2016, 11:27 5
Цитата Сообщение от OVY-srok
Например запись полем в 32 бита в адрес с активным полем 16 бит, просто верхние 16 бит в самом процессоре пустые, и ничего страшного при этом не происходит.
А можно пример кода? А то как-бы компилятор вообще про железо не в курсе.
0
hd44780
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
11.05.2016, 12:30 6
Цитата Сообщение от div
А как указатели могу работать криво?
Деталей не помню, но я, вроде, делал что-то такое:
uint64_t a;
uint64_t *p;

...........
p = &a;
*p = 0xAA55;

в итоге в переменной a получал некую ахинею вместо ожидаемого 0x000000000000AA55. Даже на маленьких числах, не требующих для себя именно 64 бит.
Возможно ещё передавал этот указатель в функцию.
0
dikor
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
11.05.2016, 12:38 7
Я сижу на 4.9.3.
Иногда падает компиляция на сложных шаблонах C++11
Иногда неверно разбирает constexpr+template
Глючная версия.
Но другие вообще некоторые проекты не собирают.
0
vt340
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
11.05.2016, 13:51 8
А тестики "глючности" какие-нибудь тут будут или один трёп? )
Я имею в виду си, с++ не надо
0
hd44780
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
11.05.2016, 15:52 9
Ну про указатели я уже привёл примерчик, кто хочет/может - проверьте ;)
0
vt340
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
gcc 5.3.1, всё нормально
0
u37
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,113
11.05.2016, 17:04 11
vt340, простите мою тормознутость. Что делает инструкция "35: str r3, [r2]"?
0
vt340
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
u37
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,113
11.05.2016, 17:31 13
Спасибо. Т.е. оптимизатор не выбросил ненужную инструкцию.
0
dikor
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
12.05.2016, 00:34 14
Цитата Сообщение от vt340
Я имею в виду си, с++ не надо
Какой C? ANSI? C99? Может ещё Аду вспомним?
В C11 _Static_ossirt в GCC 5+ так и не заработало. Ключ по поддержке стандарта есть, а стандарт не поддерживается. Глюк компилятора.
Цитата Сообщение от vt340
или один трёп? )
Один трёп.
upd!
А нет, работает, тут мой косяк.
0
moksir
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 216
12.05.2016, 05:13 15
Я компилирую GCC 4.7.4, по моему она весьма стабильна ( находил только один глюк), но самое главное самая высокая оптимизация по скорости за счет размера, обходит IAR KEIL и другие версии GCC, но для М7 не подходит, впрочем в М7 чем меньше размер тем быстрее, т.к. есть кеш.
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
12.05.2016, 10:32 16
Цитата Сообщение от OVY-srok
Они все без глючные по дефолту, потому как могут самих себя собирать.
что это значит? могут собрать себя для работы на стм32 и это работает? это кто-то проверял?
0
OVY-srok
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
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
12.05.2016, 14:15 18
Цитата Сообщение от OVY-srok
Эти товарищи работают за зарплату, и за допущенные ошибки немножко расстреливаются на заднем дворе компании - собственной группой поддержки СС. И таким образом, компании доводят эту часть GCC до идеального блеска.
ха ха. ну конечно.
может быть, но не в этой галактике.
0
hd44780
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
27.05.2016, 12:22 19
Пну-ка я немного эту древнюю темку.
Как Вы относитесь к такому: ? Имхо чистый баг.
0
vt340
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
28.05.2016, 11:54 20
Нет там бага, ответил в том топике.
Имхо, шансы что кто-то тут найдёт баг в gcc - 1/1000000
0
28.05.2016, 11:54
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2016, 11:54

какая на сегодня самая свежая версия virtualbox существует?
в инете бесплатно везде доступно для скачивания версия 4.3.2. но эта версия мне кажется уже...

Самая лучшая версия Torrent?
Какая самая лучшая версия Torrent на ваш взгляд. У меня стоит µTorrent 1.8.2 - это нормально&amp;?...

Самая стабильная версия Blender 3D
Какая версия Blender 3D самая стабильная?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru