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

 
 
> вытясняющая многозадачность, чистый С без ОС
Zelepuk
сообщение Nov 29 2011, 08:56
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Хочется найти хорошо расписанный пример написания программы с вытясняющим планировщиком без применения какой-либо ОС на чистом С. Нашёл отличное описание кооперативного планировщика, но хочется разобраться с вытясняющим.
Подскажите, кто знает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Warlockwolf
сообщение Nov 30 2011, 17:47
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 17-06-08
Пользователь №: 38 358



хидер

Код
typedef  void (*pFunction)(void);
#define DefaultAddress 0x00000000UL


соурсе

Код
vu8         DNA_head=0;
vu8         DNA_teil=0;
pFunction   DNAQeue[0x100];


void Ribosoma()
{  pFunction  Application;
   pFunction*  DNAQeue_teil=&DNAQeue[0x0];
  while(1){  
            if((*DNAQeue_teil)!=DefaultAddress){Application=*DNAQeue_teil;  *DNAQeue_teil=DefaultAddress; DNAQeue_teil=&DNAQeue[++DNA_teil]; Application();};
          };
    
}

void DNA_Next() //spec pustishka
{
  return;
}

void InDNA(pFunction Thread)
{
    DNAQeue[DNA_head++]= Thread;
    DNAQeue[DNA_head++]=(pFunction)DNA_Next;      
}

void InDNA_rapid(pFunction Thread)
{ u16 vtem;
  u16 DNA_i;
  for(DNA_i=0;DNA_i!=16;DNA_i++){vtem=(DNA_teil+DNA_i);
                                 if(DNAQeue[vtem]==(pFunction)DNA_Next){ DNAQeue[vtem]=Thread;goto meett;};
                                 if(DNAQeue[vtem]==DefaultAddress){ InDNA(Thread);goto meett;}
                                };  
meett:
{};
};



Коментарии я почти не пишу. так что разбирайтесь как есть.
InDNA()- в очередь в конец.
InDNA_rapid()-в очередь в пустое место, если 16 ближайших заняты, тогда в конец.

Код
int main(void)
{
  InDNA(&initARM); //-- первая задача
  Ribosoma();  
}


