몇몇 분들의 조언에 따라 ppcboot-1.1.5(uboot-1.1.1)에서 SDRAM 초기화하는 부분을 다시 한번 검토하고 바꾸어 보기도 했지만 역시 동일한 현상이네요. 일단 ppcboot가 제대로 살아나서 linux를 로딩 후 제대로 uncompressing 시켰다면 일단 메모리는 정상이라고 생각해도 되지 않을까요?
그리고 linux를 ppc patch를 적용한 linux-2.4.18과 linux-2.4.22 모두 사용해 봤는데.
2.4.18은 arch/ppc/kernel/head.S에서 _start에서 출발해서 잘 진행하다가 start_here로 jump하지 못하고 그 전단계인 turn_on_mmu: 에서 멈추고 더이상 진행을 하지 못하고.
========================================================= 정확한 위치는 turn_on_mmu: mfmsr r0 ori r0,r0,MSR_DR|MSR_IR mtspr SRR1,r0 lis r0,start_here@h ori r0,r0,start_here@l mtspr SRR0,r0 SYNC RFI /* enables MMU */
에서 RFI에서 뻗는거 같습니다. SYNC까지는 수행이 되는것을 확인 했구요.. ===========================================================
linux-2.4.22는 그전 단계인 call_setup_cpu에서 멈추어 버립니다. =========================================================== 정확한 위치는 /* Enable caches for 603's, 604, 750 & 7400 */ setup_common_caches: mfspr r11,HID0 andi. r0,r11,HID0_DCE ori r11,r11,HID0_ICE|HID0_DCE ori r8,r11,HID0_ICFI bne 1f /* don't invalidate the D-cache */ ori r8,r8,HID0_DCI /* unless it wasn't enabled */ 1: sync mtspr HID0,r8 /* enable and invalidate caches */ sync mtspr HID0,r11 /* enable caches */ sync isync blr
에서 mtspr HID0,r8 에서 DATA cache를 enable 순간 죽어 버립니다.
위 구문에서 DATA cache를 disable하도록 하면 이 부분은 통과합니다. ===========================================================
그리고 강제로 이 부분을 통과하도록 해도 2.4.18과 동일하게 turn_on_mmu 에서 죽네요.
도대체 무엇이 문제인지 종잡을수가 없습니다. board dependent 한 부분은 start_here로 jump한 후 machine_init()에서 수행을 하던데.. 최소한 이부분 전까진 CPU specific한 부분이므로 당연히 수행이 돼야 하는거 아닌가요?
참고로 CPU model명은 XPC8260ZUIFBB2(200/133/66 MHZ) 입니다.
많은 분들의 도움을 부탁드립니다.
Thank you for visiting Netmanias! Please leave your comment if you have a question or suggestion.