Глюк в IDE 1.6.1
- Войдите на сайт для отправки комментариев
Пт, 20/03/2015 - 15:42
Не спешите обновляться до 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 подобных глюков нет.
TimerOne отсюда, r11. Windows 7 x64, ArduinoIDE 1.6.1. - полет нормальный, проблем нет. Исходник копировал один к одному Ваш.
UPD: Разумеется потом добавил переменную и скомпилировал снова. Проблем не увидел.
У меня WinXP x86. Может под 7-кой проблема и не воспроизводится. Ошибка ведь именно системная.
Windows 8.1 Pro x64, ArduinoIDE 1.6.1. мало того, что компилируется, еще и работает.
Снес 1.6.1 полностью и развернул архив еще раз. Несколько раз компилировалось нормально, я уж решил было что была ошибка при распаковке в прошлый раз. Но потом опять начались вылеты линкера. Вот нашел что-то подобное:
https://code.google.com/p/optiboot/issues/detail?id=88
Проверил этот ld.exe - в 1.5.8 и 1.6.1 они абсолютно идентичны.
Самый простой вариант, забить на 1.6.1, раз не работает. Впрочем это и так понятно.
Еще выяснилось что есть зависимость от выбранной платы. При компиляции для плат Uno, Nano с ATmega328 вылетает, а если выбрать Mega2560 - компилируется.
Поймал похожий глюк (вылет с системной ошибкой при компиляции) при развлечениях с Atmega8 под WinXPSP3.
Вылечилось заменой системных переменных TEMP и TMP на явно указанные, с коротким путём ("C:\Temp"). Теперь не беспокоит. :-)
Я себе поставил 1.6.3. (Windows 8.1 Pro x64), в нем много интересного, хотя я его мало юзаю, но из того, что пробовал, работает стабильно, если плюсы и минусы, а 1.6.1. более глюкавая, как мне кажется (не претендую на истину).
1.6.3 у меня точно так же вылетает с системной ошибкой как и 1.6.1 если в пример от TimerOne добавить свою переменную. Другие скетчи с этой библиотекой в 1.6.3 компилируются нормально.
Системные переменные TMP и TEMP у меня прописаны явно и ведут на виртуальный диск в 1Гб. Пробовал их переназначать и на C:\Temp еще когда с 1.6.1 разбирался - ничего не изменялось, та же системная ошибка.
Подтверждаю наличие проблемы. Сам вкусил. на коротеньком скетче из примеров, уже не помню на каком. Кажись вообще на блинке. Именно LD.exe вылетает.
Версия 1.6.3 под Windows XP 32-bit, Mega2560/1280 - нормально, 328/168 - ошибка.
Теоретически можно посмотреть в исходниках ArduinoIDE, может быть даже добавить отладочной информации, поскольку исходники есть и они нормально правятся (я как то 1.0.5 добавлял ключи для компилятора в среду), только это же нужно установить XP, потом ковыряться. Если хотите, попробуйте :)
Мой КЭП говорит, что либо откатиться на старые версии ArduinoIDE, либо обновить XP на более другую ОС, хотя тут тоже очевидно, что не у всех компы с i5 и памятью 8Гиг (это я про себя). Кажется я уже повторяюсь, sorry.
PS А вообще это скорее ошибка toolchain, а не ArduinoIDE.
Наконец то с выходом 1.6.5-r2 стали нормально компилироваться те скетчи на которых вылетали предыдущие 1.6.х
Наконец то с выходом 1.6.5-r2 стали нормально компилироваться те скетчи на которых вылетали предыдущие 1.6.х
а, ну проверь - если удалить файл boards.txt , запускается вообще халабуда?
*а, то меня достал кретинизм пейсателей версии 1.6.x
а, ну проверь - если удалить файл boards.txt , запускается вообще халабуда?
*а, то меня достал кретинизм пейсателей версии 1.6.x
Нормально запускается без этого файла. При попытке компиляции естественно ошибка _ "не выбрана плата".
Нормально запускается без этого файла. При попытке компиляции естественно ошибка _ "не выбрана плата".
спасибо.
видимо, программисты майкрософта уже подключились...
У меня этот баг продолжил жить и на 1.6.5.r2. Вылечил заменой ld.exe на этот: http://oregu.ru/myfiles/arduino_fix
За несколько часов и при разных скетчах ошибок не наблюдал.
У меня этот баг продолжил жить и на 1.6.5.r2. Вылечил заменой ld.exe на этот: http://oregu.ru/myfiles/arduino_fix
За несколько часов и при разных скетчах ошибок не наблюдал.
Свежый троян приволок? Ай маладца!!
У меня этот баг продолжил жить и на 1.6.5.r2. Вылечил заменой ld.exe на этот: http://oregu.ru/myfiles/arduino_fix
За несколько часов и при разных скетчах ошибок не наблюдал.
Свежый троян приволок? Ай маладца!!
это серьёзное обвинение - обоснуйте, пожалуйста, или извинитесь за клевету.
*я здесь проверил https://www.virustotal.com/ru/file/ed6125aba98e9b0d01800ac0bf037dcc94428afe22c853408b045b7c5ec63809/analysis/1435245000/
ничего подозрительного не обнаружено.
чем проверяте на трояность вы?
Этот свежий троян извлечен из zip-архива Arduino ide версии 1.5.6.r2, скачаного с arduino.cc. Я перепробовал много версий ардуино IDE в поисках подходящего варианта, т.к. хотелось иметь максимально свежую версию файла, но при этом рабочую. Так что если есть желание - можно скачать оригинал и сравнить побайтово. Кстати этот файл в ардуино IDE в разных местах встречается под разными названиями, но конкретно на моей системе оказадось достаточно заменить только тот, который я указал.
Ну а в целом согласен, одинокий *.exe выглядит подозрительно))). Просто в поисках решения рылся на разных форумах, в т.ч. иноязычных, и для тамошнего народа подготовил максимально простой вариант багфикса.
Я в ардуино новичок, да и всю жизнь подальше от с++ держался, на паскале программировал, а этот баг словил, когда отлаживал свою первую в жизни библиотеку на с++... Полностью ночь убил, пока дошло, что дело не во моих кривых руках, а в arduino IDE)))
ОК. Вот так вопросов не возникает. А то на свежой регистрации, без комментариев и сылка на личный сайт - разумеется подозрительно. Если я вас обидел - мои извинения.
Получается версия 1.6.5 r2 признается работоспособной, для оживления ранних 1.6.х необходимо перекинуть линкер (файл ld.exe) из версия 1.6.5 r2.
Никаких обид, действительно подозрительно выглядело наверное.
нет, наоборот, я оживил версию 1.6.5.r2 перекидыванием линкера из более ранней версии 1.5.6.r2 (более поздние варианты ld.exe не вылетают, но с остальными составляющими компилятора не согласуются и выдают ошибки, еще более поздние вылетают).
У меня проблемма та же... Ошибки те же, что и у Alex_Sk на скрине.
только возникает все это при попытки работать с LCD. Библиотека LiquidCrystal_I2C.h.
Windows xp, Arduino UNO. IDE устанавливал версии 1.6.5-r5 и 1.7.7 везде одна ошибка. Я всё прочитал что выше написано, НО НИЧЕГО НЕ ПОНЯЛ. Скажите простым языком (желательно по пунктам) что нужно сделать, чтобы заработало.
1.6.6 попробуйте. Может исправлено? ( У меня и старые работают и 166)
На 1.6.6 на WIN XP SP3 - при компиляции вылетает постоянно, причем закономерность найти не могу, и все чаще и чаще,
те же скетчи на WIN 7 отлично компилируются,
все идентично кроме операционок.
IDE написана на Java. Если система установлена давно, с виртуальной машиной уже может быть все, что угодно. Да и просто, в давно не переустанавливаемой системе может быть все, что угодно...
Вобщем на XP поставил 1.6.0 - все где вылетало нормально компилируется,
а на WIN7 оставил 1.6.6 - тоже все нормально работает.
Думаю дело в Java, она уже не поддерживает XP (вот и глючит) и при обновлении намекает
поставить более новую операционку.