안녕하세요 SMP Booting에 관련해서 질문이 있어서 글 올립니다.
제가 target으로 하는 보드는 Odroid xu3이며, 오드로이드에는 big-little 아키텍쳐를 가집니다.
부트 로더(u-boot)를 통해서 제가 만들고 있는 프로그램을 부팅시켜주면, little 클러스터의 cpu0에 부팅을 시켜주는 상태입니다.
일반적으로, primary cpu가 아닌 다른 secondary cpu들은 wfe 상태라고 알고있습니다.
1. wfe상태는 일반으로 event를 기다리는 상태로 특정 신호를 보내주는 dsb, sev instruction을 통해서 켜줄 수 있다고 arm문서를 통해서 확인했지만 그 방법으로는 켜지지 않는 것을 확인했습니다.(pmu를 통해서 cpu의 상태를 확인하였습니다.)
2. linux나 xen을 참조해보니, pmu의 특정 주소에 값을 써줌으로써, 아예 cpu를 새로 부팅하는 것을 확인하였으며, 이를 따라해도 안되는 겁니다.
제가 지금까지한 일은,
1. writel((unsigned int) reset_for_debugging, 0x02073000);
2. pmu_write의
pmu_raw_writel(core_conf, EXYNOS_ARM_CORE_CONFIGURATION(cpu));
이 상태입니다.
혹시 제가 놓치고 있거나 혹시 오드로이드라서 특별히 더 해주어야 하는 부분이 존재 하는지 알고싶습니다.
답변 감사합니다.
.
secondary CPU 들은 특정 어드레스의 값이 변경 되었는지 확인해서 바뀌지 않을 시
wfe 히도록 되어 있을껍니다. (보통 ROM 코드로)
그 어드레스에 부팅을 위해 점프해줄 리셋번지? 가 입력 되어야 합니다.
그 부분 주소는 데이터 시트를 요청하세요
아니면 삼성 제공 uboot나 커널 소스 확인 하시면 될겁니다.