Отговори на тема  [ 32 мнения ]  Отиди на страница 1, 2, 3  Следваща
таск мениджър или проста ОС за кортекс м3 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение таск мениджър или проста ОС за кортекс м3
Нещата са опрели до някаква форма на таск мениджър ил икакто писах - семпла ос от типа на freeRTOS. Поради някакви съображения ръководството се запъва за freeRTOS-а и ме напъват да си напиша собствен таск мениджър, което вероятно в крайна сметка ще се случи. Но все пак, колеги, някой би ли могъл да ми препоръча, ако не говото решение, то поне от къде да се зачета за архитектурата на таск мениджърите, че нещо го дъвча с гуглето, а то само глупости плюе ?!
Изискванията малко по-конкретно са: да мога да поддържам до около 32 таска, приоритети между тях, споделена периферия - ако някой я ползва друг да не може да пипа, общи глобални променливи (разни масиви) без да стават мазаници - тасковете в общи линии трябва да се изчакват един друг и да не си пипат перифериите и променливите, с които операра "колегата". Това е което ме интересува, като ако някой таск ми е по-жизнено важен да мога да то отработя овреме - т.е. нещо като приоритети, пък ако може и да се прекъсват един друг при възникване на събитие, което да извика по-високо приоритетния, вместо да чака първи на опашката - още по-добре. Като цяло не ужасно тежка задача, но знам ли до къде ще се стигне на края, а и предполагам, че докато я докарам до работещо решение, ще ми отнеме много повече време отколкото да ползвам чуждо и да му търся бъговете. Та бихте ли препоръчали нещо по темата?

Едит: не ми трябват никакви стекове, нито за tcp/ip, usb, flash cards и т.н. - от просто по-просто :)
И да се дъвче от GCC ...


Сря Мар 23, 2011 12:42 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Сега не ти трябва това или онова, ама като ти потрябва ще си скубеш косите ;-)

Бих ти препоръчал cocox или nuttx. Кокоса признавам си не съм се задълбавал лично, препоръчвам повече на база чужди отзиви. Но nuttx съм го разглеждал и смея да твърдя, че е добър.

Но ако въпреки всичко си решил да си чупиш главата сам, може да погледнеш и моето решение (кръстил съм го tmos ).


Сря Мар 23, 2011 12:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ако ти трябва нещо наистина толкова просто - просто открадни сорсовете на FreeRTOS. Тя е точно това - прост таск сутчер с елементарните инструменти за синхронизация - семафор, мутекс и опашка. Толкоз. Сорсовете и са 3-4 файла, не е трудна за "взаимстване", щом толкоз държат да имате собствена ваша. Плюваш малко, размазваш с пръст да не личи оригинала и си готов :)

Много по лесно ще е от това да откриваш топлата вода изначало.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Сря Мар 23, 2011 1:58 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
Цецо, подозирам, че си прав, но основната идея е да не се полвало нещо с толкова много възможности-тежест-бъгове, а да се направи нещо, което да покрие минималните изисквания на заданието и толкоз. Нещо като топлата вода. Мокро, да мие и да не ти е гадно. Ама нали ...

miro_atc, ще да ги скубя косите, натам отива работата ... cocox го рещнах по-рано, nuttx също го гледах - прекален натруфени са, почти като freertos-a, а то началството това не го харесва. Та... така! :(


Сря Мар 23, 2011 2:16 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Не си губи времето с глупости, ами почни с някоя готова фрее ртос, ползвай от нея най-простите неща. Понатрупай малко опит с кортексите, па тогава тръгвай да си правиш своя. Едва ли ще изпиташ чак такива затруднения да убедиш работодателите си в това! ОС-а е за хора с дълбоки познания в съответната платформа! Това ти го напомням - не вярвам да не го знаеш! :)


Сря Мар 23, 2011 2:28 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Ако можеш да убедиш началството за nuttx ще е най-добре повярвай ми... Казвам ти го като човек, който се връща от там, накъдето ти си тръгнал ;-)

Фреертос не става, знам че Цецо мисли друго, ама съм сигурен че ще си промени мнението ако някой ден задълбае повече....

Разликата между фреертос и нутх-а е ОГРОМНА. И то не в размера, а в качеството. Нут-а можеш да си конфигурираш както искаш и за какъвто борд искаш. Може да слагаш GUI, стекове, маже да ги махаш както си искаш. Има документация, има организация на сорсовете.... има си всичко!
Ако искаш нут-а да ти е малък го конфигурираш само с базова функционалност и ще излезе по-малък и по-добър, отколкото ти би го направил....


Сря Мар 23, 2011 2:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 1:59 pm
Мнения: 3867
Местоположение: Габрово
Мнение 
А началството харесва ли бъгове, и изоставания от планираните срокове ... :D

Едва ли си струва да разработвате нещо такова, според мен вземете нещо готово и забравете. Което не ви трябва не го ползвайте.

