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

 
 
> Версии IAR -> EWAVR 4.30A, Есть ли смысл апгрэдить?
Dog Pawlowa
сообщение Jun 13 2007, 08:54
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Использую EW AVR 411a - не нравится, что при некорректном завершении отладки закрывается среда.
EW MSP430 321A - 1. заблокировано "Go to definition of ..." 2. Постоянно лезет в директорий другого проекта при поиске и открытии файла.

Есть ли смысл апгрэйдить, если все остальное в принципе устраивает, и на что ?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ivainc1789
сообщение Jun 22 2007, 20:12
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Я конечно не эксперт в программировании, но объясните плиз почему оптимизатор не может САМ себе объявить соотв переменные прерываний, к которым есть обращение в основной программе как volatile ? Вроде бы простой алгоритм. А то тут столько народу на эти вилы попадает...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 22 2007, 20:30
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ivainc1789 @ Jun 22 2007, 23:12) *
Вроде бы простой алгоритм.

А если подумать, хоть чуть-чуть? Рассмотрим простейший вариант:
Имеем два файла в одном подпрограмма номер1 изменяющая некую переменную. В другом файле подпрограмма номер2 раборающая с ней-же. Обе подпрограммы откуда-то вызываются.
Излагайте алгоритм.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Jun 22 2007, 22:19
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(zltigo @ Jun 23 2007, 00:30) *
А если подумать, хоть чуть-чуть? Рассмотрим простейший вариант:
Имеем два файла в одном подпрограмма номер1 изменяющая некую переменную. В другом файле подпрограмма номер2 раборающая с ней-же. Обе подпрограммы откуда-то вызываются.
Излагайте алгоритм.


Так я "пыталсо" думать... lol.gif Но видимо безуспешно... biggrin.gif
Я рассматриваю случай, когда переменная изменяется В ПРЕРЫВАНИИ (в обработчике). Компилятор (или оптимизатор, в данном контексте - не суть) может просто не оптимизировать переменные, которые изменяют свое значение в прерываниях. Соответственно, любые вхождения данной переменной в других файлах также не оптимизируются. И как бы не вижу тут проблем. Компилятор по отношению к сорцам - внешняя программа, можно запросто получить список переменных обработчиков и передать оптимизатору указание не выкидывать эти переменные вне обработчиков. Что я не понимаю, изложите плиз...
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 23 2007, 00:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(ivainc1789 @ Jun 23 2007, 03:19) *
Я рассматриваю случай, когда переменная изменяется В ПРЕРЫВАНИИ (в обработчике). Компилятор (или оптимизатор, в данном контексте - не суть) может просто не оптимизировать переменные, которые изменяют свое значение в прерываниях.

А откуда компилятор должен знать, что переменная изменяется в прерывании? Для него функция обработчика прерывания это такая же функция как и другие. Отличие ее лишь в том, что адрес вызова этой функции компилятор размещает по указанному вектору и заканчивается функция оператором reti, а не ret.
Цитата(ivainc1789 @ Jun 23 2007, 03:19) *
Соответственно, любые вхождения данной переменной в других файлах также не оптимизируются. И как бы не вижу тут проблем. Компилятор по отношению к сорцам - внешняя программа, можно запросто получить список переменных обработчиков и передать оптимизатору указание не выкидывать эти переменные вне обработчиков. Что я не понимаю, изложите плиз...

