• 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

VPS Starter Arubacloud
–3 głosów
168 wizyt
pytanie zadane 3 lipca 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 przez Oscar Nałogowiec (29,320 p.)
edycja 3 lipca 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 przez niezalogowany
o to bardzo przydatna wiedza dziekuje za pomoc
1
komentarz 3 lipca przez Oscar Nałogowiec (29,320 p.)
edycja 3 lipca 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 przez niezalogowany
rozumiem

1 odpowiedź

0 głosów
odpowiedź 3 lipca przez adrian17 Ekspert (348,220 p.)
wybrane 11 lipca
 
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 przez niezalogowany
no ale nie rozumiem. czyli jeśli stworze system operacyjny to musisz drogi użytkowniku dodatkowo zainstalować linuxa
1
komentarz 3 lipca przez adrian17 Ekspert (348,220 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 przez niezalogowany
to sterowniki trzeba zaprogramowac. rozumiem dzieki

Podobne pytania

–3 głosów
1 odpowiedź 287 wizyt
pytanie zadane 3 lipca w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 448 wizyt
pytanie zadane 28 lipca 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)
–2 głosów
1 odpowiedź 234 wizyt

92,843 zapytań

141,784 odpowiedzi

320,859 komentarzy

62,177 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...