Сообщение отредактировал Warlockwolf - Nov 30 2011, 17:48
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   вытясняющая многозадачность   Nov 29 2011, 08:56
- - dxp   Цитата(Zelepuk @ Nov 29 2011, 15:56) Хоче...   Nov 29 2011, 12:48
|- - Zelepuk   Цитата(dxp @ Nov 29 2011, 16:48) А чем, п...   Nov 29 2011, 13:10
- - MrYuran   Автомат на прерываниях с разрешением вложенности.   Nov 29 2011, 13:47
|- - Zelepuk   Цитата(MrYuran @ Nov 29 2011, 17:47) Авто...   Nov 29 2011, 13:55
|- - MrYuran   Цитата(Zelepuk @ Nov 29 2011, 17:55) спас...   Nov 30 2011, 04:42
|- - Dog Pawlowa   Цитата(MrYuran @ Nov 30 2011, 08:42) Преи...   Nov 30 2011, 05:25
|- - Zelepuk   Цитата(MrYuran @ Nov 30 2011, 07:42) Кажд...   Nov 30 2011, 08:25
|- - MrYuran   Цитата(Zelepuk @ Nov 30 2011, 12:25) не п...   Nov 30 2011, 08:52
||- - Zelepuk   Цитата(MrYuran @ Nov 30 2011, 11:52) 1. з...   Nov 30 2011, 09:01
|- - Warlockwolf   Цитата(Zelepuk @ Nov 30 2011, 12:25) похо...   Nov 30 2011, 10:02
|- - Zelepuk   Цитата(Warlockwolf @ Nov 30 2011, 14:02) ...   Nov 30 2011, 13:12
- - AHTOXA   Цитата(Zelepuk @ Nov 29 2011, 14:56) Хоче...   Nov 29 2011, 14:22
- - DpInRock   У меня работает сферический конь в вакууме. Все, ...   Nov 29 2011, 15:26
|- - Сергей Борщ   QUOTE (DpInRock @ Nov 29 2011, 18:26) У м...   Nov 29 2011, 20:23
|- - _Pasha   Цитата(DpInRock @ Nov 29 2011, 19:26) Но ...   Nov 29 2011, 22:18
- - Zelepuk   А вообще, когда становится понятно, что нужно горо...   Nov 29 2011, 17:40
|- - kolobok0   Цитата(Zelepuk @ Nov 29 2011, 21:40) А во...   Nov 30 2011, 07:53
- - AHTOXA   Цитата(DpInRock @ Nov 29 2011, 21:26) У м...   Nov 29 2011, 17:55
|- - Zelepuk   Цитата(AHTOXA @ Nov 29 2011, 21:55) Дык, ...   Nov 29 2011, 17:59
|- - toweroff   Цитата(Zelepuk @ Nov 29 2011, 21:59) а ес...   Nov 29 2011, 18:18
|- - AHTOXA   Цитата(Zelepuk @ Nov 29 2011, 23:59) а ес...   Nov 29 2011, 18:43
- - DpInRock   Вообще-то в большинстве случае проц в единственном...   Nov 29 2011, 18:34
- - sigmaN   Посмотрите AVR учебный курс на http://easyelectron...   Nov 29 2011, 20:15
- - DpInRock   ЦитатаИ где тут вытесняющая многозадачность? Перек...   Nov 30 2011, 02:23
- - Zelepuk   система должна принимать данные от АЦП, обробатыва...   Nov 30 2011, 04:27
- - DpInRock   Суперлуп организовывать труднее. Так чтоб он работ...   Nov 30 2011, 09:59
- - Rst7   QUOTE А как же setjmp/longjmp ? Катит только для ...   Nov 30 2011, 10:18
- - DpInRock   Да вы сначала реализуйте просто по очереди. Тут вс...   Nov 30 2011, 15:36
|- - Zelepuk   Цитата(Warlockwolf @ Nov 30 2011, 21:47) ...   Nov 30 2011, 19:23
- - Warlockwolf   приоритет задается постановкой в очередь. либо в к...   Nov 30 2011, 20:08
|- - Zelepuk   Цитата(Warlockwolf @ Dec 1 2011, 00:08) п...   Dec 1 2011, 05:38
- - Warlockwolf   Я ж писал, - реал тайм -при возникновении прерыван...   Dec 1 2011, 08:03
- - Zelepuk   понятно, вобщем кольцевая очередь низкоприоритетны...   Dec 1 2011, 08:26
- - _Ivana   Цитата(kolobok0 @ Nov 30 2011, 10:53) буд...   Jan 10 2012, 17:56
|- - Zelepuk   Цитата(_Ivana @ Jan 10 2012, 20:56) Спаси...   Jan 11 2012, 05:03
||- - SyncLair   Цитата(Zelepuk @ Jan 11 2012, 09:03) а ка...   Jan 11 2012, 20:10
||- - Zelepuk   Цитата(SyncLair @ Jan 11 2012, 23:10) А к...   Jan 12 2012, 05:15
|- - kolobok0   Цитата(_Ivana @ Jan 10 2012, 21:56) ... б...   Jan 11 2012, 09:08
- - SyncLair   Цитата(Zelepuk @ Nov 29 2011, 12:56) Хоче...   Jan 10 2012, 18:57
|- - SpyBot   Цитата(SyncLair @ Jan 10 2012, 22:57) В-т...   Jan 12 2012, 06:25
|- - demiurg_spb   Цитата(SpyBot @ Jan 12 2012, 09:25) Сорри...   Jan 12 2012, 06:49
|- - SpyBot   Цитата(demiurg_spb @ Jan 12 2012, 10:49) ...   Jan 12 2012, 07:10
|- - demiurg_spb   Цитата(SpyBot @ Jan 12 2012, 10:10) Напри...   Jan 12 2012, 07:39
- - _Pasha   Да простит меня MrYuran, который забадался уже чит...   Jan 11 2012, 10:15


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

 


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


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