Не сочтите за грубость, но чтобы разбираться далее предлагаю небольшой ликбез.
Напомню, что в Си есть четыре класса переменных: автоматические (локальные), регистровые, статические и глобальные (внешние). Регистровые можно вообще не рассматривать, т.к. обычно компиляторы для embedded приложений "чихали" на такое объявление. Они используют регистры по своему усмотрению, так как им более удобно ускорить выполнение программы.
Из оставшихся трех у локальных и статических переменных ограниченная область "видимости". Локальные "видны" компилятору в пределах функции или блока (части функции). Под локальные переменные отводится область памяти на стеке или в регистрах.
Глобальные переменные располагаются в основном ОЗУ. Область видимости у них весь модуль, где они объявлены. Чтобы глобальная переменная была видна в другом модуле, ее нужно объявить в нем тоже, но только обязательно указав, что она является внешней (с квалификатором extern). Иначе компилятор сделает попытку создасть еще одну переменную с таким же именем, а линковщик потом выдаст ошибку, указав на дублирование имен глобальных переменных.
Статические переменные могут быть как локальными, так и глобальными, но с перечисленными выше особенностями. Отличие статической локальной переменной от обычной автоматической (локальной) в том, что для статических переменных всегда отводится память в основном ОЗУ. А статические глобальные переменные имеют область видимости ограниченную текущим модулем.
Вы многомодульные программы писали когда-нибудь? Имею в виду программу (проект) состоящую из нескольких файлов. Если да, то странно, что не понимаете разницу в работе компилятора и линковщика. Компилятор содает объектные модули для кажого исходного файла отдельно, обрабатывая исходный текст в соответствии со своими алгоритмами оптимизации. Т.е. "переводит" с языка Си на язык ассемблера, а затем в объектный код. По большому счету он не "знает" о глобальных переменных, объявленных в других файлах. О всех переменных "знает" только линковщик. Но линковщик уже НЕ оптимизирует код, он только редактирует связи между объектами, подставляя и проверяя адреса для меток и переменных. Оптимизирует код компилятор, но он НЕ знает о всех переменных, расположенных во всех файлах проекта.
Понимаете какой замкнутый круг получается? Поэтому-то формализация автоматического объявления переменных в тип volatile весьма неординарна и "в лоб" не решается.
P.S. если я где-то ошибся в описаниях, то надеюсь более опытные товарищи меня поправят laughing.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dog Pawlowa   Версии IAR -> EWAVR 4.30A   Jun 13 2007, 08:54
- - rezident   Апгрейдить есть смысл, если что-то кардинально не ...   Jun 13 2007, 09:09
- - IgorKossak   О EWAVR могу сказать, что обновляться смело можно ...   Jun 13 2007, 14:32
- - zltigo   Компиляторы upgrade надо делать всегда. IAR по каж...   Jun 13 2007, 14:42
|- - OLEG_BOS   Цитата(zltigo @ Jun 13 2007, 17:42) Компи...   Jun 13 2007, 15:51
- - Itch   а такскать, лекарство для него где можно найти?   Jun 13 2007, 16:39
|- - rezident   Цитата(Itch @ Jun 13 2007, 22:39) а такск...   Jun 13 2007, 16:56
|- - zltigo   Цитата(rezident @ Jun 13 2007, 19:56) Дык...   Jun 13 2007, 17:28
- - Itch   ЦитатаДык оно универсальное. Концентрацию только ч...   Jun 13 2007, 18:07
- - IgorKossak   Первое впечатление от теста положительное. Проект ...   Jun 13 2007, 18:36
|- - OLEG_BOS   Цитата(IgorKossak @ Jun 13 2007, 21:36) П...   Jun 13 2007, 22:54
|- - zltigo   Цитата(OLEG_BOS @ Jun 14 2007, 01:54) что...   Jun 13 2007, 23:25
|- - IceS   Цитата(OLEG_BOS @ Jun 14 2007, 02:54) А у...   Jun 20 2007, 09:07
|- - OLEG_BOS   Цитата(IceS @ Jun 20 2007, 12:07) ....как...   Jun 20 2007, 11:40
|- - IgorKossak   Цитата(OLEG_BOS @ Jun 20 2007, 14:40) В м...   Jun 20 2007, 13:40
|- - IceS   Цитата(OLEG_BOS @ Jun 20 2007, 15:40) Нез...   Jun 20 2007, 15:50
|- - rezident   Цитата(IceS @ Jun 20 2007, 21:50) С включ...   Jun 20 2007, 16:26
||- - IceS   Цитата(rezident @ Jun 23 2007, 04:08) А о...   Jun 25 2007, 21:08
||- - rezident   Цитата(IceS @ Jun 26 2007, 03:08) проверь...   Jun 25 2007, 21:20
|- - rezident   Цитата(ivainc1789 @ Jun 23 2007, 02:12) Я...   Jun 22 2007, 20:50
- - aspID   Простите новичка, но кто-нибудь может подсказать п...   Sep 6 2007, 18:24
|- - zltigo   Цитата(aspID @ Sep 6 2007, 21:24) кто-ниб...   Sep 6 2007, 18:54
|- - dxp   Цитата(aspID @ Sep 7 2007, 01:24) Простит...   Sep 7 2007, 03:49
- - rezident   aspID, чего надо-то? В версии evaluation отладчи...   Sep 6 2007, 19:36
- - aspID   Да, перечитал инфо на сайте иара. Спутал видимо ...   Sep 7 2007, 04:51
- - JimBin   4.30 при загрузке проекта начинает отжирать 50% ре...   Sep 8 2007, 04:16
|- - IgorKossak   Цитата(JimBin @ Sep 8 2007, 07:16) 4.30 п...   Sep 10 2007, 06:30
- - aspID   Цитатаначинает отжирать 50% ресурсов проца пока не...   Sep 8 2007, 07:04
- - aspID   Кстати, на домашней машине так и не удается распин...   Sep 10 2007, 16:25
|- - &-rey   Поставил 4.30 компилю проект и... внутренняя ошибк...   Sep 13 2007, 11:40
- - JimBin   ЦитатаВы уверены, что именно IAR ресурсы потребляе...   Oct 4 2007, 11:53
- - IgorKossak   Цитата(JimBin @ Oct 4 2007, 14:53) да, ув...   Oct 4 2007, 12:57


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

 


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


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