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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Загадочное поведение SAM7S64 & IAR 4.40a
sgrig
сообщение Jul 20 2006, 10:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



Имеется проект с несколькими прерываниями: UARTы, ADC, PIO, таймеры и TWI.
Поскольку TWI у SAMa не имеет PDC, а на на нем висят графический индикатор, FRAM и RTC, то есть обмен достаточно интенсивный, я сделал "подкачку байтов" в прерывании. Прерывание короткое, с максимальным приоритетом, так как TWI у SAMa не любит пауз на шине.
Вызов прерываний сделан с использованием Сstartup.s79.

Теперь самое интересное:
- компилю проект с уровнем оптимизации Medium (здесь и далее по тексту: code или size - один хрен). Устройство устойчиво работает сутками, то есть все пучком.
- повышаю уровень оптимизации до High. Короткий всплеск активности на шине TWI и все погибает. Даже индикатор мертв, программа циклит в совершенно левом месте. Думаю, хрен с ним, у IAR-а всегда были такие проблемы при макс. оптимизации. Но:
- снижаю уровень оптимизации до Low. Индикатор работает, а при обмене с FRAM и RTC идут периодические сбои. Но в целом изделие работает.
- отключаю оптимизацию, поведение как в предыдущем случае + через некотое время (час-два) TWI переходит в режим самоудовлетворения - по шине хреначит беспорядочная передача, не прекращающаяся даже при остановке процессора.

Вопрос: как к этому относиться и, главное, кто виноват? Сижу не первый день, свои варианты закончились.
Может кто-нибудь выскажет соображения? Буду рад любой идее.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 10:42
Сообщение #2


Гуру
******

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



Цитата(sgrig @ Jul 20 2006, 13:34) *
Вопрос: как к этому относиться и, главное, кто виноват?

1.Относится к этому следует плохо.
2.Виноват в этом обычно программист неясно выразивший свою мысль компилятору, который тоже, увы,
не совершенен, особенно в предугадании последствий.
3.Локализуйте поблемный кусок включая/отключая оптимизацию на части проекта и локализовав, думайте над более однозначным написанием куска программы.
4. Ну и в качестве надежды на чудо - используйте свежий компилятор:
IAR ARM ANSI C/C++ Compiler V4.40A-P060613/W32
__________________________________^^^^^^^^^

Сообщение отредактировал zltigo - Jul 20 2006, 10:57


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sgrig
сообщение Jul 20 2006, 10:52
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



1 и 2 - полностью согласен, хотя не могу понять вариант с правильным "угадыванием" именно в среднем положении.
А 3-им путем я уже иду, но проект большой, файлов много, а сбои редки. Экстенсивный путь, боюсь, до отпуска не управлюсь.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 20 2006, 11:04
Сообщение #4


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



1.Вы все возможное пообъявляли как volatile?
У меня были случаи когда код выделывал кренделя, даже если переменная в прерывании не менялась. Просто инитилась в самом начале.
2.Написать обработчик аварийных ситуаций, в случае проблем, вылететать и инитить TWI заново.

PS Откуда они этот макроселл взяли? Я пока не столкнулся, думал что там наследник АВРовского, еще и продвинутый(как USART с SPI). А как посмотрел, за голову схватился.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 11:09
Сообщение #5


Гуру
******

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



Цитата(sgrig @ Jul 20 2006, 13:52) *
хотя не могу понять вариант с правильным "угадыванием" именно в среднем положении.

Просто проблема не одна а несколько, хоть и приводят к универсальному результату варианту "не работает". При отключеной оптимизации, если не используется какая-либо система позволяющая делить
недостающие ресурсы, у Вас просто все "захлебывается" и какой-то кусок начинает жить исключительно
своими проблемами.



Цитата(beer_warrior @ Jul 20 2006, 14:04) *
1.Вы все возможное пообъявляли как volatile?

