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

 
 
10 страниц V  « < 4 5 6 7 8 > »   
Reply to this topicStart new topic
dxp
сообщение Oct 6 2009, 02:56
Сообщение #76


Adept
******

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



Цитата(sevstels @ Oct 5 2009, 20:41) *
Это конечно удивительно, автор работает ещё 4.0 версией VDSP!
Надо иметь железные нервы... был в шоке.

Вы на дату выхода релиза 3.05 посмотрите. На тот момент стабильной была версия 4.5, на ней все и тестилось. Поскольку совместимость между 4.0 и 4.5 была, то имя директории и не переименовывалось. В настоящее время автор работает на версии 5.0, не сомневайтесь - иначе откуда бы в репе и снапе взялась соответствующие VDSP 5.0 версии файлов.

Цитата(sevstels @ Oct 5 2009, 20:41) *
Кстати потестил на BF561 (600/150) - всё аж летает smile.gif

Это радует. smile.gif

Цитата(sevstels @ Oct 5 2009, 20:41) *
При компиляции есть предупреждение:
".\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

Есть такая буква. Формально компилятор прав, хотя по факту ничего опасного там нет, все в порядке. Надо, конечно, пофиксить. Пока еще не решено, как именно сделать. Самое простое - объявить таблицу указателей процессов как статический член класса. В первой версии, кстати, так и было.

Цитата(sevstels @ Oct 5 2009, 20:41) *
Дык что тут думать? Проще не бывает.

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

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

-

Я не знаток веб технологий. Но есть кое-какие ограничения. Например, по правилам sourceforge.net нельзя на сайте хранить файлы для закачки. Все, что подлежит скачиванию, должно быть размещено на download серверах. А там все по релизам.


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


Знающий
****

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



Уважаемый dxp, подскажите плиз, где "подкрутить".
Перенёс папку отлаженого scmRTOC из одноядерного варианта BF561 в основной проект в раздел CoreA и подключил. Rtos будет работать на A. Всё библитеки A, B собрались нормально без ошибок. Линкер при сборке главного проекта пишет:

----------------Configuration: sml3 - Debug----------------
Project is up to date.
----------------Configuration: sml2 - Debug----------------
Project is up to date.
----------------Configuration: coreB - Debug----------------
Creating library...
Build completed successfully.
----------------Configuration: coreA - Debug----------------
Creating library...
Build completed successfully.

----------------Configuration: MAIN_BF561 - Debug----------------
Linking...

[Error li1021] The following symbols referenced in processor 'p0' could not be resolved:
'ContextSwitcher_ISR [_ContextSwitcher_ISR]' referenced from 'corea.dlb[main_core_a.doj]'
'OS_Start [_OS_Start]' referenced from 'corea.dlb[main_core_a.doj]'

Linker finished with 1 error
cc3089: fatal error: Link failed

ADI Help проблему разрешить не помогает.
Файлы вроде все в пути добавлены.
Символы функций - глобальные.
Секцию под код указал .. не пойму что линкер хочет.

-


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 6 2009, 07:27
Сообщение #78


Adept
******

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



Цитата(sevstels @ Oct 6 2009, 10:45) *
----------------Configuration: MAIN_BF561 - Debug----------------
Linking...

[Error li1021] The following symbols referenced in processor 'p0' could not be resolved:
'ContextSwitcher_ISR [_ContextSwitcher_ISR]' referenced from 'corea.dlb[main_core_a.doj]'
'OS_Start [_OS_Start]' referenced from 'corea.dlb[main_core_a.doj]'

Linker finished with 1 error
cc3089: fatal error: Link failed

Я не работал с двухядерником, нюансов, связанных с ним, не знаю. Но по сообщению линкера похоже, что в объектники не попали потроха из ассемблерного файла "OS_Target_asm.sbf" - обе функции, которые не найдены, описаны в этом файле. Если собираете оболочкой, то проверьте, транслируется ли этот файл. Оболочка, помнится, не признавала для асмовых файлов никаких расширений, кроме .s, .asm и .dsp. Поменяйте расширение, попробуйте.


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


Знающий
****

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



Расширение давно поменял, файл OS_Target_asm.asm
Проект отлично собирался и работал в железке, пока был для одного ядра...

-


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 6 2009, 09:18
Сообщение #80


Adept
******

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



Цитата(sevstels @ Oct 6 2009, 14:43) *
Расширение давно поменял, файл OS_Target_asm.asm
Проект отлично собирался и работал в железке, пока был для одного ядра...

