реклама на сайте
подробности

 
 
> Что не так с Keil?, Поведение абсолютно неадекватное, не знаю, что делать
Polaris
сообщение Aug 11 2009, 14:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Доброго всем времени суток!

До недавнего времени я практически не работал с ARM, были некоторые опыты с AT91SAM7S под IAR, вроде бы все получалось, что хотел. Может быть, потому, что до этого работал под IAR и на AVR, и на MSP430. С Keil имел дело только для 8051, есть, конечно, свои особенности, но особых глюков тоже не замечал. Сейчас необходимо сменить платформу на более мощную. Выбрал после анализа этого форума LPC23xx (конкретно сейчас LPC2368), заказал с starterkit.ru соответствующую плату, в качестве среды разработки остановился-таки на Keil, в качестве отладчика взял SkyLink. В новом проекте нужно поднять сетку, SD, USB, поэтому решил взять таки RTX и плагины к ней от того же Keil. Ранее с операционками экспериментировал только под scmRTOS. В итоге сижу уже несколько дней и ловлю глюки. Непонятно почему, но простое копирование проекта из одного каталога в другой приводит к неработоспособности проекта. Я уже и не знаю, что думать. В оригинальном каталоге пример работает, после переноса - нет. Такое впечатление, что Keil не сохраняет настройки проекта или же вообще их коверкает, в настройках uVision никаких отличий визуально не вижу, но не работает. Все пути прописаны верно. В итоге для того, чтобы работало, лезу в файл uv2 и меняю руками все. Только тогда есть шансы, что заработает. В примере http_demo не работала DHCP, я уж все перепробовал, в итоге заметил, что там флаг таймера не сбрасывается, начал сбрасывать - заработало. Неправильный пример сознательно выложили? Сейчас пытаюсь заставить работать UART, изменил пример для работы под UART0 - не работает, вернул все назад - снова не работает, но я побожиться готов, что ничего кроме 10 строк инициализации ничего не менял, закомментировал-раскомментировал - и все sad.gif Постоянно замечаю, что после запуска uVision настройки в проекте могут быть вообще от фонаря. Это диверсия? Помимо всего прочего постоянно сталкиваюсь с отпаданием SkyLink, под AVR JTAG так конкретно никогда не подводил.
Что я делаю не так? Может, кто-то сталкивался? Пока что от Keil для ARM одни негативные эмоции, за такое же время год назад я под IAR и USB поднял, и получил продукт функционирующий, сейчас же вообще шаг вперед, два назад.

Помогите, пожалуйста, советом! Есть уже желание бросить его нафиг и делать под IAR. Но тогда отладчик придется покупать другой sad.gif
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 14)
SeriouSerg
сообщение Aug 11 2009, 16:48
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Цитата(Polaris @ Aug 11 2009, 18:47) *
..........
Помогите, пожалуйста, советом! Есть уже желание бросить его нафиг и делать под IAR. Но тогда отладчик придется покупать другой sad.gif

Юзал кеил два года, пока он меня окончательно не задолбал своими глюками. Неадекват вполне похожий наблюдался, как один и тот же проект под одной и той же версией кейла на домашней машине компилируется, на ноуте нет. При этом все системные пути одинаковы, все идентично. А как он компилирует - это вообще песня раненого программиста... Почему программа не работает, оказывается компилятор решил, что вот этот кусок совершенно лишний, и просто выкинул его, и это при ноль-уровне оптимизации. При включенной оптимизации многие программы вообще не работают как надо, в т.ч. почти все атмеловские примеры. В общем, совет такой - бросай кейл, ибо дальше будет хуже. Отладчик возьми JetSeven в стартерките, стоит копейки. Под яром все значительно стабильнее и быстрее. Единственное, в чем потеряешь - не будет блатного дебаггера, где в удобном виде можно просматривать состояние периферии (не всей, правда), но привыкнешь.

Удачи, коллега!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 11 2009, 16:57
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SeriouSerg @ Aug 11 2009, 20:48) *
Неадекват вполне похожий наблюдался, как один и тот же проект под одной и той же версией кейла на домашней машине компилируется, на ноуте нет.

И что при этом говорит?

Цитата(SeriouSerg @ Aug 11 2009, 20:48) *
А как он компилирует - это вообще песня раненого программиста... Почему программа не работает, оказывается компилятор решил, что вот этот кусок совершенно лишний, и просто выкинул его, и это при ноль-уровне оптимизации. При включенной оптимизации многие программы вообще не работают как надо, в т.ч. почти все атмеловские примеры.

