Страница 1 из 2
Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 11:54:02
ИС-пытатель
Всем добрый день! Есть актуальная проблема с размером кода и правильной его компиляцией.
Когда программа относительно маленькая и простая, то проблем нет. Но вот сейчас столкнулся с такой проблемой:
пользуюсь студией 6.0 из-за удобства написания кода (хорошая подсветка синтаксиса и т.д.). Написал программу, которая состоит из 6 файлов, кучи макросов и условной компиляции. раза с тысячного вроде бы все скомпилировалось, все работает, но во время тестирования заметил, что помимо записи ЕЕПРОМ в отведенные 5 групп ячеек, пишет еще в 1 в середину памяти. Программе это не мешает не как, но меня это покоробило и начал разбирать, где мог накошачить. В результате, наткнулся на то, что при урезании программы в части записи в память (для выявления ошибки) компилятор вообще начал криво собирать урезанную версию. вместо записи значений затирает ячейки нулями, хотя в одну из них я 100% пишу значение (константа, которая в программе нигде не меняется и служит маркером валидности группы ячеек). Начал пробовать другие компиляторы. Установил новую, майскую студию 6.2. Так у той даже интерфес криво сделан. При переключении на студию часть ее окна остается прорисованной от другой только что отображаемой программы. Скомпилировала она мне еще хуже. Сами можете догадаться, как.. Тогда решил перенести код в хваленую 4-ю студию. Так после компиляции в ней у меня даже динамическая индикация перестала работать, хотя по коду она идет одна из первых. CV AVR тоже с ошибками компилирует, но уже с другими. Уже есть желание все на ассемблер перевести.. Я уже в отчаянии.. Подскажите, кто сталкивался с подобной проблемой, нормальный компилятор, который компилирует код так, как ты его написал, а не так, как ему хочется...
P.S. оптимизацию ставил на разные значения. В том числе, отключал вообще.
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 12:32:28
Kavka
Что-то это мне напоминает.

