Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

uCOS-II въпросче
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2338
Страница 1 от 2

Автор:  Nikola Kirov [ Сря Май 10, 2006 2:59 pm ]
Заглавие:  uCOS-II въпросче

Някой занимавал ли се е с uCOS-II?
Имам едно въпросче относно прекъсванията.
Значи работят си няколко задачи и в един момент по време на изпълнение на задачата настъпва прекъсване.
Влизам си в процедурата на прекъсването и трябва да си съхраня контекста. Ако го направя с PUSH директно къде ще си съхраня контекста в стека на съответния task които е прекъснат или някъде другаде?

Автор:  nickich [ Сря Май 10, 2006 3:25 pm ]
Заглавие: 

За това не се ли грижи операционната система ? :?: :roll:

Автор:  Nikola Kirov [ Сря Май 10, 2006 3:33 pm ]
Заглавие: 

Ами тя не може да знае че аз съм си пуснал прекъсване.
Пък може и да има начин операционната система да се грижи за това но не ми е станало ясно как става.

Автор:  Dimitar [ Сря Май 10, 2006 4:05 pm ]
Заглавие: 

Nikola Kirov написа:
Ами тя не може да знае че аз съм си пуснал прекъсване.

Aaaaa - тя е умна и всичко знае 8) :roll: :idea:

Автор:  Nikola Kirov [ Сря Май 10, 2006 4:34 pm ]
Заглавие: 

Е добре като знае.В кои стек ще си съхраня контекста при прекъсването тогава? :)

Автор:  nickich [ Сря Май 10, 2006 5:03 pm ]
Заглавие: 

... в стека на прекъснатия таск, обаче има някой особености. Тъй като викаш OSIntExit() от същото прекъсване, тя пушва ретърн адреса на ИСР-а в същия стек. Зависи и как забраняваш прекъсванията OS_ENTER_CRITICAL() също може да запази статуса на прекъсванията в същия стек. Затова трябва да използваш OSIntCtxSw(), за да свапне контекста в стека, така че указателя да сочи контекста на прекъснатия таск.

Автор:  ДедоБоре [ Сря Май 10, 2006 5:25 pm ]
Заглавие: 

и, мисля, че трябва да се забрани суичването на таскове по време на прекъсането
то зависи до голяма степен и от процесора - едно ще е на х86, друго е на AVR8
аз нямам опит с uCOS-II има ли го нейде на сорс?

Автор:  Nikola Kirov [ Сря Май 10, 2006 6:02 pm ]
Заглавие: 

http://www.micrium.com/index.html

Ами то излиза че стека на всеки task които пускам ще трябва да го направя по голям от необходимото за да може в него да се съхрани и контекста на прекъсването. Кофти работа като имаш повече task-ове
А няма смисъл изобщо да се забранява каквото и да било при AVR щото докато аз не разреша прекъсванията в функцията на прекъсването няма как операционната система да ми се меси в работата.
А аз нямам желание да го правя. Така че операционната система няма дори как да знае че е имало прекъсване изобщо. Само проклетия стек ме тормози че нямам много рам свободна

Автор:  Цецо [ Сря Май 10, 2006 6:21 pm ]
Заглавие: 

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

Автор:  Nikola Kirov [ Сря Май 10, 2006 6:28 pm ]
Заглавие: 

Абе и аз нещо такова си мисля само дето не ми е ясно как да стане самата реализация. Много го мразя асемблера ама работата отива така някак да го правя.

Автор:  Petar Kaschiyski [ Сря Май 10, 2006 6:49 pm ]
Заглавие: 

Аз ръчкам uCOS-II на LPC2000 не че съм много напред обаче мисля ,че операционната система трябва да се грижи за прекъсванията. Вектора на прекъсването трябва да сочи към OS_CPU_ISR() ,която е функция на порта, а ти при иницичлизацията трябва да я сложиш на интеръпт вектроа(поне при мен е така). Тя запазва контекста на текущия таск и ти пуска твоята програма за прекъсването. А това за големия стек е един от недостатъците на преемптив ртос:) каквато е uCOS-II.

Автор:  Nikola Kirov [ Сря Май 10, 2006 7:22 pm ]
Заглавие: 

А мерси. Сега ми попросветна как по принцип е замислено. Но нямам възможност да го направя така поради липса на памет. Ще се пробвам с асемблерска процедура която да съхранява контекста в предварително зададелена памет. Дано да успея.

Автор:  Цецо [ Сря Май 10, 2006 7:44 pm ]
Заглавие: 

По принцип би трябвало да можеш да локнеш някоя памет в линкер скрипт файловете (поне така е на повечето компилатори).

После как ще организираш самото съхранение на контекста си зависи от много неща.

Автор:  Nikola Kirov [ Сря Май 10, 2006 7:53 pm ]
Заглавие: 

За локването няма проблем ама нататък ще се поузоря. Но почвам да се ориентирам ккаво трябва да направя точно

Автор:  ДедоБоре [ Сря Май 10, 2006 11:50 pm ]
Заглавие: 

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

може да си заделиш памет за прекъсвания в интеръпти и да си сменаш стековия указател при влизане в интеръпта. на мен ми звучи гнило обаче. а и с някой процесори не е толкова лесно. контекст суича е най-финната работа в една многозадачна RTOS. и почти никога не е задоволителен от мой опит

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/