Как программа написана, так и компилируется. А атмеловские примеры сплошь написаны через %опу.
Компилятор RVCT абсолютно адекватен. Единственный минус (и то сомнительный) - неполная совместимость с C99.
Go to the top of the page
 
+Quote Post
SeriouSerg
сообщение Aug 11 2009, 17:10
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Цитата(aaarrr @ Aug 11 2009, 20:57) *
И что при этом говорит?

Как программа написана, так и компилируется. А атмеловские примеры сплошь написаны через %опу.
Компилятор RVCT абсолютно адекватен. Единственный минус (и то сомнительный) - неполная совместимость с C99.


Давно это было. Если не изменяет память - ругался на якобы несуществующую функцию или дефайн. Я еще тогда специально сравнил проекты побайтно, и папку с проклятым кейлом тоже... Надо было скриншоты сделать для истории маразмов.
Компилятор RVCT абсолютно неадекватен. Как программа написана, так и компилируется - что ж, верное утверждение, только вот незадача, отлично компилируется и работает под Яр и компилируется но не работает под RVCT, предмет разбора - файловая система FAT32, а также код, содержащий интенсивные вычисления с плавающей точкой.
Возможно все эти приколы могут быть связаны с вылеченной версией кейла, всяко бывает...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 11 2009, 17:27
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SeriouSerg @ Aug 11 2009, 21:10) *
Компилятор RVCT абсолютно неадекватен. Как программа написана, так и компилируется - что ж, верное утверждение, только вот незадача, отлично компилируется и работает под Яр и компилируется но не работает под RVCT, предмет разбора - файловая система FAT32, а также код, содержащий интенсивные вычисления с плавающей точкой.

Просто IAR прощает некоторые ошибки, только и всего. С плавучкой - могли быть стеки не выровнены, например.

Про глючность среды Keil рассуждать не берусь, но RVCT и его предшественниками пользуюсь еще со времен ADS 1.1 - никаких проблем замечено не было.
Go to the top of the page
 
+Quote Post
uriy
сообщение Aug 11 2009, 17:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



У меня в Keil очень часто зависает самодельный MT-Link примерно в одном из 5-8 запусков дебаггера. В IAR еще не разу не зависал, правда пользуюсь я IAR пока гораздо реже.
Go to the top of the page
 
+Quote Post
SeriouSerg
сообщение Aug 11 2009, 17:44
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Цитата(aaarrr @ Aug 11 2009, 21:27) *
Просто IAR прощает некоторые ошибки, только и всего. С плавучкой - могли быть стеки не выровнены.

Нет, это точно не стек, уж не первый день софт разрабатываю. Я все же склоняюсь к мнению, что в кейле есть глюки. Язык один, пусть у каждого компилятора своя специфика, свои расширения, это понятно. Но когда один из них не правильно отрабатывает код, написанный на чистом си, это как минимум удивляет, как максимум - раздражает. Ошибки есть функциональные, есть синтаксические, так вот функциональные выплыли бы у меня и в яре, однако же все работает как часы, стало быть кеил привносит функциональные ошибки на этапе компиляции, что я и наблюдал в некоторых случаях в дизассемблере. Спрашивается - на кой черт тогда компилятор, если его приходится постоянно контролировать, тогда уж лучше писать на асме.

Коллега, а RVCT и RVMDK один компилятор использует? Может мы о разных вещах говорим?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 11 2009, 17:50
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SeriouSerg @ Aug 11 2009, 21:44) *
Коллега, а RVCT и RVMDK один компилятор использует? Может мы о разных вещах говорим?

RVCT - это и есть название компилятора, используемого RVMDK.
В стародавние времена Keil включал в себя компилятор CARM. Про него ничего сказать не могу, но опять таки сильно сомневаюсь в "глючности".

Апеллировать к IAR'у не стоит - одна и та же неправильно написанная программа может по разному восприниматься разными компиляторами. Боюсь, без конкретных примеров наша дискуссия не имеет смысла.
Go to the top of the page
 
+Quote Post
Polaris
сообщение Aug 11 2009, 18:25
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Я немного уточню. Подозреваю, что это как-то связано с глючностью RTX. Может ли это быть сделано сознательно? У меня стоит 3.70 со "своего" фтп. Такое впечатление, что после изменения примеров что-то отваливается, потому что вся активность процессов из соответствующей закладки отображается исключительно в RTX_Config.c (100%), в нормально работающем процессе в идле, конечно, проводит большую часть времени, но не 100%. По поводу глюков компилятора ругаться не буду, на 8051 ничего особенного не замечал, тут вопрос скорее в скрытых библиотеках RTX и иже с ней.
Go to the top of the page
 