Тем не менее, проблема именно из-за асмового файла. У вас есть еще другие ассемблерные файлы в проекте? Проверьте, транслируется ли сам файл - от него должны оставаться следы - OS_Target_asm.doj. Включается ли этот объектный файл в процесс сборки (линковки)? Если объектные файлы заключаются в библиотеку - я понял, что на двухядернике все объектные модули для одного ядра собираются в библиотеку, - посмотрите ее содержимое (утилитой elfar с ключом -р), содержится ли этот файл в ней. Где-то он потерялся.


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


Знающий
****

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



Да, asm есть для MPEG-4 енкодера.
Они тоже выдают аналогичную ошибку при подключении заголовка <scmRTOS>.
Завтра буду копать по этому плану, сегодня всё. Спасибо за подсказку. smile.gif


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
sevstels
сообщение Oct 7 2009, 02:19
Сообщение #82


Знающий
****

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



Накопал...
Не обратил внимание на warning по поводу отсутствия хедера для asm файла.
Суппорт VDSP ответил, что это не влияет на результат сборки. Но реально - проект не работал.
Оказалось, что пути к хедерам для asm файлов нужно прописывать отдельно от c/cpp, не знал этого...
Вылечилось добавлением путей в Project options\Assemble\Additional include\


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
meister
сообщение Nov 7 2009, 11:24
Сообщение #83


Местный
***

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



Безопасно ли использовать setjmp и longjump в scmRTOS для ARM7TDMI (LPC2xxx)? Мне "исключение" бросить надо. Спасибо.
Go to the top of the page
 
+Quote Post
vzuravlo
сообщение Jan 23 2010, 21:31
Сообщение #84





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



Добрый день.
Я новичок в программировании, не судите строго.
у меня есть задача, которая одновременно должна ждать три события.
Одно от системного твика и возможны 2 сообщения от разных источников.
Получается, что я не могу использовать ни Sleep(N) ни Message.wait()
Ведь по осутствию первого же из этих событий задача передаст управление операционке и не проверит остальные.
Или я где-то путаю?
Go to the top of the page
 
+Quote Post
dxp
сообщение Jan 24 2010, 10:48
Сообщение #85


Adept
******

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



Цитата(vzuravlo @ Jan 24 2010, 03:31) *
у меня есть задача, которая одновременно должна ждать три события.
Одно от системного твика и возможны 2 сообщения от разных источников.
Получается, что я не могу использовать ни Sleep(N) ни Message.wait()
Ведь по осутствию первого же из этих событий задача передаст управление операционке и не проверит остальные.
Или я где-то путаю?

Вы можете использовать message<...>::wait(timeout). Задаете таймаут ожидания и все. Если пришло какое-то событие раньше таймаута, то функция вернет true, и обрабатываете событие, если события не пришли до истечения таймаута, то получаете результат функции false, и обрабатываете этот вариант. Процесс будет в любом случае "разбужен" либо по приходу события, либо по таймауту.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 24 2010, 11:11
Сообщение #86


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

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



Цитата(dxp @ Jan 24 2010, 12:48) *
Вы можете использовать message<...>::wait(timeout). Задаете таймаут ожидания и все. Если пришло какое-то событие раньше таймаута, то функция вернет true, и обрабатываете событие, если события не пришли до истечения таймаута, то получаете результат функции false, и обрабатываете этот вариант.
Дополнение:
Если "таймерная" сетка нужна более-менее фикисрованная (пусть с дрожанием, но без накопления ошибки), то её вести в самом процессе через GetTickCount(), беря при старте процесса текущее значение и добавляя к нему период. После каждого просыпания (точнее, перед каждым вызовом wait() ) смотреть опять по GetTickCount() - сколько осталось времени и этот остаток передавать в message<...>::wait(timeout), по достижении снова добавлять период к локальноq переменной.
Её при этом, кстати, не обязательно делать DWORD, если просыпаться нужно каждые, к примеру, 10 тиков, то локальная копия системного тика вполне может быть 1-байтовой.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
kurtis
сообщение Feb 26 2010, 15:57
Сообщение #87


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Возник небольшой вопрос при использовании scmRTOS.

Как в файле scmRTOS_CONFIG.h задавать общее количество процессов через макрос (и можно ли вообще)? Т.е. как-то так
Код
#include "Priority.h"

#define  scmRTOS_PROCESS_COUNT              TOTAL_PROCESS_NUMBER
, где TOTAL_PROCESS_NUMBER задается в файле Priority.h который выглядит следующим образом
Код
#ifndef _BSP_MRTP4AN_PRIORITY_H
#define _BSP_MRTP4AN_PRIORITY_H

