Глюк в IDE 1.6.1

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Не спешите обновляться до 1.6.1 - там в компиляторе есть глюки. Самый простой способ их увидеть - загрузить пример IsrBlink из библиотеки TimerOne.

#include <TimerOne.h>
 
void setup() 
{
  // Initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards
  pinMode(13, OUTPUT);    
  
  Timer1.initialize(100000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
  Timer1.attachInterrupt( timerIsr ); // attach the service routine here
}
 
void loop()
{
  // Main code loop
  // TODO: Put your regular (non-ISR) logic here
}
 
/// --------------------------
/// Custom ISR Timer Routine
/// --------------------------
void timerIsr()
{
    // Toggle LED
    digitalWrite( 13, digitalRead( 13 ) ^ 1 );
}

Сам этот пример будет компилироваться без проблем. А теперь добавьте любую глобальную переменную, например так:

#include <TimerOne.h>
 
int ii;

void setup() 
{ ..............

и все, вылет компилятора с системной ошибкой Windows.

В 1.5.8 подобных глюков нет.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

TimerOne отсюда, r11. Windows 7 x64, ArduinoIDE 1.6.1. - полет нормальный, проблем нет. Исходник копировал один к одному Ваш.

UPD: Разумеется потом добавил переменную и скомпилировал снова. Проблем не увидел.

 

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

У меня WinXP x86. Может под 7-кой проблема и не воспроизводится. Ошибка ведь именно системная.

 

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Windows 8.1 Pro x64, ArduinoIDE 1.6.1. мало того, что компилируется, еще и работает.

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Снес 1.6.1 полностью и развернул архив еще раз. Несколько раз компилировалось нормально, я уж решил было что была ошибка при распаковке в прошлый раз. Но потом опять начались вылеты линкера. Вот нашел что-то подобное:

https://code.google.com/p/optiboot/issues/detail?id=88

Проверил этот ld.exe - в 1.5.8 и 1.6.1 они абсолютно идентичны.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Самый простой вариант, забить на 1.6.1, раз не работает. Впрочем это и так понятно.

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Еще выяснилось что есть зависимость от выбранной платы. При компиляции для плат Uno, Nano с ATmega328 вылетает, а если выбрать Mega2560 - компилируется.

vlad219i
Offline
Зарегистрирован: 05.03.2014

Поймал похожий глюк (вылет с системной ошибкой при компиляции) при развлечениях с Atmega8 под WinXPSP3.

Вылечилось заменой системных переменных TEMP и TMP на явно указанные, с коротким путём ("C:\Temp"). Теперь не беспокоит. :-)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Я себе поставил 1.6.3. (Windows 8.1 Pro x64), в нем много интересного, хотя я его мало юзаю, но из того, что пробовал, работает стабильно, если плюсы и минусы, а 1.6.1. более глюкавая, как мне кажется (не претендую на истину).

 

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

1.6.3 у меня точно так же вылетает с системной ошибкой как и 1.6.1 если в пример от TimerOne добавить свою переменную. Другие скетчи с этой библиотекой в 1.6.3 компилируются нормально.

Системные переменные TMP и TEMP у меня прописаны явно и ведут на виртуальный диск в 1Гб. Пробовал их переназначать и на C:\Temp еще когда с 1.6.1 разбирался - ничего не изменялось, та же системная ошибка.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Подтверждаю наличие проблемы. Сам вкусил. на коротеньком скетче из примеров, уже не помню на каком. Кажись вообще на блинке. Именно LD.exe вылетает.

alex_r61
Offline
Зарегистрирован: 20.06.2012

Версия 1.6.3 под Windows XP 32-bit, Mega2560/1280 - нормально, 328/168 - ошибка.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Теоретически можно посмотреть в исходниках ArduinoIDE, может быть даже добавить отладочной информации, поскольку исходники есть и они нормально правятся (я как то 1.0.5 добавлял ключи для компилятора в среду), только это же нужно установить XP, потом ковыряться. Если хотите, попробуйте :)
Мой КЭП говорит, что либо откатиться на старые версии ArduinoIDE, либо обновить XP на более другую ОС, хотя тут тоже очевидно, что не у всех компы с i5 и памятью 8Гиг (это я про себя). Кажется я уже повторяюсь, sorry.

PS А вообще это скорее ошибка toolchain, а не ArduinoIDE.

 

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Наконец то с выходом 1.6.5-r2 стали нормально компилироваться те скетчи на которых вылетали предыдущие 1.6.х

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Alex_Sk пишет:

Наконец то с выходом 1.6.5-r2 стали нормально компилироваться те скетчи на которых вылетали предыдущие 1.6.х

а, ну проверь - если удалить файл boards.txt , запускается вообще халабуда?

*а, то меня достал кретинизм пейсателей версии 1.6.x

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Клапауций 999 пишет:

а, ну проверь - если удалить файл boards.txt , запускается вообще халабуда?