+Quote Post
SeriouSerg
сообщение Aug 11 2009, 18:49
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Цитата(aaarrr @ Aug 11 2009, 21:50) *
RVCT - это и есть название компилятора, используемого RVMDK.
В стародавние времена Keil включал в себя компилятор CARM. Про него ничего сказать не могу, но опять таки сильно сомневаюсь в "глючности".

Апеллировать к IAR'у не стоит - одна и та же неправильно написанная программа может по разному восприниматься разными компиляторами. Боюсь, без конкретных примеров наша дискуссия не имеет смысла.


Есть стандарт, есть компилятор, который этот стандарт должен соблюдать, и есть программист, который так же должен уметь грамотно писать программы. Одна и та же неправильно написанная программа может по разному восприниматься разными компиляторами - может, но не должна. Компилятор должен выполнять свою работу, он должен скомпилировать программу в соответствии со стандартами, однако на деле мы получаем разный код у яра и кейла, местами абсолютно разный. Возможно у кейла были какие то особые требования к исходному коду, я не знаю. Но зато я хорошо знаю стандарт си, что можно делать и что нельзя, что правильно, что нет, что допускается, что не рекомендуется. И когда я пишу программу в соответствии с этими знаниями, то, как минимум, рассчитываю на то, что компилятор правильно меня поймет, а не будет выбрасывать куски кода. Вот кстати конкретный пример - пустой цикл for, неиспользуемая переменная, которой присваивается значение. В целях отладки иногда нужно и то, и другое, однако кеил это все похерит. Яр исполняет как есть. С точки зрения компилятора, конечно, правильно убрать ненужные фрагменты, но только в том случае, когда его об этом попросят, включив оптимизацию. Это сотая часть зла, есть примеры покруче с полностью неработоспособным фат32. Причем, как показало вскрытие, смерть наступала неожиданно и в разных местах, следует учесть, что периферия MCU при этом используется достаточно интенсивно. Иногда вылет в хард фаулт, иногда вылет програм каунтера черти куда, иногда фриз и ожидание флага готовности ДМА... вечное ожидание. А теперь внимание - тот же код, та же аппаратная библиотека, только под IAR - все работает. Стек и хип тот же. Версия кейла на момент расставания 3.20.

О глюках самой среды я вообще молчу...

Цитата(Polaris @ Aug 11 2009, 22:25) *
Я немного уточню. Подозреваю, что это как-то связано с глючностью RTX. Может ли это быть сделано сознательно? У меня стоит 3.70 со "своего" фтп. Такое впечатление, что после изменения примеров что-то отваливается, потому что вся активность процессов из соответствующей закладки отображается исключительно в RTX_Config.c (100%), в нормально работающем процессе в идле, конечно, проводит большую часть времени, но не 100%. По поводу глюков компилятора ругаться не буду, на 8051 ничего особенного не замечал, тут вопрос скорее в скрытых библиотеках RTX и иже с ней.

А и не должно быть 100%. Диспетчер задач и event pool крутятся всегда.
Go to the top of the page
 
+Quote Post
Polaris
сообщение Aug 11 2009, 19:25
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(SeriouSerg @ Aug 11 2009, 21:49) *
А и не должно быть 100%. Диспетчер задач и event pool крутятся всегда.

Я и говорю, что не должно, но там 100%, он просто не запускает задачи вообще.

Цитата(SeriouSerg @ Aug 11 2009, 21:49) *
О глюках самой среды я вообще молчу...

А что за глюки? Я вот заметил характерное, что он с настройками обращается весьма фривольно, особенно при копировании проекта. Такое впечатление, что он что-то хранит не только в .uv2 и .Opt, но и где-то еще. Постоянно сбрасывает тип контроллера, скорость JTAG, использование RTX.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 11 2009, 19:31
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SeriouSerg @ Aug 11 2009, 22:49) *
Вот кстати конкретный пример - пустой цикл for, неиспользуемая переменная, которой присваивается значение. В целях отладки иногда нужно и то, и другое, однако кеил это все похерит. Яр исполняет как есть. С точки зрения компилятора, конечно, правильно убрать ненужные фрагменты, но только в том случае, когда его об этом попросят, включив оптимизацию.