За кортекс в момента има сума ти готови и безплатни неща, а като гледам, и вие не сте сигурни какво ви трябва - как го виждате да правите контрол на достъпа до ресурси / периферия без семафори, да комуникирате между таскове без мейлбокси и кюта? Накрая от цялото "не ни трябва" ще си го напишете, и ще си изхарчите времето да дебъгвате.

Ето едно сравнение:
http://www.yagarto.de/projects/rtoscomp/index.html



Оттам можеш да погледнеш това:
http://www.chibios.org/dokuwiki/doku.php?id=start

Изглежда бързо това нещо. Но нямам пряк сблъсък с него.

Универсалният вариант е FreeRTOS-а.


Сря Мар 23, 2011 2:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
gicho написа:

Универсалният вариант е FreeRTOS-а.


Не искам да го обръщам на някаква война като ПИК срещу всички останали, но забравете за фреертос. Не ми е приятно да плюя работата на колеги, но вече 3-4 години се занимавам с операционни системи и за мен е грехота след като има читави решения да се ползва нещо от сорта на Фреертос. Това е грешен коловоз, не тръгвайте по него!


Сря Мар 23, 2011 2:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ами странни хора сте. Вие не творите ли бъгове като пишете?
Готов съм да се басирам на много че ще натвориш поне 10 пъти повече бъгове отколкото има в готова OS като FreeRtos.
Бъговете излизат при продължително тестване най вече.

С FreeRtos-a няколко пъти съм си мислил ей го на,тоя път вече шибания FreeRtos омазва нещо и като дълбая дълбая пак предмониторното устройство се оказва бъгаво ;)
Просто при по разпространените OS всеки потребител се оказва и тестер и като намери бъг и го рапортува и го оправят. Като копаш сам тестовете не са толкова всеобхватни.

Друг въпрос е че ще имаш доста недомислици в първите версии. Като подкараш нещата и почнеш да си ги забелязваш ще почнеш да кърпиш кода. Ей тук в тази фаза ще си допълниш още по сериозно букетчето с явни и неявни бъгове. И кво ще се получи,вместо да изпишеш вежди ще избодеш очи. Че и маса време ще загубиш.

Ако заделиш половината от времето което ще похабиш за писане на собствена OS в разучаване в детайли,на ниво сорс,ще имаш много по изчистен от бъгове код отколкото при варианта сам да си пишеш OS.

И аз си имам собствена OS ама вероятно ще я изоставя,ще мине в графата обучение и развитие ;)


Сря Мар 23, 2011 3:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
miro_atc написа:
Фреертос не става, знам че Цецо мисли друго, ама съм сигурен че ще си промени мнението ако някой ден задълбае повече....


Оф, стига бе човек :) Дилемата я имам и преди ти да ми я натрапиш :)

Давай агитирай ме. Какво печеля с nuttx?

1. Posix интерфейс (никак не е малко).

то с това май чистите RTOS предимства се изчерпват.

2. USB - нещо не можах да се ориентирам какво предлагат като стек. Т.е. какви устройства могат да изимитирам (Mass, HID, COM)???
3. TCP/IP - в конкретния случай не ми трябва. Ама лошо няма.
4. GUI - ровил ли си го? Читав ли е?
и т.н....

Като цяло всичко допълнително извън класическия RTOS е в процес на разработка при нута и като цяло доста зле документирано.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Последна промяна Цецо на Сря Мар 23, 2011 3:23 pm, променена общо 1 път



Сря Мар 23, 2011 3:20 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
абе хора, ОС е малко силно казано, по-скоро имах предвид повече към таск мениджър. Ей, на и Rowley-то си имат собствен и подозирам, че ще ми е много лесно да го ползвам, но не е идейно да се ползва "нещо като" дадено от средата, прекалено обвързващо. И сигурно сте прави, че ще ми отиде повече време да пиша и дебъгвам отколкото да ползвам готово и да кърпя, знам ли... ще го помисля още малко, но почвам да се обърквам в приличното разнообразие от разни ххххххОС-та, всеки правил и струвал да се чудиш и маеш под кой камък какво ще излезе.


Сря Мар 23, 2011 3:22 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Аз затова ти казвам - вземи фрииртос - а и просто му "взаимствай" таскера. Или там каквото ти трябва. Препоръчвам ти него, защото просто е достатъчно прост, за да може човек да краде цели порции код без да мисли много :)

А това, че е толкова прост си има и предимства (според мен) и недостатъци (според Миро).

Незнам какъв ти е опита с Куртексите, ама писането на ОС не е тривиална работа. Най-малкото трябва да владееш конкретния процесор и асемблера му на доста прилично ниво. Т.е. да си изял програминг мануала от сайта на АРМ за конкретното ядро с кориците. Аз самия не съм стигал чак такива висини и затова се доверявам на други.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Сря Мар 23, 2011 3:25 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Ето как го правя аз:

Код:
void main(void)
{
Init_Hardware();

Init_Variables();

Init_TMR0();

Init_TMR5();

Init_RS232(br115200);

Init_Network_Protocol();


ADD_TASK_Enabled[ADD_TASK_1] = False;
ADD_TASK_Enabled[ADD_TASK_2] = False;
ADD_TASK_Enabled[ADD_TASK_3] = False;
ADD_TASK_Enabled[ADD_TASK_6] = False;

MAIN_TASK_Dispatcher = 0;
SOFT_USART_Init();
 
while (True)
   {   
     switch (MAIN_TASK_Dispatcher)
       {
         case TASK_0:
           {
             //MAIN_TASK_0
                 
             break;
           }
         case TASK_1:
           {
             //MAIN_TASK_1
             
             break;
           }
         case TASK_2:
           {
             //MAIN_TASK_2
             
             break;
           }
       }  //switch (MAIN_TASK_Dispatcher)
       
    if (ADD_TASK_Enabled[ADD_TASK_Dispatcher])       
       switch (ADD_TASK_Dispatcher)
         {
           case ADD_TASK_0:
             {
               
               
               break;
             }
           case ADD_TASK_1:
             {
               //ADD_TASK_1       
                         
               break;
             }
           case ADD_TASK_2:
             {
               
               break;
             }
           case ADD_TASK_3:
             {
               //ADD_TASK_3
               
               break;
             }
           case ADD_TASK_4:
             {
               Feed_Button_Handle();
               break;
             }
           case ADD_TASK_5:
             {
                                           
               break;
             }
           case ADD_TASK_6:
             {
               
               break;
             }
           case ADD_TASK_7:
             {
               
               break;
             }
         }  //switch (ADD_TASK_Dispatcher)
         
       ADD_TASK_Dispatcher++;
       
       if (ADD_TASK_Dispatcher >= 10)
         ADD_TASK_Dispatcher = 0;

   }
}


Сря Мар 23, 2011 4:21 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
@relsys, това си е проста стейт машина, която ги върти безкрайно, какво му е интересното? Ако имаш събитие отнасящо се до таск 2, докато отработваш таск 1 му ядеш главата с някой тайм-аут. Ако и трите ти таска споделят общи входно изходни точки (и недай Боже имат тайм-аути) му ядеш главата . Не е функционално по никакъв начин. Но пък е простичко :)


Сря Мар 23, 2011 4:51 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Цецо написа:
Давай агитирай ме. Какво печеля с nuttx?


Мога да те агитирам да ползваш моя ОС, даже се пробвах ако помниш... За nuttx няма какво да те агитирам, просто ти казвам, че той е по-добър от моя ОС. Аз си го признавам и без бой, а ти дали ще ми повярваш е все тая.

Това, което искам да кажа в случая е, че има огромна разлика между нещо дето цъка таскове и истинска операционна система. Фреертос няма нищо общо с операционните системи. Това е един проЗт кърнел. Моят продукт също не е баш истинска ОС. Имам някои общи неща с операционните системи, но нямам всичко необходимо, а част от това което имам пък е направено по недостатъчно стандартен начин. Докато nuttx имат всичко и с пълно право могат да си нарекат продукта "операционна система".

Една операционна система е преди всичко концепция. Концепция за това как да разделяш сложните проблеми на много, но прости задачи. Концепция за това как да накараш много задклавиатурни устройства да работят заедно и ефективно. От това следват много неща... трудно ми е накратко да изброя всички критерии на които трябва да отговаря един ОС.
Трябва да се сблъскаш, за да го разбереш каква е разликата между ОС и нещо дето се разпространява като ZIP файл. Няма концепция за драйвери, няма система за конфигуриране, няма нищо.
Не знам как да ти го кажа, но идеята на един ОС е да пести време и нерви. Това значи че като имаш примерно GUI и множество стекове и/или драйвери да можеш да подкараш за минути произволна комбинация от тях. А не да се чудиш като пуснеш GUI дали ще умре ethernet-a или няма.
В единия случай имаш нещо като "лего" т.е. набор от парченца като GUI, USB, Ethernet. Избираш си каквото ти трябва и си спокоен че каквото и да избереш парченцата ще паснат едно с друго. Нещо повече, ако ти трябва направиш ново парче, а колегата ти друго си знаете как трябва да стане. И ако следвате концепцията и вашите парченца ще се стиковат.
Ти ме питаш дали имал USB, TCP и GUI... Ами, не просто ги има, но са истински драйвери. Демек може да си конфигурираш един SPI на който да имаш дисплей, на същата шина да имаш дейта флаш. Върху флаша да подкараш файлова система, а файловата система да мапнеш към USB-то. Разликата с фреертос е просто огромна. Пак ти казвам, трябва да се поблъскаш малко и тогава ще разбереш за какво ти говоря...

Иначе тия сравнения дето ги дават колко време трябвало за task switch и колко байта бил кода са жив ташак. По това не можеш да съдиш за качеството на една операционна система изобщо!


Сря Мар 23, 2011 5:51 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 32 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни