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

 
 
> Выбор РТ ОС под omap, Посоветуйте
gormih
сообщение Oct 10 2012, 06:36
Сообщение #1


nofb
***

Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218



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


--------------------
Это не то что вы подумали ...

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mahagam
сообщение Oct 15 2012, 14:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



ничего там не надо. для всех этих таск-шедулеров единственный ресурс который нужен - таймер.
ARM7/9 - насколько я помню набор инструкций совпадает. у меня основное время заняла адаптация ассемблерного файла собственно переключателя контекста под особенности компилятора/ассемблера CCS. собственно код не правился вообще
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 15 2012, 15:11
Сообщение #3


Гуру
******

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



Цитата(Mahagam @ Oct 15 2012, 18:38) *
ничего там не надо. для всех этих таск-шедулеров единственный ресурс который нужен - таймер.

Еще контроллер прерываний настроить. Собственно, для 1808 это будет основной частью работы.
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Oct 17 2012, 08:08
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



QUOTE (aaarrr @ Oct 15 2012, 18:11) *
Еще контроллер прерываний настроить. Собственно, для 1808 это будет основной частью работы.
CODE
int ctl_set_isr(unsigned int number, unsigned int priority, CTL_ISR_FN_t isr, CTL_ISR_FN_t *oldisr)
{
unsigned long *cmr;
unsigned long cmr_data, mask;

if (number > sizeof(ctl_isr_table)/sizeof(CTL_ISR_FN_t)) return 0;
if (oldisr) *oldisr = ctl_isr_table[number];
ctl_isr_table[number] = isr;

cmr = (unsigned long *)&AINTC->CMR0;
cmr += number/4;
cmr_data = *cmr;
mask = 0xFF<<((number%4)<<3);
cmr_data &= ~mask;
cmr_data |= priority<<((number%4)<<3);
*cmr = cmr_data;


// Enable Interrupts
CSL_FINS(AINTC->EISR, AINTC_EISR_INDEX, number);
return 1;
}



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

Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 17 2012, 12:09
Сообщение #5


Гуру
******

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



Цитата(Mahagam @ Oct 17 2012, 12:08) *
как-то так. никакой работы.

Никакой работы - это настройка таймера. А здесь мануал почитать все же придется.

Цитата(Mahagam @ Oct 17 2012, 12:08) *
ну разве что таблицу векторов надо в шустром месте разместить, да обработчик прерывания должен знать как успокоить контроллер и как выковырять правильный вектор из таблицы

А зачем обработчику что-то выковыривать? Векторизация решается двумя командами ldr pc, [pc, #offs] - одной на векторе 0x18, и второй на векторе AINTC.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 19:38
Рейтинг@Mail.ru


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