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

 
 
10 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Вопросы по scmRTOS
koluna
сообщение Jun 23 2009, 10:19
Сообщение #61


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(ReAl @ Jun 23 2009, 12:42) *
Хм. В коде всё нормально.
Версия avr-gcc - значение опции MAKE_SMALLEST_HEX в makefile - размер кода/данных - работа в макете с atmega168@intRC8MHz
(опция MAKE_SMALLEST_HEX для 20060421 работает, так как у себя я заменил этой версии ldscripts на более новые с KEEP() для нужных секций).
Именно 20080610 у меня на компьютере нет и лень ставить.
Прикладываю всё кучей аж с листингами, архив всё равно небольшой.
Попробуйте сверить ключи компилятора, хотя у меня ничего такого особого не прописано.


Спасибо.
Ваш hex попробуем.
Посмотрим на мейк.
Скомпилировал в 2007. Вечером проверю. Доложу.

Кстати, а оптимизация не может негативно влиять?

У вас, я смотрю, оптимизация совсем никакая: опция OPT = -Os smile.gif
И ещё по поводу стандарта.
У вас -std=c++98, у меня не знаю что Code::Blocks компилятору подсовывает sad.gif


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 23 2009, 10:44
Сообщение #62


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(n_bogoyavlensky @ Jun 23 2009, 13:19) *
Кстати, а оптимизация не может негативно влиять?
У вас, я смотрю, оптимизация совсем никакая: опция OPT = -Os smile.gif
Самая правильная оптимизация для AVR
Вот за всякие дополнительные ручки по поводу лимита размера для inline и тому подобное - да, не дёргаю. И так не плохо.
Не думаю, что -O2 должна сильно поменять ситуацию.

Цитата(n_bogoyavlensky @ Jun 23 2009, 13:19) *
И ещё по поводу стандарта.
У вас -std=c++98, у меня не знаю что Code::Blocks компилятору подсовывает sad.gif
Там оно вроде бы закомментировано, так что будет использоваться умолчание (gnu++98 для С++)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 23 2009, 12:03
Сообщение #63


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(ReAl @ Jun 23 2009, 14:44) *
Самая правильная оптимизация для AVR
Вот за всякие дополнительные ручки по поводу лимита размера для inline и тому подобное - да, не дёргаю. И так не плохо.
Не думаю, что -O2 должна сильно поменять ситуацию.


Виноват, буковку "s" не заметил.
Я сегодня совсем сплю sad.gif

Кстати, посмотрел на описание оптимизации (перевод книги по GCC), там, вроде бы, часть флагов компилятора для разных режимов оптимизации смешивается...
Допустим, -Os включает -O3 и добавляет свои флаги...
-O3 включает -O2 и добавляет свои флаги...
-O2 включает -O и добавляет свои флаги...
А -O1 и -O вообще одно и то же...
Т. е., получается, что совместно использовать, например -O2 и -Os смысла никакого нет, т. к., -Os включает -O2 и добавляет свои флаги?
Кстати, опции -Oi фактически являются "обёртками", которые указывают на включение других дополнительных опций, как я понял?

Цитата
Там оно вроде бы закомментировано, так что будет использоваться умолчание (gnu++98 для С++)


Ага, этого я тоже не заметил... wassat.gif


Ещё вопросы...
ISR вызывается в контексте того процесса, который выполнялся при возникновении прерывания?
Как я понимаю, оптимальное содержимое ISR - инструкция перевода какого-либо эвента в сигнальное состояние?
А если в ISR модифицируются глобальные объекты, которые модифицируются так же в одном из процессов (или в нескольких), то необходимо использовать средства синхронизации для доступа к этим объектам (критические секции, семафоры)?
Причём, внутри ISR прерывания запрещены всегда и получается, что критические секции в ISR использовать бессмысленно, а семафоры вообще противопоказано... и средства синхронизации нужно использовать вне ISR в процессах, работающих с нашим глобальным объектом?
Помогите разобраться, пожалуйста, а то в голове каша smile.gif


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 23 2009, 19:16
Сообщение #64


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Откомпилировал в WinAVR 2007 - не работает.
Откомпилировал в WinAVR 20090313 - не работает.
То, что Вы прислали - тоже не работает! sad.gif

