기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
head.s의 소스일부분입니다
ENTRY(stext)
setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode
@ and irqs disabled
mrc p15, 0, r9, c0, c0 @ get processor id
bl __lookup_processor_type @ r5=procinfo r9=cpuid
movs r10, r5 @ invalid processor (r5=0)?
beq __error_p @ yes, error 'p'
bl __lookup_machine_type @ r5=machinfo
movs r8, r5 @ invalid machine (r5=0)?
beq __error_a @ yes, error 'a'
bl __vet_atags
bl __create_page_tables
/*
* The following calls CPU specific code in a position independent
* manner. See arch/arm/mm/proc-*.S for details. r10 = base of
* xxx_proc_info structure selected by __lookup_machine_type
* above. On return, the CPU will be ready for the MMU to be
* turned on, and r0 will hold the CPU control register value.
*/
ldr r13, __switch_data @ address to jump to after
@ mmu has been enabled
adr lr, BSYM(__enable_mmu) @ return (PIC) address
ARM( add pc, r10, #PROCINFO_INITFUNC )
THUMB( add r12, r10, #PROCINFO_INITFUNC )
THUMB( mov pc, r12 )
ENDPROC(stext)
아래의 빨강색 부분을 추가했더니 어찌씨구 동작하네요.. 그런데 영 이상하네요. 의미없는 명령인데 혹 타이밍 차인가?
설명좀 부탁 드려도 될까요?
ENTRY(stext)
setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode
@ and irqs disabled
mrc p15, 0, r9, c0, c0 @ get processor id
bl __lookup_processor_type @ r5=procinfo r9=cpuid
movs r10, r5 @ invalid processor (r5=0)?
beq __error_p @ yes, error 'p'
movc r10,r10,ror#0 @--> 이부분 추가
bl __lookup_machine_type @ r5=machinfo
movs r8, r5 @ invalid machine (r5=0)?
beq __error_a @ yes, error 'a'
bl __vet_atags
bl __create_page_tables
/*
* The following calls CPU specific code in a position independent
* manner. See arch/arm/mm/proc-*.S for details. r10 = base of
* xxx_proc_info structure selected by __lookup_machine_type
* above. On return, the CPU will be ready for the MMU to be
* turned on, and r0 will hold the CPU control register value.
*/
ldr r13, __switch_data @ address to jump to after
@ mmu has been enabled
adr lr, BSYM(__enable_mmu) @ return (PIC) address
ARM( add pc, r10, #PROCINFO_INITFUNC )
THUMB( add r12, r10, #PROCINFO_INITFUNC )
THUMB( mov pc, r12 )
ENDPROC(stext)
수고하세요
v210 커널을 가지고 C110에 진저포팅 중 입니다.
machine-id , processor-id는 다 정상인데 head.s의 adr lr, BSYM(__enable_mmu)이부분이후로 넘어가지가 않아서 일주일 이상 삽질 하다가 우연찮게 이상한코드을 추가하니 정상적으로 부팅 되어서 고수님들 의견을 듣고자 글을 섰습니다.
movs r10, r10, ror#0(사실 의미없는 코드이죠)
저도 좀 아무리 봐도 이상하긴한데 일단은 정상적으로 부팅이 되네요.
램타이밍도 아닌것 같고 고도리이하 고수님들 의견좀 부탁드립니다.
수고하세요.
s5pc110 n-type 쓰고 있고요.cpu clock는 1000MHz 입니다.
u-boot을 사용하고있고요 v210용을 c110으로 수정해서 사용하고있습니다.
지금까지 진저까지 포팅했습니다 별 문제없이 하루정도 돌아가고 있네요.
Mango210 보드의 소스을 기본으로 하고있습니다. uboot(1.3.4) Kernel(V2.6.35.7) ginger(2.3.3)을 사용하고 있습니다.
저도 하나만 여쭤 보겠습니다.
C110의 내부 onenand로 안드로이드 부팅이 가능한가요? 다들이상하게 SD부팅만 이용하더라고요...
onenand부팅시 깨지는 문제가 있다고들 하는데 그문제 때문에 사용을 안하시는건가요?
그럼 n-type 말고 onenand가 아예없는 b-type(이게 맞나 모르겠음) 써야 하나요?
가격이 차이가 나서 말이죠....
제가 궁금해서 질문 드리는데요..
1. 공부하시는 것인가요?
2. 아니면 cpu 포팅을 하시는 중이신가요?
저쪽 코드를 예전에는 싹쓸이 하다시피 본적이 있지만, 근래에는 저 부분까지 내려간적이
거의 없습니다.(작년에 한 번 정도)
왜냐하면 해당 코드는 booloader에서 ram만 살려서 제대로 architecture number 만
건네주면 동작해야 하는 부분이거든요.