Uploaded by Marcin F

Syscalls

advertisement
12.02.2022, 22:47
STM32 C - gotowe pliki projektu:: 4programmers.net
4programmers.net » Forum » C/C++ » STM32 C - gotowe pliki projektu
STM32 C - gotowe pliki projektu

Zielona Pietruszka
2017-07-23 19:55
Dzień dobry,
mam pytanie, w nowo stworzonym projekcie są dwa pliki - system_stm32f4xx.c oraz syscalls.c. Mają one oczywiście opis ale nie za bardzo go rozumiem,
Orientuje się ktoś może co one tak na "chłopski rozum" robią? Bez wnikania w szczegóły, po prostu chciałbym się dowiedzieć po co one są : )

Z góry dzieki za pomoc!
stm32
0
C
 Obserwuj
 Udostępnij
 Komentuj
Nieposkromiony Pomidor
2017-07-23 20:51
Bez wnikania w szczegóły to pierwszy zawiera konfigurację zegara(clock), a drugi podstawowe operacje unixowe operacji kernela, jak czytanie pliku,
zapis, wątki itp. wszystko w języku angielskim(syscall czytaj jak systemowe operacje, albo wywołania), może nawet jest napisany czystym kodem, przez
co łatwo dość do konkluzji, jakim jest jego przeznaczenie.
0

 Obserwuj
 Udostępnij
 Komentuj
Zielona Pietruszka
2017-07-28 20:42
Dziękuję: )
mam jeszcze pytanie w sprawie syscalls, czy są to funkcje które normalnie są w systemie, a których nie ma na mikrokontrolerze ( z oczywistych przyczyn np. nie ma plików ), i trzeba je nadpisać aby program w C je widział i się skompilował ?, przecież na STM nie ma systemu, więc coś mi się tutaj nie zgadza :
d.
 Obserwuj
 Udostępnij
0

 Komentuj
Horns
2017-08-01 11:14
 Zielona Pietruszka napisał(a):
Dziękuję: )
mam jeszcze pytanie w sprawie syscalls, czy są to funkcje które normalnie są w systemie, a których nie ma na mikrokontrolerze ( z oczywistych
przyczyn - np. nie ma plików ), i trzeba je nadpisać aby program w C je widział i się skompilował ?, przecież na STM nie ma systemu, więc coś mi się
tutaj nie zgadza : d.
0

Nie masz zielonego pojęcia o programowaniu mikroprocesorów i liczysz, że ktoś na forum będzie Ci wszystko tłumaczył zaczynając od opisu zawartości
plików?
Znajdź sobie jakiś poradnik dla początkujących zamiast marnować czas.
 Obserwuj
 Udostępnij
 Komentuj
alagner
2017-08-01 11:33
Nie ma systemu, ale funkcje typu printf wykorzystują pod spodem wywołania systemowe. Odpowiednio nadpisując funkcje write czy read jesteś w stanie
np. przekierować strumienie na port szeregowy.
0

https://4programmers.net/Forum/C_i_C++/293119-stm32_c_gotowe_pliki_projektu?p=1384715
1/2
12.02.2022, 22:47
 Obserwuj
STM32 C - gotowe pliki projektu:: 4programmers.net
 Udostępnij
 Komentuj
Andy Gubed
2017-08-01 13:17
 Zielona Pietruszka napisał(a):
Dziękuję: )
mam jeszcze pytanie w sprawie syscalls, czy są to funkcje które normalnie są w systemie, a których nie ma na mikrokontrolerze ( z oczywistych
przyczyn - np. nie ma plików ), i trzeba je nadpisać aby program w C je widział i się skompilował ?, przecież na STM nie ma systemu, więc coś mi się
tutaj nie zgadza : d.
0

 Zielona Pietruszka napisał(a):
Dziękuję: )
mam jeszcze pytanie w sprawie syscalls, czy są to funkcje które normalnie są w systemie, a których nie ma na mikrokontrolerze ( z oczywistych
przyczyn - np. nie ma plików ), i trzeba je nadpisać aby program w C je widział i się skompilował ?, przecież na STM nie ma systemu, więc coś mi się
tutaj nie zgadza : d.
Syscalle w normalnym komputerze dla 32-bitowej architektury, są to wywołania systemowe, które umożliwiają pracę systemu.
Dla linux'a masz tablicę ze wskaźnikami na te funkcje, która jest ładowana w czasie startu systemu. Potem wywołaniem "int 0x80" (instrukcja asemblera),
skaczesz pod program obsługi tego wektora (taki zarządca), który to wybiera odpowiednią funkcję (z wektora) w zależności od tego co jest na stosie lub w
rejestrach i ją wywołuje.
W dosie masz int21h.
Biosowe przerwania to int10h dla klawiatury oraz int16h dla grafiki.
Bios najpierw ładuje swoje przerwania, a następnie system może je nadpisać lub zrobić z nimi co mu się podoba.
W stmie sytuacja wygląda trochę inaczej. Masz pełną kontrolę nad tym co robisz. Jeśli załadujesz do swojego ulubionego cortexa system, to sytuacja
będzie bardzo podobna do opisanej powyżej. Takie rozwiązanie prawdopodbnie skorzysta z instrukcji asemblera "SVC numer_przerwania".
Lecz masz pełną kontrolę nad tym co robisz. Wywołania "dostępne dla wszystkich", możesz zbudować sobie sam. Dla przykładu umieszczasz gdzieś
zarządce przerwaniami oraz tablicę ze swoimi funkcjami i w każdym wywołaniu robisz zwykłego calla(chyba instrukcja "B adres"). Następnie musisz
skompilować tak program, aby przy wywołaniu odpowiedniej funkcji - program, wiedział co ma robić.
Biblioteki, z których korzystasz mają coś takiego w sobie, że zbudowany program korzystający z syscalli, na starcie uC ładuje ten vector i ustawia wszystko
jak być powinno. Zaletą takiego rozwiązania jest ustandaryzowanie wywołań, mniejsza ilość kodu, ogólny porządek.
Jeśli chodzi o same przerwania to masz to opisane w manulu do swojego scalaka. Jest miejsce w pamięci, które przechowuje wszystkie przerwania (a
raczej adresy na funkcje tych przerwań). Aby uruchomić syscalla wstawiasz adres zarządcy pod jakies przerwanie(w czasie startu scalaka) i w czasie
wywołania funkcji(gdzieś w kodzie) kierujesz go pod nie (a on robi co do niego należy).
 Obserwuj
 Udostępnij
 Komentuj
Liczba odpowiedzi na stronę
C/C++
10

 1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0
4programmers.net » Forum » C/C++ » STM32 C - gotowe pliki projektu
PRACA DLA
PROGRAMISTÓW
FORUM
DYSKUSYJNE
SPRAWY
ADMINISTRACYJNE
Praca JavaScript
Python
Zgłoś błąd w
Praca Java
Java
Praca C#
C/C++
Praca PHP
C# i .NET
Praca Python
Kariera
Praca C++
Edukacja
O NAS
Kontakt
oprogramowaniu
API 4programmers.net
Blog
Regulamin
SKONTAKTUJ SIĘ Z NAMI
 Napisz do nas
Polityka prywatności
Reklama
4programmers.net
Pomoc
Prawa autorskie
Patronat
 Odwiedź nas na Facebooku
Nasze logo
Coyote
Copyright © 2000-2022
https://4programmers.net/Forum/C_i_C++/293119-stm32_c_gotowe_pliki_projektu?p=1384715
Coyote 2.5: 109 ms
2/2
Download