Фу, какой моветон :-( Зачем-же "все возможное" - нужно только "нужное" :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 20 2006, 11:35
Сообщение #6


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Фу, какой моветон :-( Зачем-же "все возможное" - нужно только "нужное" :-)

А вы точно знаете, что точно "нужное", а что "ненужное"?
Тай отож smile.gif
Тем более собака порылась в оптимизаторе smile.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 11:43
Сообщение #7


Гуру
******

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



Цитата(beer_warrior @ Jul 20 2006, 14:35) *
А вы точно знаете, что точно "нужное", а что "ненужное"?

Ну так я :-) а если серьезно, то нужно думать, после чего, естественно, буду и знать нужное.
Если думать о нюансах взаимопонимания с компилятором прямо в процессе написания, оно как-то
легко и непринужденно получается.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sgrig
сообщение Jul 20 2006, 11:47
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



Цитата(zltigo @ Jul 20 2006, 18:09) *
Просто проблема не одна а несколько, хоть и приводят к универсальному результату варианту "не работает". При отключеной оптимизации, если не используется какая-либо система позволяющая делить недостающие ресурсы, у Вас просто все "захлебывается" и какой-то кусок начинает жить исключительно своими проблемами.

Да, возможно Вы правы. Скорее всего, какая-нибудь глупая ошибка, причем, совсем не там, где ищешь.


Цитата(beer_warrior @ Jul 20 2006, 14:04) *
1.Вы все возможное пообъявляли как volatile?

Нет, я так объявляю только те переменные, которые модифицируются в исключениях (прерываниях) и используются в основной программе или же в других исключениях (прерываниях).
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 21 2006, 09:46
Сообщение #9


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(zltigo @ Jul 20 2006, 13:42) *
4. Ну и в качестве надежды на чудо - используйте свежий компилятор:
IAR ARM ANSI C/C++ Compiler V4.40A-P060613/W32
__________________________________^^^^^^^^^

Это именно компилятор или очередной патч для full версии?
На сайле IAR пишется, что он не становится на eval.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 21 2006, 13:26
Сообщение #10


Гуру
******

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



Цитата(IgorKossak @ Jul 21 2006, 12:46) *
Это именно компилятор или очередной патч для full версии?
На сайле IAR пишется, что он не становится на eval.

Патч в виде совершенно автономного компилятора :-). Работает при наличии лицензии на full компилятор ЛЮБОЙ версии. Ну очень любезно со стороны IAR :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 22 2006, 09:52
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Гы-гы-гы! Еще одна жертва ИАРа...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 22 2006, 10:12
Сообщение #12


Гуру
******

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



Цитата(d__ @ Jul 22 2006, 12:52) *
Гы-гы-гы!

Всегда приятно смотреть на смеющегося человека, даже если это "смех без причины..."


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ig_z
сообщение Jul 24 2006, 13:18
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Цитата(zltigo @ Jul 21 2006, 16:26) *
Патч в виде совершенно автономного компилятора :-). Работает при наличии лицензии на full компилятор ЛЮБОЙ версии. Ну очень любезно со стороны IAR :-)


Вы можете сбросить на фтп вашу лицензию? У себя нашел только
EWARM Version: 2.1_WIN standalone license (dongled) (no:1000-005-880-9779)
но с ней не работает, т.к. это dongled лицензия. А генераторы делают лицензии для евалюшн версий
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 24 2006, 15:51
Сообщение #14


Гуру
******

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



Цитата(ig_z @ Jul 24 2006, 16:18) *
А генераторы делают лицензии для евалюшн версий

Я пользую:
2.1_WIN\0EWARM\0\0....

Готовый выложил в первоначальную ветку:
http://electronix.ru/forum/index.php?showt...mp;#entry137296


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 25 2006, 09:00
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Да бросьте этот ИАР аб землю и плюньте на него слюной! Поставьте нормальный ARM Ltd. компилер и он никогда не ударит вам ножом в спину!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 25 2006, 09:06
Сообщение #16


Гуру
******

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



Цитата(d__ @ Jul 25 2006, 12:00) *
Да бросьте этот ИАР аб землю и плюньте на него слюной!

Пластинка становится несколько заезженной. Вам не показалось?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 26 2006, 07:03
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Про заезженость пластинки вы расскажите кому либо другому, кто не переходил с ИАРа в середине проекта на АРМ Лтд. из-за неимоверной глючности первого и невозможности включить хоть малейшую оптимизацию...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 26 2006, 07:55
Сообщение #18


Гуру
******

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



Цитата(d__ @ Jul 26 2006, 10:03) *
из-за неимоверной глючности первого и невозможности включить хоть малейшую оптимизацию...

Я с Вами лично не знаком и пожалуйста не принимайте это близко к сердцу. Но обычно такие проблемы возникают с ЛЮБЫМ компилятором в 99% только в случае, если программист не может ясно выразить свою мысль. В таком случае поведение компиляторов начинает отличаться, и отнюдь не факт,
что возлюбленный вами компилятор так-же удачно догадается о Ваших намерениях в другом проекте.
Ваши метания на другой компилятор только подтверждают в моих глазах тот факт, что понимание того, что Вы пишите, Вами пока невелико :-(. Огорчает то, что вместо анализа сложившийся ситуации во всем был обвинен компилятор и эти "обвинения" сейчас с упорством достойным лучшего применения широко разбрасываются Вами на просторах форума.
Ошибки встречаются в любом компиляторе.
Имея за плечами два десятка лет общения с разнообразными "C" компиляторами, я при активнейшем использовании в течении последних 9 месяцев IAR компилятора в том числе и при портировании на ARM платформу значительного числа своих предыдущих наработок с проблемами не встретился. Наступил только на одну явную ошибку компилятора, которая была локализована (вместо поиска другого компилятора) за, примерно, 20 минут. Причем в следующей версии компилятора эта ошибка (согласно честно ведущегося перечня исправленных ошибок) была устранена. Оптимизация всегда используется максимальная или по производительности или по размеру (для некоторых кусков кода). К качеству полученного кода у меня "претензии" минимальные:
- мог-бы шире пользоватся условным выполнением команд вместо JUMP;
- есть тяготение даже в ARM mode к использованию непосредственных значений в поле команды
в диапазоне характерном для Thumb mode.

Глобальная оптимизация вполне достойна, как минимум, если попытаться улучшить результат руками,
потеть придется явно не пропорционально достигнутому результату.

P.S.
IDE от IAR (впочем, как и любаяя другая) меня не интересует в принципе и ее я обсуждать не собираюсь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ig_z
сообщение Jul 26 2006, 12:53
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Цитата(d__ @ Jul 26 2006, 10:03) *
Про заезженость пластинки вы расскажите кому либо другому, кто не переходил с ИАРа в середине проекта на АРМ Лтд. из-за неимоверной глючности первого и невозможности включить хоть малейшую оптимизацию...


Имхо вы слишком категоричны в высказываниях. "глючности и невозможность" - звучит как то слишком фантастично.

За последние несколько лет активной работы с иарарм и иар430 в моем репозитории было всего 5 багов. В последних версиях осталось всего два. Оба связаны с шаблонами, которые практически никем не применяются. Да и то, одну ошибку и ошибкой назвать трудно - просто разночтения стандарта у ИАР и Мелкософта. Это приводит к неудобству ведения общих исходников и только.

Другое дело, что с ИАРом тяжело контачить по поводу багов, по крайней мере все мои обращения остались без ответа. Возможно, потому, что я у них ничего не покупал. Лицензионные кустомеры говорят, что суппорт работае вполне оперативно.
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 27 2006, 07:51
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



А почему бы вам не рассказать о том как IAR ARM страдал падучей болезнью при входе и выходе из режима отладки, которую поправили только в версии 4.3. А его знаменитое неубирающееся окошко "не могу прочитать R0-R14" от которого спасает только ЦТРЛ_АЛТ_ДЕЛ? Оно до сих пор еще не поправлено! При чем оно умудряется выскакивать даже при использовании ДЖЕЙЛИНКА! Конечно если писать программки типа "мама мыла раму" или лед блинк то ему равных нет, а вот предьявите пожалуйста хоть одну серьезную программу ну хотя-бы кил на 200-300 сделаную на ИАР АРМЕ! Тогда и поговорим...
Go to the top of the page
 
+Quote Post
vet
сообщение Jul 27 2006, 09:14
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



"кил" чего, простите? исходников? так это совсем немного.

Использую EWARM 4.20 (+J-Link) для работы с SAM7S128, доволен вполне; пресловутые болезни обходят стороной.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Jul 27 2006, 09:27
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
Поскольку TWI у SAMa не имеет PDC, а на на нем висят графический индикатор, FRAM и RTC, то есть обмен достаточно интенсивный, я сделал "подкачку байтов" в прерывании.

Прерывание от TWI или от чего-то другого? Сколько у вас всего прерываний задействовано?
Может попробовать сделать тестовую программку с подкачкой без использования прерываний?
Если будет тот же эффект, значит прерывание тут не причём.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 27 2006, 09:45
Сообщение #23


Гуру
******

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



Цитата(d__ @ Jul 27 2006, 10:51) *
А почему бы вам не рассказать о том как

А потому, что я уже РАНЕЕ написал:
Цитата
P.S.
IDE от IAR (впочем, как и любаяя другая) меня не интересует в принципе и ее я обсуждать не собираюсь.

Растолковываю - меня интересуют только компиляторы. "родными" IDE не пользуюсь и пользоваться не буду ввиду cуществования более приспособленного для профессиональной работы инструментария. Мое мнение об IDE "компиляторов" вообще и об IDE IARа в часности Вы можете найти на этом форуме.
Внутрисхемным отладчиком пользуюсь крайне редко и переживу почти любой.
Только как соотносится IDE IAR с качеством РАНЕЕ критикуемой Вами генерации компилятором кода я
не понял.

Цитата
предьявите пожалуйста хоть одну серьезную программу ну хотя-бы кил на 200-300 сделаную на ИАР АРМЕ! Тогда и поговорим...

Насколько я понимаю, это вариант бессмерного аргумента Паниковского: "А ты кто такой?".
Потом что будет? "Поезжайте в Киев и спросите, кем до революции был Паниковский, нет вы поезжайте и спросите!"?

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 27 2006, 12:47
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Очень приятно иметь дело с человеком утруждающим себя подробным растолковыванием всяческих мелочей этим бестолковым ламерам. Так все-таки покажите пожалуйста реально работающую программу (особенно в реальном масштабе времени) обьемом 200 и более килобайт бинарного ВЫХОДНОГО кода компилятора ИАР.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 27 2006, 13:59
Сообщение #25


Гуру
******

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



Цитата(d__ @ Jul 27 2006, 15:47) *
Так все-таки покажите пожалуйста реально работающую программу (особенно в реальном масштабе времени) обьемом 200 и более килобайт бинарного ВЫХОДНОГО кода компилятора ИАР.

А какая принципиальная разница 200K, или 2 по 100K, или 999 по 99K.
Если Вам любопытно, то суммарный объем наработанный за 9 месяцев по 6 девайсам много превосходит 200K СОБСТВЕННОРУЧНО написанного "реалтаймового" кода.

1. Если Вы полагаете, что хоть какой-то компилятор способен заниматься хоть какой-то разумной оптимизацией в пределах ОДНИМ куском написанного кода размером 200K, то это просто детская наивность.
2. Я находясь в здравом не писал, не пишу и не буду писать ничего ОДНИМ куском, что будет выливаться в ОБЪЕКТНЫЙ код более чем несколько десятков килобайт.
3. Или у Вас претензии к линкеру от IAR? Вроде нет - катятся бочки на оптимизацию...
4. Если о моей способности писать программы превышающий магический размер 200K embedded кода, то отвечаю - способен и писал под x86 платформу.

Надеюсь, я доходчиво и без "аргументов" типа:
Цитата
Да бросьте ..... аб землю и плюньте на него слюной!

объяснил, почему представление или не представление "программы" размером 200K просто ни о чем ни свидетельствует? И почему я ранее написал, что не могу могу воспринять сие "требование" иначе чем
Цитата
вариант бессмерного аргумента Паниковского: "А ты кто такой?".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sgrig
сообщение Jul 27 2006, 18:16
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



Огромное спасибо за проявленное внимание, но компилятор абсолютно не виноват.
Была абсолютно ламерская ошибка человека (то бишь меня), 20 лет работавшего с 8-миразрядниками и впервые воспользовавшегося 32-х битником. Господин zltigo был абсолютно прав.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 27 2006, 19:08
Сообщение #27


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



У меня был недавно глюк с IAR 4.20. Он гад константу, описанную через #define, в проге почему-то увеличивал на 16. Это я в отладчике выяснил, взглянув на асм-код. Приходилось в нескольких местах писать "константа-16".
Странный, да, глюк?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 27 2006, 19:32
Сообщение #28


Гуру
******

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



Цитата(GetSmart @ Jul 27 2006, 22:08) *
У меня был недавно глюк с IAR 4.20. Он гад константу, описанную через #define, в проге почему-то увеличивал на 16.

Ну раз недавно, значит не забыт :-) давайте сюда - посмотрим....
Цитата
Странный, да, глюк?

Пока неясно.
Цитата
Приходилось в нескольких местах писать "константа-16".

А вот это точно странное и совершенно ошибочное решение с Вашей стороны.
Подгонка под ответ нахудшее из всех возможных решений.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jul 27 2006, 19:38
Сообщение #29


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Да и число 16 какое-то... наводящее на мысли. smile.gif Константа вычисляемая да?


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 27 2006, 20:38
Сообщение #30


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(SpiritDance)
Да и число 16 какое-то... наводящее на мысли. Константа вычисляемая да?

Да, да! Я тоже так подумкал. Константа - простое число.

Подождите немножко, щас всё несущественное вырежу (типа коммерческая тайна), а чё останется - запостю.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 27 2006, 21:43
Сообщение #31


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Зацените вырезку из отладчика:
Код
0x00002C88 E3A01001  MOV          R1, #0x1
0x00002C8C E1A00006  MOV          R0, R6
0x00002C90 EBFFFFD3  BL           proc2                 ; 0x2BE4
0x00002C94 EA00003D  B            0x002D90
    else if ((PutBufVar >= NET_VAR_DOUT1) &&
             (PutBufVar < NET_VAR_DOUT1 + DIG_OUTPUTS))
0x00002C98 E3500048  CMP          R0, #0x48
0x00002C9C BA00000D  BLT          0x002CD8
0x00002CA0 E3500054  CMP          R0, #0x54
0x00002CA4 AA00000B  BGE          0x002CD8
    { if (varsize != 4)                     // ïàðàìåòð float - âðåìÿ (ñåê)
0x00002CA8 E3560004  CMP          R6, #0x4
0x00002CAC 1AFFFFE4  BNE          0x002C44
      varsize = PutBufVar - NET_VAR_DOUT1;
0x00002CB0 E2406038  SUB          R6, R0, #0x38
      proc(varsize);
0x00002CB4 E1A00006  MOV          R0, R6
0x00002CB8 EBFFFFC6  BL           proc            ; 0x2BD8

Касательно константы NET_VAR_DOUT1, которая реально описана как:
#define NET_VAR_DOUT1 64+8
__________________________________

Ой, бл@@!
Тока щас понял в чём косяк. Таки мой косяк >:(
Надо было этот сраный дефайн в скобки заключить.

Сообщение отредактировал GetSmart - Jul 27 2006, 21:57


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 27 2006, 22:01
Сообщение #32


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Я как бы извиняюсь, что воду тут намутил. Зря.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 27 2006, 22:27
Сообщение #33


Гуру
******

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



Цитата(GetSmart @ Jul 28 2006, 02:01) *
Я как бы извиняюсь, что воду тут намутил. Зря.

А я только собрался про скобки написать smile.gif

Драку я, к сожалению, пропустил, но скажу пару слов о столь любимом мной и господином d__ компиляторе от ARM Ltd. Точнее, не о компиляторе даже, а о линкере. Так вот, этот линкер имеет прелестную привычку глухо виснуть при ошибках, особенно в сложных скриптах с ROPI/RWPI. Не мало он крови мне в свое время испортил.

Я к тому, что глюки есть у всех, а не только у IAR'а, но это еще не повод бросать что-либо об стенку.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jul 28 2006, 06:21
Сообщение #34


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Хм у меня есть уже определенная методика обнаружения своих тупых ошибок - объяснить оппоненту, пусть даже воображаемому, (очень желательно вслух или на бумаге хотябы) то как работает этот кусок программы. Часто помогает.smile.gif

А еще может кто-нибудь все-таки объяснит возможно ли в реалвью исполнять код из RAM. Даже в gcc это есть, сегмент fast кажется.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 28 2006, 08:02
Сообщение #35


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(SpiritDance)
А еще может кто-нибудь все-таки объяснит возможно ли в реалвью исполнять код из RAM. Даже в gcc это есть, сегмент fast кажется.

Конечно возможно. Я такое делал в IAR. перед процедурой пишется __ramfunc. Мне надо было обрабатывать прерывания прямо во время записи во флэш LPC213x. Только в раме они и могут обрабатываться.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jul 28 2006, 09:30
Сообщение #36


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Я имел ввиду RealVeiw от ARM, сколько не смотрел в их гайды так ничего и не нашел относительно преноса кода в память.
В мануале указано что прагмами можно размещать код по секциям
• code
• rodata
• rwdata
• zidata.
В rodata и rwdata в примерах помещаются именно данные.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 28 2006, 09:53
Сообщение #37


Гуру
******

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



Цитата
Я имел ввиду RealVeiw от ARM, сколько не смотрел в их гайды так ничего и не нашел относительно преноса кода в память.


Почитайте мануал на линкер, там должна быть глава "Using Scatter-loading description files".
Вот пример скрипта для AT91SAM7S64 без Remap'а:

Код
FLASH 0x00000000 0x00010000
{
    FLASH 0x00000000 0x00010000
    {
        start.o (startup, +First)
        * (+RO)
    }
    RAM 0x00200000 0x00004000
    {
        * (+RW, +ZI)
        * (fastcode)
    }
}


Если нужно поместить функцию в RAM, пишем:

Код
#pragma arm section code = "fastcode"

void my_func(void)
{
}

#pragma arm section code
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jul 29 2006, 07:38
Сообщение #38


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Да чтото до ллинкера я не дошел так глубоко, а надо было. Там и про фромельф написано.
Спасибо aaarrr сам я бы до этого долго доперал.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 7 2006, 14:00
Сообщение #39


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(zltigo @ Jul 24 2006, 18:51) *
Цитата(ig_z @ Jul 24 2006, 16:18) *

А генераторы делают лицензии для евалюшн версий

Я пользую:
2.1_WIN\0EWARM\0\0....

Готовый выложил в первоначальную ветку:
http://electronix.ru/forum/index.php?showt...mp;#entry137296

Да нет там ничего вложенного, только намерение выложить.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 7 2006, 14:02
Сообщение #40


Гуру
******

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



Цитата(IgorKossak @ Aug 7 2006, 17:00) *
Да нет там ничего вложенного, только намерение выложить.

Было выложено. Потом удалено по настоянию модератора :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:39
Рейтинг@Mail.ru


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