Хотите сохранить пустой цикл for - используйте его с volatile переменной. Зачем вообще может понадобиться выключать оптимизацию, я не представляю.

Цитата(SeriouSerg @ Aug 11 2009, 22:49) *
Это сотая часть зла, есть примеры покруче с полностью неработоспособным фат32. Причем, как показало вскрытие, смерть наступала неожиданно и в разных местах, следует учесть, что периферия MCU при этом используется достаточно интенсивно. Иногда вылет в хард фаулт, иногда вылет програм каунтера черти куда, иногда фриз и ожидание флага готовности ДМА... вечное ожидание. А теперь внимание - тот же код, та же аппаратная библиотека, только под IAR - все работает. Стек и хип тот же. Версия кейла на момент расставания 3.20.

Это значит только, что вскрытие ничего не показало - вылетает в разных местах, причины просто не установлены.
Go to the top of the page
 
+Quote Post
SeriouSerg
сообщение Aug 11 2009, 21:10
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Цитата(Polaris @ Aug 11 2009, 23:25) *
Я и говорю, что не должно, но там 100%, он просто не запускает задачи вообще.

Если время позволяет - можно написать свой аналог RTX, сложностей там нет, если имеешь представление как работают ОС. Расширять сможешь как угодно и юзать под любой средой. Практика показывает, что рукописные вещи намного надежнее и в плане гибкости настройки и расширяемости намного лучше чем готовое. Из минусов - время на разработку.

Цитата(Polaris @ Aug 11 2009, 23:25) *
А что за глюки? Я вот заметил характерное, что он с настройками обращается весьма фривольно, особенно при копировании проекта. Такое впечатление, что он что-то хранит не только в .uv2 и .Opt, но и где-то еще. Постоянно сбрасывает тип контроллера, скорость JTAG, использование RTX.


Да, есть такое, еще улинк периодически отваливался. При отладке с точками прерывания невесть что творилось. Старые убранные срабатывают, новые нет...



Цитата(aaarrr @ Aug 11 2009, 23:31) *
Хотите сохранить пустой цикл for - используйте его с volatile переменной.

Да я то знаю, разговор был о том, что творят компиляторы.
Цитата(aaarrr @ Aug 11 2009, 23:31) *
Зачем вообще может понадобиться выключать оптимизацию, я не представляю.

Так как отладка во многих случаях может быть затруднена или вовсе невозможна.
Цитата(aaarrr @ Aug 11 2009, 23:31) *
Это значит только, что вскрытие ничего не показало - вылетает в разных местах, причины просто не установлены.

Начёрта такая среда разработки, которой надо еще подробное вскрытие проводить? Может мне за него еще машинный код сформировать?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 11 2009, 21:21
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SeriouSerg @ Aug 12 2009, 01:10) *
Так как отладка во многих случаях может быть затруднена или вовсе невозможна.

Отладчиком. Ну, понятно все.

Цитата(SeriouSerg @ Aug 12 2009, 01:10) *
Начёрта такая среда разработки, которой надо еще подробное вскрытие проводить? Может мне за него еще машинный код сформировать?

Затем, чтобы найти источник проблем. Подход "собрали вот IAR'ом - и все заработало" в корне неверен. Случайно оно заработало.
Go to the top of the page
 
+Quote Post
SeriouSerg
сообщение Aug 11 2009, 21:47
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 6-06-05
Из: г. Таганрог
Пользователь №: 5 759



Цитата(aaarrr @ Aug 12 2009, 01:21) *
Затем, чтобы найти источник проблем. Подход "собрали вот IAR'ом - и все заработало" в корне неверен. Случайно оно заработало.

Я понял, Вы большой поклонник кейла и переубеждать Вас бесполезно. То, что заработало, как Вы говорите, случайно, уже используется в нескольких проектах, где и работает стабильно. А если учесть тот фактор, что и ось и фат работает на разных кристаллах от разных производителей, то мне совсем не верится в такие случайности.

Человек спросил совета, я дал, исходя из опыта, в ответ получаю противостояние и всяческое опровержение третьих лиц. Если Вы такой знаток кейла, почему ни одно из Ваших сообщении не было адресовано автору, ведь вопросы поставлены вполне конкретные? Я не знаю что ему можно сделать в этом случае, поэтому и советую перейти на яр, дабы не мучиться. Может Вы дадите более дельный совет человеку?
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016