하드웨어
한주를 건너뛰고 글을 쓰네요
저번주는 휴가여서 철저하게 쉬었습니다.
S5PV210 에 대해 얘기하는건 잠시 쉬고.. 오늘은 MCU IDLE 모드에 대해 말해보도록 하죠
년초에 개발했던 인텔 IXP435 MCU (이더넷 2포트, PCI 버스, DDR-II 지원, 667MHz) 의 열때문에 고민이 많습니다.
XScale 코아인데 개방된 상태에서 리눅스를 구동시키면 온도가 50도 까지 올라갑니다.
예전 IXP420 MCU 도 열이 많이나 커널 패치를 통해 온도를 약간 낮추었는데 IXP435 는 전혀 반응이 없네요
ARM9 의 경우 코프로세스15번 (CP15) 을 통해 IDLE 모드로 진입합니다.
이상태는 WFI 라고 하는데 Wait For Interrupt 입니다. 인터럽트가 발생하면 곧바로 깨어나죠..
동시에 DWB 라는 비트도 설정합니다 Disable Write Back 이라는 것인데 캐시에 관련된 것인데 어떻게 이해해야할지 ..
중요한건 인터럽트 대기 모드라는 것이죠
XScale 은 CP14 번을 통해 파워다운모드로 진입합니다.
PXA255, PXA270 (2개다 단종), PXA3xx, IXP4xx, IOP3xx MCU 등이 있죠
인터럽트를 대기하는지는 모르겠네요 .. 자료가 훝어보지 않았네요
어떻게 깨어나는지는 좀 궁금합니다... 인텔에서는 ARM 용 MCU 코아를 왜 안올리는 거양..
ARM v6 코아이후 부터는 획기적으로 변했습니다.
WFI 라는 명령이 생긴것이죠... 일케 해서 좀더 파워소비를 절약했을 수 있겠다 싶네요
(DWB 라는 명령어도 추가되었습니다.)
ARM v6 MCU 는 ARM11 S3C6410 이 있죠.. 커널 들어가서는 열이 안납니다.
하지만 부트로더 상태에서는 좀 따끈따끈합니다. (EZ-BOOT)
EZ-BOOT 에서는 WFI 모드를 사용하지 않으니까요, 만일 커널에서 바쁘게 while 문을 돈다면 역시 열이 나죠
ARM v7 코아 즉 Coretex 에서도 역시나 WFI 를 사용합니다.
S5PV210 도 열이 안나겠지만 1GHz 풀로 쓰면 열은 납니다.
참고.) 에프에이리눅스에서는 부트로더, 커널, 디바이스드라이버 까지의 영역을 하드웨어 파트로 분류합니다.
3일 동안 2시 넘어서 잤더니 몸이 축나네요.. 개발자는 제발자 !!