요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
=======================================================
Frequently asked questions about the sunxi clock system
=======================================================
This document contains useful bits of information that people tend to ask
about the sunxi clock system, as well as accompanying ASCII art when adequate.
Q: Why is the main 24MHz oscillator gateable? Wouldn't that break the
system?
A: The 24MHz oscillator allows gating to save power. Indeed, if gated
carelessly the system would stop functioning, but with the right
steps, one can gate it and keep the system running. Consider this
simplified suspend example:
While the system is operational, you would see something like::
24MHz 32kHz
|
PLL1
\
\_ CPU Mux
|
[CPU]
When you are about to suspend, you switch the CPU Mux to the 32kHz
oscillator::
24Mhz 32kHz
| |
PLL1 |
/
CPU Mux _/
|
[CPU]
Finally you can gate the main oscillator::
32kHz
|
|
/
CPU Mux _/
|
[CPU]
Q: Were can I learn more about the sunxi clocks?
A: The linux-sunxi wiki contains a page documenting the clock registers,
you can find it at
http://linux-sunxi.org/A10/CCM
The authoritative source for information at this time is the ccmu driver
released by Allwinner, you can find it at
https://github.com/linux-sunxi/linux-sunxi/tree/sunxi-3.0/arch/arm/mach-sun4i/clock/ccmu
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Sunxi 클록 FAQ
1-7이 문서는 Sunxi 클록 시스템에 관해 자주 묻는 질문과 유용한 정보를 설명하며, 필요한 곳에는 ASCII 그림을 함께 제공합니다.
정상 동작 중의 클록 경로
8-25질문: 주 24MHz oscillator를 gate할 수 있게 만든 이유는 무엇이며, 시스템이 멈추지 않습니까?
답변: 24MHz oscillator gating은 전력을 절약합니다. 주의 없이 gate하면 시스템이 멈추지만 올바른 순서를 따르면 계속 실행할 수 있습니다. 정상 동작 중에는 24MHz가 PLL1과 CPU Mux를 거쳐 CPU에 공급되고 32kHz oscillator는 대기합니다.
주 oscillator가 PLL1을 거쳐 CPU Mux의 입력으로 선택됩니다.
일시 중단 직전 32kHz로 전환
26-36Suspend에 들어가기 직전 CPU Mux의 입력을 24MHz/PLL1 경로에서 32kHz oscillator로 바꿉니다. CPU는 저속 클록으로 계속 실행되므로 주 oscillator를 끌 준비가 됩니다.
CPU Mux가 32kHz oscillator를 선택하고 24MHz/PLL1 경로를 분리합니다.
주 oscillator gating
37-46CPU가 32kHz 입력으로 전환된 뒤에는 주 24MHz oscillator를 gate할 수 있습니다. 이때 CPU Mux와 CPU는 32kHz 경로로 계속 동작합니다.
24MHz 경로를 제거해도 32kHz 저전력 경로가 CPU를 유지합니다.
추가 자료
47-57Sunxi 클록 register 설명은 linux-sunxi wiki의 A10 CCM 문서에서 찾을 수 있습니다. 당시 권위 있는 정보원은 Allwinner가 공개한 `ccmu` 드라이버입니다.
요약과 해설
clocks.rst:1-57Sunxi는 suspend 중에도 CPU가 실행될 최소 클록을 유지하기 위해 먼저 CPU Mux를 32kHz로 전환합니다. 전환이 끝난 뒤에만 24MHz oscillator와 PLL1을 차단해야 시스템을 멈추지 않고 전력을 절약할 수 있습니다.
고속 정상 경로에서 저속 suspend 경로로 먼저 갈아탄 뒤 주 oscillator를 gate합니다.