Prosty wielozadaniowy system operacyjny, napisany w języku asemblera dla procesorów z rodziny amd64/x86-64.
People
Repo info
Activity
Darek Kwieciński
@devport
Czy implementowałeś opóźnienia ?
z Ciekawości zrobiłem wywoływanie przerwania zegarowego co 1ms
(przełączanie zadań co 1 ms)
dodałem TimeCouter (zmienna globalna) i w przerwaniu inkrementacje tej zmiennej...
nstępnie prostą procedure delay_ms
i na oscyloskopie sprawdzałem jak dokładny jest system co do czasu opóźnienia załącz/wyłącz diodę led z przerwą 10ms
Darek Kwieciński
@devport
co prawda nie używam jeszcze sprzętowych transmisji typu UART (rs232/rs485) bo do tych domniemam, że muszę wyłączać przerwania zegarowe aby czasem nie przerwać wysyłania znaku
ale wracając do tych diod LED... oscyloskop mam z precyzją 0,00 jeżeli jest ustawiony na "ms" i tu pozytywna reakcja... :)
ustawiona przerwa 10ms daje mi wynik 10,00 ms na oscyloskopie
a więc jest na tyle dokładna, że aż przydatne :)
w sumie przez tą 1ms proces ma czas wykonać do 900 instrukcji jednego taktu... więc to chyba dużo :)
dałem 900 (bo dochodzi obsługa przerwania i przełączania kontekstu)
Aaaaa
Darek Kwieciński
@devport
przepraszam... ;P
procka mam takotwanego 48Mhz więc nie 900 instrukcji, a jakieś 47000
:P
zegar IRQ ustawiony na 1kH
Darek Kwieciński
@devport
1kHz ;]
czyli te 1000 wywołań jak u Ciebie ;)
Darek Kwieciński
@devport
dobra transmisja przez UART działa prawidłowo... ;]
To teraz mogę śmiało uruchamiać przetwornik ADC i PWM w systemie wielozadaniowym
brakuje mi jeszcze lepszego wykorzystania RAM'u
tzn. obecnie nie mam zaimplementowanej alokacji pamięci...
wszystko na sztywno...
potrzebuje np. 2 procesy to ustawiam zmienną na 2 i ten deklaruje na poziomie kompilacji programu już gotową tablicę ...
Andrzej Adamczyk
@akasei
nie mam jeszcze opóźnień
Darek Kwieciński
@devport
:]
jakieś propozycje jak nazwać tego Twora, nad którym pracuję ? OS dla mikrokontrolerów ARM :P
docelowa obsługa w przyszłości To wszystkie rdzenie Cortex-M
Andrzej Adamczyk
@akasei
wybierz jakiś gatunek zagrożony wyginięciem :)
Andrzej Adamczyk
@akasei
chyba się starzeje :D 2 dni mordęgi (tak po pare godzin) w poszukiwaniu błędu w kodzie
brakowało tylko 1 linijki "shl rax, STATIC_MULTIPLE_BY_8"
i sałe stronicowanie się sypało
całe*
jak pisałem procedurę to jakoś uszło mi z głowy że Bajt jest 8 bitowy :D
zdenerwowało mnie to, wyszególniłem obszar gdzie jest istnieje ryzyko błedu, i bochsem linijka za linijką tłumaczyłem sobie co się dzieje.... i wuala!
Jakub Pacanowski
@jpacanowski
Kiedyś się mówiło nawet "8-bitowy bajt" :D Na szczęście bajt 8-bitowy został upowszechniony jako standard wraz z pojawieniem się komputera System/360 ;)