Ой как напоминает.
Может, таки, не компилятор виноват, а?
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 13:24:03
ИС-пытатель
Да не. ))) если бы все с одной ошибкой компилировали. А то все с разными. ))) Косяки, конечно были, не спорю. Но там все по мелочи и невнимательности. А тут все компиляторы по разному компилируют... мне тут IAR вот посоветовали..
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 14:57:51
Kavka
Сам компилятор не может косячить при записи в EEPROM. С avr-gcc можно накосячить или при передаче параметров в функции библиотеки avr-lib, либо в собственной реализации процедуры записи в EEPROM. У тебя какой вариант?
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 15:05:00
ИС-пытатель
У меня вызов процедуры. там всего 5 строк. я передаю два параметра - адрес, куда писать, и сам байт. В процедуре тупо жду завершения предыдущей записи, потом выставляю адрес и шлю байт на запись. Просто в усложненном варианте, когда я после записи еще проверяю, правильно ли записалось, все норм работает за исключением того, что пишется лишний адрес (причем пишется только при записи в первую группу ячеек), а когда убираешь проверку записанного значения, то вообще одни нули пишет.. это в 6.0, а в 4.1 студии вообще ничего не работает, не то что запись в ЕЕПРОМ..
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 15:56:32
Kavka
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 16:01:18
ИС-пытатель
Попробовать можно, но там код не такой уж и сложный, чтобы юзать целую библиотеку. Завтра попробую заменить
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 16:06:25
Kavka
Если у тебя 6-ая студия и ты пишешь на Си, то ничего дополнительно брать не надо - оно уже там есть, только заголовочник подключить.
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 16:09:08
ИС-пытатель
А по поводу 4-й и 6.2 что скажете? )
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 17:49:39
Kavka
В 6-й версии точно нормальный современный компилятор.
А в 4-й студии зависит от версии. К 4.18 и младше, обычно, "прикручивался" WinAVR, который сейчас устарел малёх и не поддерживается (после того, как их под крыло взяла Atmel). Хотя, наверное, можно и AVR Toolchain "прикрутить". А к 4.19 можно и тот-же AVR toolchain, что и в 6-й версии "прикрутить".
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 19:01:40
ИС-пытатель
Kavka писал(а):В 6-й версии точно нормальный современный компилятор..
Ага, как же, нормальный... Учитывая то, что даже обычный switch толком сделать не могут...
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 19:57:18
Kavka
Не ругай gcc - компилятор нормальный! Большинство он устраивает и не только на avr, но и на других платформах включая x86. И устраивает он людей куда более опытных и профессиональных, которые до сих пор подобных косяков в компиляторе не нашли.
А ты тут сразу и у контроллеров с пол пинка баги находишь, а теперь компилятор у тебя виноват...
Проблема людей говорящих, что "компьютер делает не то что я хочу" заключается именно в том, что заключено в этой фразе. Соответственно, не зная как должна работать программа, в твоём случае, какие стандарты реализует конкретная версия компилятора gcc, ты пытаешься "скормить" компилятору исходник, который, по твоему
представлению, должен делать одно, а скомпилированная программа делает другое, не то, что ты
подразумеваешь. И, смею заметить, что компилятор ведёт себя строго следуя стандарту языка Си и многим другим стандартам и соглашениям заложенным в него. А ты этих стандартов и соглашений не знаешь. Вот и получается, что ты чего-то не знаешь, а компилятор "знает" и делает. Ну и кто тут виноват? Компилятор или тот, кто не знает стандартов по которым работает компилятор?
Так что начни с замены собственных процедур работы с EEPROM на библиотечные. А там видно будет.
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 21:24:05
ИС-пытатель
Я понимаю, спор сейчас ни о чем, поскольку нет кода. Да даже если и выложу, захотите ли ковыряться в нескольких килобайтах, разбросанных по 6 исходникам? Библиотека и предопределенные макросы, конечно, хорошо.. Но отчего же не работает, когда следуешь строго даташиту? Должно еще лучше работать!
А как Вам вот такой видос?
http://www.youtube.com/watch?v=7r54t3VuyIg
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 21:59:10
НАПАЛМ
"АВР студио 6 - говно. Всем успехов."

Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 21:59:47
uni
Обычно причина - человеческий фактор. Когда кажется, что предусмотрел всё, а на самом же деле не вполне понимаешь как работает код в реальности. И кто же так код тестирует? Такие косяки нужно отлавливать при помощи отладчика, ставить точки останова и вперёд.
Re: Подскажите нормальный компилятор.
Добавлено: Вс июн 01, 2014 22:44:29
ИС-пытатель
Какой нах отладчик? Кривой студийный или Протеус, который только для мигания светодиодиками и годится? Если в Протез что-то более-менее емкое загнать - он подыхает нафиг
Re: Подскажите нормальный компилятор.
Добавлено: Пн июн 02, 2014 00:00:40
Goodefine
ИС-пытатель писал(а):... Если в Протез что-то более-менее емкое загнать - он подыхает нафиг
Не надо только сказок. Трудности бывают если тайминги процессов близки к step time, а такое бывает либо из-за высокой частоты (работа буквально на тактах при десятках МГц), либо из-за косяков, например иголки при неправильном dead time, когда программа пытается честно обсчитать переходной процесс и симуляция вылетает с ошибкой. А подобные детские программы в нем отлаживаются на раз. И объем кода побоку - в референсах есть проект шахмат - можно играть в реальном времени на LCD дисплее. А насчет компилятора - подойдет любой. В студийном компиляторе глюки конечно есть, но поверьте, вам их не найти в обозримом будущем. Только в сказках бывает - взяли компилятор (тем более очень хороший) и сразу нашли глюки - на самом деле проблема в коде.
Re: Подскажите нормальный компилятор.
Добавлено: Пн июн 02, 2014 01:03:11
ИС-пытатель
на самом деле проблема в коде.
успокоил..

Re: Подскажите нормальный компилятор.
Добавлено: Пн июн 02, 2014 04:49:56
uni
Какой нах отладчик? Кривой студийный или Протеус, который только для мигания светодиодиками и годится? Если в Протез что-то более-менее емкое загнать - он подыхает нафиг
Видимо такой, которого у тебя нет. У тебя программа примитивная. Иерархическое меню, кнопки, RTC и иногда USART и всё на mega16. Это спокойно симулируется в Proteus. Как пример более сложного проекта, который я отлаживал разными способами и в Proteus посмотри вот это:
Демка проектов uSD и Tetris (звук только отключи). Мои проекты тоже на ATmega16, причём для моделирования в Proteus я использую 8 МГц кварц. Программы написаны на C++.
Тебе не компилятор подсказать надо, а прямые руки в аренду брать, признайся.
Ещё раз повторяю, когда не знаешь почему что-то происходит не так, а голова не может "промоделировать" работу кода, то обращаешься к отладчику. Можно как к программному, так и железному. Есть вообще три способа отладки кода под AVR:
- AVR Studio через JTAG (железный);
- AVR Studio 4 + спец плагин для студии от Proteus (программный);
- Proteus просто (программный).
Re: Подскажите нормальный компилятор.
Добавлено: Пн июн 02, 2014 07:28:53
ИС-пытатель
Это не моя программа. Это видео из интернета. У меня 8535. три одновременно работающих таймера, АЦП, компаратор, прием/передача USART + обработка кнопок и динамичекая индикация на двух разрядах. + каждую минуту запись в память минут часов и суток в новую группу ячеек с затиранием старой группы. + заняты ВСЕ ноги контроллера. И причем, все это, за исключением, млять, записи в память правильно работает...
