2010-06-22 5 views
12

팔 기반 임베디드 Linux 플랫폼에서 실행될 멋진 작은 응용 프로그램을 개발할 계획입니다. 그러나이 플랫폼은 배터리로 구동되므로 절전을 처리하는 방법에 대한 관련 정보를 찾고 있습니다.ARM 기반 Embedded Linux 시스템에서 절전을 수행하는 방법은 무엇입니까?

알맞은 배터리 시간을 얻는 것이 중요합니다.

리눅스 커널이이를 지원한다고 생각하지만이 주제에 대한 문서를 찾을 수 없습니다.

  • 내 프로그램 및 시스템을 디자인하는 방법에 대한 모든 의견을 환영합니다.

  • Linux 커널이 이러한 유형의 문제를 해결하는 방법에 대한 모든 정보도 환영합니다.

다른 질문 :

  • 얼마나 많은 사용자 공간에서 프로그램 할 필요합니까?

  • 그리고 커널을 수정해야합니까?

  • 커널 시스템 호출 또는 API에 대해 알아두면 좋은 점은 무엇입니까?


는 업데이트는 :

그것은이 주제에 멋진 프리젠 테이션을 제작 한 "자유 전자"사이트와 관련된 사람들처럼 보인다.

그러나 다른 어쩌면 누군가가이 주제에 대한 더 많은 정보가?


업데이트는 :

그것은 지금까지 가장 좋은 팁이 될 수 미고 프로젝트보고 갈 아담 Shiemke의 생각처럼 보인다.

현재로서는 배터리로 전원이 공급되는 임베디드 리눅스 프로젝트 일 수 있습니다.

그리고 노키아는 일반적으로 이런 종류의 일에 친절합니다.


업데이트 :

하나는 하단에있는 "수정"리눅스 커널을 가지고 있으며, 이후 안드로이드에주의하는 구글의 사람들이 기준을 사용하지 않는 수행 한 몇 가지/일반적인 리눅스 커널.파워 관리 아이디어 중 일부는 다른 프로젝트에서 재사용하기가 번거로울 수 있다고 생각합니다.

답변

9

