• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wykorzystanie sterowników urządzenia np baterri

Aruba Cloud - Virtual Private Server VPS
–3 głosów
263 wizyt
pytanie zadane 3 lipca 2024 w C i C++ przez niezalogowany
witam,

spotkałem pewne wyzwanie, którego nie rozumiem a bardziej nie umiem. chciałbym napisać, program w c który wyświetla aktualny poziom naładowania baterii, ale nie wykorzystuje API ani plików z tymi info . A dowiedziałem się ze do tego potrzebuje wykorzystać sterowniki(czy coś). Czy ktoś wyjaśni mi jak to zrobić?

z góry wielce dziękuję

 

przepraszam  jeśli będzię tu trochę błedów, ale musiałem pisać to drugi raz bo komp pod koniec pisania pytania za 1 razem się rozładował
3
komentarz 3 lipca 2024 przez Oscar Nałogowiec (29,340 p.)
edycja 3 lipca 2024 przez Oscar
Procki z których budowane są współczesne komputery posiadają kilka trybów pracy, co najmniej dwa. Nie wszystkie rozkazy procka można wykonać w każdym trybie. W trybie z najwyższymi uprawnieniami pracuje tylko najniższy poziom kernela i sterowniki urządzeń. Można wtedy dostawać się do urządzeń we-wy, przerwań, kanałów DMA itp. Z tego powodu obsługę sprzętową np. kontrolera baterii (BMS), sieci, dysków zajmują się sterowniki. Normalnie programy użytkowe (tzw userspace) pracują na trybach z ograniczonymi możliwościami, próba wykonania uprzywilejowanego rozkazu przerwie działanie takiego programu. Dozwolone są tylko operacje, które kernel ze sterownikami udostępniają w postaci API. Do tego dochodzi jeszcze ochrona pamięci (MMU), która jest całkowicie pod kontrolą kernela. Niektóre obszary pamięci są chronione przed dostępem obcych programów użytkowych.

Jeśli byś chciał napisać program sprawdzający baterię to po pierwszed musisz poznać budowe i obsługę kontrolera baterii - to zwykle jest jakiś układ scalony. Dostępne są zwykle tzw datasheety - czyli dokumenty (najczęściej pdf), które dokładnie opisują działanie i sterowanie takiego układu. Potem musisz się dowiedzieć jak taki układ jest podpięty w twoim komputerze i jak się do niego dobrać. A dopiero potem zaczynasz programowanie.
komentarz 3 lipca 2024 przez niezalogowany
o to bardzo przydatna wiedza dziekuje za pomoc
1
komentarz 3 lipca 2024 przez Oscar Nałogowiec (29,340 p.)
edycja 3 lipca 2024 przez Oscar

Dodam jeszcze, że w czasach komputerów typu ZXSpectrum, C64, Amigi itp były dostępne szczegółowe opisy działania poszczególnych komponentów, opisy rejestrów (np. w przypadku Amigi łatwiej było o opisy rejestrów niż API systemowego), przerwań itp to teraz nawet taki sprzęt jak drukarka jest tajemnica. Producent dostarcza sterowniki i tyle. Dawnej z drukarką dostawało się książeczkę gdzie były wymienione i opisane wszystkie kody zmieniające tryby itp. Nawet pierwsze IBM-PC zbudowane były ze zwykłych układów scalonych "z półki", których dokumentacja była dostępna (należy oczywiście pamiętać, że nie było wtedy internetu).

 

A wracając do baterii. Mam w domu taką płytkę mikrokomputerka firmy Olimex, która ma możliwość podłączenia pojedynczego akumulatorka LiIon (może być 18650). W związku z tym ma na podkładzie kontroler takich baterii. Jest to układ AXP209. Jak zauważyłem dostępny jest zarówno fizycznie do kupienia (za mniej niż 10zł), jak i można znaleźć datasheet. Polecam jako wstępne ćwiczenie.

komentarz 3 lipca 2024 przez niezalogowany
rozumiem

1 odpowiedź

0 głosów
odpowiedź 3 lipca 2024 przez adrian17 Mentor (352,580 p.)
wybrane 11 lipca 2024
 
Najlepsza

ale nie wykorzystuje API

Zawsze musisz gadać z... jakimś API. Na najniższym poziomie, jak piszesz sterownik, to API kernela. Jak wiesz w jaki  (sprzętowo) sposób wybrany komputer gada z baterią to możesz się inspirować wybranym sterownikiem z linuxa:

https://github.com/torvalds/linux/tree/master/drivers/power/supply

Natomiast śmiertelnik powinien po prostu użyć:

Na windowsie https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getsystempowerstatus

A na linuxie przeczytać pliki w `/sys/class/power_supply/` lub użyć upower.

komentarz 3 lipca 2024 przez niezalogowany
no ale nie rozumiem. czyli jeśli stworze system operacyjny to musisz drogi użytkowniku dodatkowo zainstalować linuxa
1
komentarz 3 lipca 2024 przez adrian17 Mentor (352,580 p.)
Jeśli tworzysz system to piszesz kernel od zera. Jeśli piszesz sterownik do istniejącego kernela to gadasz ze sprzętem za pośrednictwem kernela.
komentarz 3 lipca 2024 przez niezalogowany
to sterowniki trzeba zaprogramowac. rozumiem dzieki

Podobne pytania

–3 głosów
1 odpowiedź 430 wizyt
pytanie zadane 3 lipca 2024 w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 622 wizyt
pytanie zadane 28 lipca 2020 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 11 września 2024 w Sprzęt komputerowy przez distracted Użytkownik (540 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,667 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...