ACPI 인터페이스를 사용하면 배터리 수명에 대한 정보를 얻을 수 있습니다. 이 정보는 어디에서 오는가?
전원 플러그에 흐르는 전류를 적산하여 전력을 계산할 수 있는 칩이 있나요? 전압을 용량으로 변환해주는 배터리칩인가요?
답변1
공칭 배터리 용량에 대한 실제 지식은 일반적으로 같은 곳에서 나오지 않습니다. 예를 들어, 제가 작업 중인 소형 임베디드 장치는 동일한 배터리 유형만 사용할 수 있습니다. 따라서 공칭 용량은 커널 드라이버(또는 장치 트리 파일)에 하드코딩되어 있습니다. 어느 것이 중요한지는 중요하지 않습니다. "CPU에서 실행되는 소프트웨어에 하드코딩되어 있습니다").
다른 장치에는 용량을 추적하는 컴퓨터 마더보드의 전원 컨트롤러에서 실행되는 펌웨어가 있습니다. 공장 용량을 상수로 간주하여 이를 알 수 있는지, 아니면 배터리 팩에 내장된 마이크로 컨트롤러나 메모리에서 용량을 얻을 수 있는지 여부는 다시 하드웨어 설계에 따라 달라집니다. 운영 체제 지원 없이 재보정하는 기능도 마찬가지입니다.
그렇다면 현재 배터리 상태에 대한 지식이 어디서 나오는지에 대한 질문이 있습니다. 이는 다시 하드웨어 설계에 따라 달라집니다. 단순한 해결책은 현재 배터리 전압을 읽는 것일 수 있습니다. (그리고 전압을 충전에 매핑하는 내부의 일반적인 방전 곡선이 있습니다. 이는 멍청한 전화기 시대에 기대할 수 있는 것입니다. 배터리 기호는 "꽤 꽉 찼음", "다소 꽉 찼음"을 의미합니다. " , "거의 비어 있음", 그게 다입니다), 다른 것들은 최소한 온도를 보상하고 더 나은 것들은 실제로 배터리에서 나오는 줄 수를 계산하고 일반적으로 더 정확한 판독값을 제공합니다.
그런 다음 ACPI 컨트롤러이든 일반적으로 ACPI가 아닌 시스템이든 커널은 이러한 장치와 직접 통신하고(예: SMBUS, USB, 일부 CPU UART 등을 통해) 해당 판독값을 커널 인터페이스(sysfs)에서 얻은 값으로 변환합니다. ) 본 값. ).