Goto page Previous 1, 2, 3, 4, 5, 6, 7
Mario
Guest
Thu Feb 03, 2011 1:37 pm
W dniu 2011-02-03 13:06, JDX pisze:
Quote:
On 2011-02-02 12:43, Michoo wrote:
[.....]
Kompilator zna początek stosu i zna jego koniec
Także początek i koniec stosu dynamicznie tworzonych wątków/zadań?
Use RTOS Luke. We Freertosie definiujesz wielkość stosu dla każdego taska.
--
Pozdrawiam
MD
JDX
Guest
Thu Feb 03, 2011 2:05 pm
On 2011-02-03 13:37, Mario wrote:
[.....]
Quote:
Use RTOS Luke. We Freertosie definiujesz wielkość stosu dla każdego taska.
No popatrz, to podobnie jak pod Linuksem. Lub pod Windows. Lub pod
NutOS. Lub pod "moim własnym" OS-em.

Pytanie jest tylko skąd
kompilator C ma wiedzieć jaką wielkość stosu dla jakiegoś wątku wymyślił
sobie użytkownik i pod jakim adresem postanowił umieścić jego dno.
Adam Dybkowski
Guest
Thu Feb 03, 2011 3:47 pm
W dniu 2011-02-03 14:05 JDX napisał(a):
Quote:
Use RTOS Luke. We Freertosie definiujesz wielkość stosu dla każdego
taska.
No popatrz, to podobnie jak pod Linuksem. Lub pod Windows. Lub pod
NutOS. Lub pod "moim własnym" OS-em.

Pytanie jest tylko skąd
kompilator C ma wiedzieć jaką wielkość stosu dla jakiegoś wątku wymyślił
sobie użytkownik i pod jakim adresem postanowił umieścić jego dno.
Jeżeli używasz nieco większych procków niż AVR (powiedzmy chociażby
ARM7TDMI) to kompilatorowi gcc możesz powierzyć sprawdzanie
przekroczenia stosu na początku każdej funkcji. Oczywiście jest to
sprawdzane podczas wykonywania kodu i nieco go zwalnia a nie podczas
kompilacji. Jeden rejestr procesora wtedy jest zarezerwowany na adres
końca obszaru stosu i twój system operacyjny musi go odpowiednio
przełączać przy zmianie wątku (podobnie jak przełącza sam wskaźnik stosu
i inne rejestry). Poczytaj o opcji kompilatora -fstack-check.
Teoretycznie to samo można by zrobić w AVRach ale nie wiem czy
kompilator avr-gcc obsługuje tą opcję. Przy procesorach z ochroną
pamięci (np. ARM926EJ-S) jest jeszcze prościej.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Mario
Guest
Thu Feb 03, 2011 4:58 pm
W dniu 2011-02-03 14:05, JDX pisze:
Quote:
On 2011-02-03 13:37, Mario wrote:
[.....]
Use RTOS Luke. We Freertosie definiujesz wielkość stosu dla każdego
taska.
No popatrz, to podobnie jak pod Linuksem. Lub pod Windows.
Była mowa o programowaniu mikrokontrolerów.
Lub pod
Quote:
NutOS. Lub pod "moim własnym" OS-em.

Pytanie jest tylko skąd
kompilator C ma wiedzieć jaką wielkość stosu dla jakiegoś wątku wymyślił
sobie użytkownik i pod jakim adresem postanowił umieścić jego dno.
A co mnie obchodzi jak on to znajduje. Jest skrypt xTaskCreste który
używam do tworzenia zadania. W nim podaję wielkość stosu. Jak to w
czasie kompilacji gcc odczyta i gdzie umieści początek stosu to już nie
moja sprawa. Nie jestem programistą systemowym. Po to piszę w c i pod
rtosem żeby nie zarządzać pamięcią podczas pisania aplikacji. Jak
pisałem w asemblerze też robiłem durnowate sztuczki żeby zdjąć coś ze
stosu i wyskoczyć na chama z procedury ale nie jest to wystarczający
powód żeby trwać we własnoręcznym generowaniu kodu maszynowego ubranego
w słówka MOV, ADD czy LJMP.
--
Pozdrawiam
MD
badworm
Guest
Mon Feb 21, 2011 10:51 pm
Dnia Tue, 01 Feb 2011 10:01:53 +0100, J.F. napisał(a):
Quote:
A mi przychodzi do głowy Racal-Redak, który udawało się odpalić na PC-XT
Redac. Uzywalem. Takze pod nazwa Cadstar.
A czy on miał coś wspólnego z programem obecnie dostępnym pod nazwą
Cadstar?
--
Pozdrawiam Bad Worm badworm[maupa]post{kopek}pl
GG#2400455 ICQ#320399066
Adam Dybkowski
Guest
Tue Feb 22, 2011 12:38 am
W dniu 2011-02-21 22:51 badworm napisał(a):
Quote:
A mi przychodzi do głowy Racal-Redak, który udawało się odpalić na PC-XT
Redac. Uzywalem. Takze pod nazwa Cadstar.
A czy on miał coś wspólnego z programem obecnie dostępnym pod nazwą
Cadstar?
http://en.wikipedia.org/wiki/Cadstar
http://en.wikipedia.org/wiki/Zuken
BTW:
http://www.pbase.com/image/71900377
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Goto page Previous 1, 2, 3, 4, 5, 6, 7