Может, конечно, Proteus глючит... нету сейчас железки под руками проверить...
Странно.
Займусь сверкой ключей...

А Вы в выложенной мною программе ничего не меняли?
В протеусе я вижу на PC1 сигнал со скважностью отличной от двух... очень отличной.
А на PC2 - вообще нуль...
А Вы когда смотрели осциллографом видели на обоих выводах какие сигналы? smile.gif


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 23 2009, 20:21
Сообщение #65


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Огромная просьба, если Вас не затруднит, то проверьте, пожалуйста, на своём макете работу той же программы, откомпилированной у меня (файл Prob.elf.hex). Так мы и моё компилирование проверим и протеус...

ATmega168.
8000000 MHz.
WinAVR20090313.

Сообщение отредактировал n_bogoyavlensky - Jun 23 2009, 20:22
Прикрепленные файлы
Прикрепленный файл  Prob2.zip ( 7.92 килобайт ) Кол-во скачиваний: 24
 


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 24 2009, 16:43
Сообщение #66


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(n_bogoyavlensky @ Jun 23 2009, 22:16) *
То, что Вы прислали - тоже не работает! sad.gif
Ну не знаю...
Цитата(n_bogoyavlensky @ Jun 23 2009, 22:16) *
А Вы в выложенной мною программе ничего не меняли?
Я же прицепил полный проект, который я собирал.
Не менял ничего, только приложил рядом сам scmRTOS и свои make-файлы
Цитата(n_bogoyavlensky @ Jun 23 2009, 22:16) *
А Вы когда смотрели осциллографом видели на обоих выводах какие сигналы? smile.gif
Меандры около 20мс и 60мс длительности уровня. 8MHz int RC в качестве тактирования. На время прошивки очередного варианта они пропадали :-)

Цитата(n_bogoyavlensky @ Jun 23 2009, 23:21) *
Огромная просьба, если Вас не затруднит, то проверьте, пожалуйста, на своём макете работу той же программы, откомпилированной у меня (файл Prob.elf.hex).
Ой, а это нескоро. С выходных до следующих выходных я уезжаю, а до этого не до того.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 24 2009, 16:54
Сообщение #67


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(ReAl @ Jun 24 2009, 20:43) *
Ой, а это нескоро. С выходных до следующих выходных я уезжаю, а до этого не до того.


Спасибо Вам большое за помощь! smile.gif
Нашёл железку. В четверг обязательно на ней сам проверю.
Скорее всего это глюки протеуса.
О результатах напишу...


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 25 2009, 07:06
Сообщение #68


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Проверил в железе.
ATmega48P, 20 МГц, оба способа передачи управления.
Работает замечательно.

Обидно, что Proteus меня подвёл... sad.gif
Побегу жаловаться smile.gif

ReAL, это опции линкера, как я понял (из вашего мейка)?

Цитата
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -Wl,--relax


А зачем -Wl два раза указан?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 25 2009, 07:22
Сообщение #69


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(n_bogoyavlensky @ Jun 25 2009, 10:06) *
ReAL, это опции линкера, как я понял (из вашего мейка)?
Это опции, которые gcc передаст линкеру (ld).
Цитата(n_bogoyavlensky @ Jun 25 2009, 10:06) *
А зачем -Wl два раза указан?
Об этом можно прочитать в документации на gcc. -Wl "действует" до ближайшего пробела.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 25 2009, 07:25
Сообщение #70


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



По поводу нашего давнего разговора в этой ветке о сокращении размера кода при компиляции...
Разобрался...
Для линкера надо было писать
-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref,--gc-sections,--relax

Я писал:
-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref
--gc-sections
--relax


Поэтому и не работало...

Цитата(Сергей Борщ @ Jun 25 2009, 11:22) *
Это опции, которые gcc передаст линкеру (ld).


Это понятно.
Я имею ввиду зачем две строчки с -Wl, если можно обойтись одной...

Сообщение отредактировал n_bogoyavlensky - Jun 25 2009, 07:23


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
sevstels
сообщение Oct 4 2009, 07:40
Сообщение #71


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Хотел попробовать запустить примеры для BF533.
К сожалению проект скомилировать не удаётся, ошибка такого плана:
".\Src\main.cpp", line 112: cc0167: error: argument of type
"void (*)(int, int, int)" is incompatible with parameter of type
"ex_handler_fn"
register_handler_ex(ik_timer, OS::SystemTimer_ISR, 1);
^

".\Src\main.cpp", line 113: cc0167: error: argument of type
"void (*)(int, int, int) C" is incompatible with parameter of type
"ex_handler_fn"
register_handler_ex(ik_ivg14, ContextSwitcher_ISR, 1);
^

2 errors detected in the compilation of ".\Src\main.cpp".
cc3089: fatal error: Compilation failed


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 4 2009, 09:40
Сообщение #72


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(n_bogoyavlensky @ Jun 25 2009, 10:25) *
Я имею ввиду зачем две строчки с -Wl, если можно обойтись одной...
Чтобы можно было закомментировать каждый ключ отдельно :-)


sevstels, я в режиме тормоза на старое ответил, по BF, увы, ничем помочь не могу


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
sevstels
сообщение Oct 4 2009, 13:19
Сообщение #73


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



уже решил заменой файлов из snapshot
мне только одно не понятно, почему-бы сразу не выкладывать корректную версию для скачивания
или надо чтоб народ для начала немного помучился?


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 5 2009, 08:16
Сообщение #74


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(sevstels @ Oct 4 2009, 20:19) *
уже решил заменой файлов из snapshot
мне только одно не понятно, почему-бы сразу не выкладывать корректную версию для скачивания
или надо чтоб народ для начала немного помучился?

Дело в том, что в релизе лежит версия для VDSP 4.5 (и более старых), там прототип обработчика прерывания описывался с тремя аргументами типа int. Зачем так было сделано, не знаю. В версии VDSP 5.0 они, видимо, и сами это поняли, и убрали эти инты из прототипа. В соответствии с этим были внесены изменения, которые оперативно отразились в репе и в снапах. Но поскольку релиз еще не выпускался, то в архивах лежит версия для VDSP 4.5.

Видимо, надо придумать какую-то простую схему, указывающую для какой версии тулчейна предназначена та или иная версия порта. Кстати, раньше название и версия используемого тулчейна были прямо забиты в пути порта (например, директория порта прямо так и называлась /BF533/VDSP4.0, но это оказалось неудобным - каждый раз переименовывать директории в путях. Поэтому перешли к общему названию (BF533/VDSP). Самое простое писать в сопроводиловке, какой версии тулчейна соответствует порт.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
sevstels
сообщение Oct 5 2009, 13:41
Сообщение #75


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Это конечно удивительно, автор работает ещё 4.0 версией VDSP!
Надо иметь железные нервы... был в шоке.
Кстати потестил на BF561 (600/150) - всё аж летает smile.gif

При компиляции есть предупреждение:
".\scmRTOS\BF533\OS_Target_cpp.cpp", line 61 (col. 5): cc1746: {D} warning:
Externally defined variable Kernel, possibly used in constructor
before it has been constructed


Дык что тут думать? Проще не бывает.

scmRTOS BF533 vdsp 4.0
scmRTOS BF533 vdsp 4.5
scmRTOS BF533 vdsp 5.0

Или на php простенький скрипт, по какой ссылке кликнули, сервер соответствующие файлы в архив и закатал.

-

Сообщение отредактировал sevstels - Oct 5 2009, 14:14


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 09:51
Рейтинг@Mail.ru


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