저는 실제로이 작업을 수행하지는 않았지만, 두 가지로 나누어 본 경험이 있습니다 (Linux 및 임베디드 전원 관리). 전원 관리, Android 및 MeeGo에 관해 생각할 때 떠오르는 두 가지 주요 Linux 배포판이 있습니다. MeeGo는 (내가 알 수있는 한, 수정되지 않은 2.6 커널을 사용합니다. 제품이 성숙 해짐에 따라 가까운 장래에 더 많은 제품이 출시 될 것으로 예상되지만, 전원 관리 전략이 무엇인지 정확하게 파악할 수 없었습니다.

Android에는 더 많은 정보가 있습니다. 그들은 상당히 많이 수정 된 2.6 커널을 실행합니다. http://elinux.org/Android_Power_Management (커널 드라마뿐 아니라)에 구현 된 다양한 전략에 대한 좋은 정보를 볼 수 있습니다. 일부 다른 링크 :

https://groups.google.com/group/android-kernel/browse_thread/thread/ee356c298276ad00/472613d15af746ea?lnk=raot&pli=1

http://www.ok-labs.com/blog/entry/context-switching-in-context/

난 당신이 이러한 성격의 더 많은 링크를 찾을 수 있습니다 확신 해요. 두 프로젝트 모두 오픈 소스이기 때문에 커널 코드를 포착 할 수 있으며 실제로 양식 및 그룹에서 말하는 내용을 실제로 알고있는 사람들로부터 추가 정보를 얻을 수 있습니다.

드라이버 수준에서 드라이버가 사용 중이 아닌 일시 중지 및 종료 장치를 올바르게 처리 할 수 ​​있어야합니다. 모바일 시장을 목표로하는 대부분의 디바이스는 개별 구성 요소를 끄고 클록 설정을 조정할 수 있도록 매우 세부적인 지원을 제공합니다 (전력은 클록^2에 비례 함).

희망이 도움이됩니다.

+0

+1 MeeGo (및 Maemo) – Johan

4

응용 프로그램 및 드라이버를 작성하고 있거나 최소한 소스 코드가 있다고 가정하면 OS에서 특별한 지원 없이도 절전을 할 수 있습니다.

드라이버를 다시 시작하거나 시스템을 불안정하게 만들 필요없이 관련 장치를 비활성화하고 다시 불러올 수 있어야합니다. 장치가 PCI/PCIe 버스에 연결되어 있으면 지원하는 전원 상태 (D0 - D3)와 드라이버가 이러한 저전력 모드 사이를 전환하기 위해 수행해야하는 작업을 조사하십시오. 사용할 하드웨어 장치를 선택하는 경우 PCI 전원 관리 사양을 따르거나 유사한 기능 (예 : 절전 모드 및 "깨우기"인터럽트 신호)이있는 장치를 찾으십시오.

장치가 부팅되면 모든 장치가 연결되어 있는지 여부를 감지 할 수있는 모든 장치가 그렇게해야합니다. 포트 또는 버스가 사용 중이 아니라는 것을 감지하면 전원을 끄거나 잠자기 상태로 만듭니다. 최대 전력으로 작동하지만 사용되지 않는 포트는 예상보다 많은 전력을 낭비 할 수 있습니다. 특정 하드웨어 및 사용 사례에 따라 장치 사용을 모니터링하고 사용되지 않거나 유휴 상태 인 리소스를 식별하며 적절하게 작동하는 백그라운드 응용 프로그램 (예 : 하드웨어의 "화면 보호기")을 갖는 것이 유용 할 수 있습니다.

응용 프로그램 소프트웨어는 하드웨어 장치의 전원을 켜기 전에 사용 여부를 확인해야합니다. 저전력 모드에 놓일 수있는 장치에 액세스해야하는 경우 응용 프로그램은 장치가 깨어나고 응답하기를 기다리는 데 오랜 시간이 걸릴 수있는 지연을 처리 할 수 ​​있어야합니다. 또한 응용 프로그램은 장치의 절전 필요성을 고려해야합니다. 하드웨어 장치에 일련의 명령을 보내야하는 경우, 여러 개의 wakeup-> send-> sleep주기가 필요하지 않고이를 일시 중지하고 모두 한 번에 보냅니다.

시스템 구성 요소의 시계를 약간 어둡게 두려워하지 마십시오. 절전 효과 외에도 시원하게 작동 할 수 있습니다 (냉각에 필요한 전력이 적음).필자는 적절한 마진으로 필요한 것보다 더 강력한 CPU를 사용하는 설계를 보았습니다. 그런 다음 40 % 정도의 언더 클록 (under-clocked)이 발생했습니다 (성능은 원래 수준으로 떨어지나 전력 비용의 일부에 불과합니다) . 또한 힘을 아끼기 위해 두려워하지 마십시오. 즉, CPU 시간 모니터링 하드웨어 장치를 비활성화/최대 절전 모드로 사용할 것을 두려워하지 마십시오 (CPU가 더 많은 전력을 사용하게 될지라도). 대부분의 경우이 절충안은 순 전력 절감을 가져옵니다.

-1

실제로 주제는 아니지만 진도를 기록하는 데 유용 할 수 있습니다. 임베디드 리눅스 시스템을 테스트/측정하고있었습니다. 이 포럼에서 크리스 Desjardins에 나에게 권장이 :

http://elinux.org/Boot_Time

:

여기 http://elinux.org/Bootchart

도 도움이 될 다른 것들의 목록입니다 : 나는 과거에 성공적 bootchart를 사용한

+0

-1,이 질문에 대해서는 어떤 대답으로도 도움이되지 않습니다. 이게 의견이라고 생각 했니? – aditya

관련 문제