*а, то меня достал кретинизм пейсателей версии 1.6.x

Нормально запускается без этого файла. При попытке компиляции естественно ошибка _ "не выбрана плата".

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Alex_Sk пишет:

Нормально запускается без этого файла. При попытке компиляции естественно ошибка _ "не выбрана плата".

спасибо.

Maverik
Offline
Зарегистрирован: 12.09.2012

видимо, программисты майкрософта уже подключились...

Oregu
Offline
Зарегистрирован: 24.06.2015

У меня этот баг продолжил жить и на 1.6.5.r2. Вылечил заменой ld.exe на этот: http://oregu.ru/myfiles/arduino_fix

За несколько часов и при разных скетчах ошибок не наблюдал.

Logik
Offline
Зарегистрирован: 05.08.2014

Oregu пишет:

У меня этот баг продолжил жить и на 1.6.5.r2. Вылечил заменой ld.exe на этот: http://oregu.ru/myfiles/arduino_fix

За несколько часов и при разных скетчах ошибок не наблюдал.

Свежый троян приволок? Ай маладца!!

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Logik пишет:

Oregu пишет:

У меня этот баг продолжил жить и на 1.6.5.r2. Вылечил заменой ld.exe на этот: http://oregu.ru/myfiles/arduino_fix

За несколько часов и при разных скетчах ошибок не наблюдал.

Свежый троян приволок? Ай маладца!!

это серьёзное обвинение - обоснуйте, пожалуйста, или извинитесь за клевету.

*я здесь проверил https://www.virustotal.com/ru/file/ed6125aba98e9b0d01800ac0bf037dcc94428afe22c853408b045b7c5ec63809/analysis/1435245000/

ничего подозрительного не обнаружено.

чем проверяте на трояность вы?

 

Oregu
Offline
Зарегистрирован: 24.06.2015

Этот свежий троян извлечен из zip-архива Arduino ide версии 1.5.6.r2, скачаного с arduino.cc. Я перепробовал много версий ардуино IDE в поисках подходящего варианта, т.к. хотелось иметь максимально свежую версию файла, но при этом рабочую. Так что если есть желание - можно скачать оригинал и сравнить побайтово. Кстати этот файл в ардуино IDE в разных местах встречается под разными названиями, но конкретно на моей системе оказадось достаточно заменить только тот, который я указал.

Ну а в целом согласен, одинокий *.exe выглядит подозрительно))). Просто в поисках решения рылся на разных форумах, в т.ч. иноязычных, и для тамошнего народа подготовил максимально простой вариант багфикса.

Я в ардуино новичок, да и всю жизнь подальше от с++ держался, на паскале программировал, а этот баг словил, когда отлаживал свою первую в жизни библиотеку на с++... Полностью ночь убил, пока дошло, что дело не во моих кривых руках, а в arduino IDE)))

Logik
Offline
Зарегистрирован: 05.08.2014

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

Получается версия 1.6.5 r2  признается работоспособной, для оживления ранних 1.6.х необходимо перекинуть линкер (файл ld.exe) из версия 1.6.5 r2.

Oregu
Offline
Зарегистрирован: 24.06.2015

Никаких обид, действительно подозрительно выглядело наверное.

нет, наоборот, я оживил версию 1.6.5.r2 перекидыванием линкера из более ранней версии 1.5.6.r2 (более поздние варианты ld.exe не вылетают, но с остальными составляющими компилятора не согласуются и выдают ошибки, еще более поздние вылетают).

miskam2259
Offline
Зарегистрирован: 06.11.2015

У меня проблемма та же... Ошибки те же, что и у Alex_Sk на скрине.

только возникает все это при попытки работать с  LCD. Библиотека LiquidCrystal_I2C.h.

Windows xp, Arduino UNO. IDE устанавливал версии 1.6.5-r5 и 1.7.7 везде одна ошибка. Я всё прочитал что выше написано, НО НИЧЕГО НЕ ПОНЯЛ. Скажите простым языком (желательно по пунктам) что нужно сделать, чтобы заработало.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

1.6.6 попробуйте. Может исправлено? ( У меня и старые работают  и 166)

Mutabor
Offline
Зарегистрирован: 15.12.2015

На 1.6.6 на WIN XP SP3 - при компиляции вылетает постоянно, причем закономерность найти не могу, и все чаще и чаще,

те же скетчи на WIN 7 отлично компилируются,

все идентично кроме операционок.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

IDE написана на Java. Если система установлена давно, с виртуальной машиной уже может быть все, что угодно. Да и просто, в давно не переустанавливаемой системе может быть все, что угодно...

Mutabor
Offline
Зарегистрирован: 15.12.2015

Вобщем на XP поставил 1.6.0  - все где вылетало нормально компилируется,

а на WIN7 оставил 1.6.6 - тоже все нормально работает.

Думаю дело в Java, она уже не поддерживает XP (вот и глючит) и при обновлении намекает

поставить более новую операционку.