#include <scmRTOS.h>

#define ANMEAS_PRI  (OS::pr0)
#define UART0_PRI   (OS::pr1)
#define UART1_PRI   (OS::pr2)
#define TECHNO_PRI  (OS::pr3)
#define PERIPH_PRI  (OS::pr4)

#define TOTAL_PROCESS_NUMBER (5)

#endif /* _BSP_MRTP4AN_PRIORITY_H */


При попытке компилировать, вылазят такие ошибки
CODE
In file included from ../../bsp/scmRTOS/AVR/OS_Target.h:121,
from ../../bsp/scmRTOS/Common/scmRTOS.h:52,
from ../../bsp/MRTP4an/Priority.h:19,
from ./src/scmRTOS_CONFIG.h:56,
from ../../bsp/scmRTOS/AVR/OS_Target_asm.S:51:
../../bsp/scmRTOS/Common/scmRTOS_defs.h:73:2: error: #error "Error: Config macro scmRTOS_SYSTIMER_NEST_INTS_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:82:2: error: #error "Error: Config macro scmRTOS_SYSTEM_TICKS_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:92:2: error: #error "Error: Config macro scmRTOS_SYSTIMER_HOOK_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:101:2: error: #error "Error: Config macro scmRTOS_IDLE_HOOK_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:110:2: error: #error "Error: Config macro scmRTOS_CONTEXT_SWITCH_SCHEME must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:120:2: error: #error "Error: Config macro scmRTOS_PRIORITY_ORDER must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:239:14: error: #error "Invalid Process Count specification! Must be from 1 to 31."
In file included from ../../bsp/scmRTOS/AVR/OS_Target.h:121,
from ../../bsp/scmRTOS/Common/scmRTOS.h:52,
from ../../bsp/MRTP4an/Priority.h:19,
from ./src/scmRTOS_CONFIG.h:56,
from ../../bsp/scmRTOS/AVR/OS_Target_asm.S:51:
../../bsp/scmRTOS/Common/scmRTOS_defs.h:73:2: error: #error "Error: Config macro scmRTOS_SYSTIMER_NEST_INTS_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:82:2: error: #error "Error: Config macro scmRTOS_SYSTEM_TICKS_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:92:2: error: #error "Error: Config macro scmRTOS_SYSTIMER_HOOK_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:101:2: error: #error "Error: Config macro scmRTOS_IDLE_HOOK_ENABLE must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:110:2: error: #error "Error: Config macro scmRTOS_CONTEXT_SWITCH_SCHEME must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:120:2: error: #error "Error: Config macro scmRTOS_PRIORITY_ORDER must be defined!"
../../bsp/scmRTOS/Common/scmRTOS_defs.h:239:14: error: #error "Invalid Process Count specification! Must be from 1 to 31."
make: *** [obj/OS_Target_asm.o] Ошибка 1

Без моих модификаций проект собирается нормально.
Используется avr-gcc 4.3.3
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 26 2010, 16:50
Сообщение #88


Гуру
******

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



перенесите определение #define TOTAL_PROCESS_NUMBER (5) до включения <scmRTOS.h>:
Код
#ifndef _BSP_MRTP4AN_PRIORITY_H
#define _BSP_MRTP4AN_PRIORITY_H

#define TOTAL_PROCESS_NUMBER (5)

#define ANMEAS_PRI  (OS::pr0)
#define UART0_PRI   (OS::pr1)
#define UART1_PRI   (OS::pr2)
#define TECHNO_PRI  (OS::pr3)
#define PERIPH_PRI  (OS::pr4)

#include <scmRTOS.h>

#endif /* _BSP_MRTP4AN_PRIORITY_H */


--------------------
На любой вопрос даю любой ответ
"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
kurtis
сообщение Feb 26 2010, 18:43
Сообщение #89


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



не помогло, те самые ошибки
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 26 2010, 19:00
Сообщение #90


Гуру
******

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



Цитата(kurtis @ Feb 26 2010, 20:43) *
не помогло, те самые ошибки
Я попробовал скомпилить свой проект, вставив
Код
#define TOTAL_PROCESS_NUMBER (5)
#define  scmRTOS_PROCESS_COUNT              TOTAL_PROCESS_NUMBER
в scmRTOS_CONFIG.h. Все скомпилилось. А, понял - у вас нарушен порядок включения заголовочных файлов. Вам нужно убрать #include <scmRTOS.h> из Priority.h
Priority.h сам включается в scmRTOS.h через scmRTOS_CONFIG.h


--------------------
На любой вопрос даю любой ответ
"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

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

 


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


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