기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

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)

 

 수고하세요

 


고도리

2013.01.25 14:32:17
*.111.12.170

제가 궁금해서 질문 드리는데요..


1. 공부하시는 것인가요?

2. 아니면 cpu 포팅을 하시는 중이신가요?


저쪽 코드를 예전에는 싹쓸이 하다시피 본적이 있지만, 근래에는 저 부분까지 내려간적이

거의 없습니다.(작년에 한 번 정도)


왜냐하면 해당 코드는 booloader에서 ram만 살려서 제대로 architecture number 만

건네주면 동작해야 하는 부분이거든요.



황원일

2013.01.25 18:57:40
*.7.236.194

v210 커널을 가지고 C110에 진저포팅 중 입니다.

machine-id , processor-id는 다 정상인데 head.s의 adr       lr, BSYM(__enable_mmu)이부분이후로 넘어가지가 않아서 일주일 이상 삽질 하다가 우연찮게 이상한코드을 추가하니 정상적으로 부팅 되어서 고수님들 의견을 듣고자 글을 섰습니다.

movs   r10, r10, ror#0(사실 의미없는 코드이죠)

저도 좀 아무리 봐도  이상하긴한데 일단은 정상적으로 부팅이 되네요.

램타이밍도 아닌것 같고 고도리이하 고수님들 의견좀 부탁드립니다.

수고하세요.

 

고도리

2013.01.25 20:17:03
*.111.12.170

음....MMU setup시 보통 약간의 timing을 주기는 해야합니다만...

이런 경우는 cache 문제일 가능성이 좀 있어 보이긴 하네요.


v210과 c110의 cpu적인 차이는 없지만, 외부 환경의 영향도 있을 듯 합니다.


c110은 LPDDR을 사용하고, v210은 DDR2를 사용하는데, 거기서 오는 차이일 수도 있을 듯 합니다.

해당 코드 빼고, nop를 한 4개 정도 집어 넣어서 함 테스트 해 주시겠어요?



황원일

2013.01.25 21:15:36
*.7.236.194

답변 감사합니다

movs   r10, r10, ror#0 대신 nop 4개 정도 넣었습니다. 동작은 정상적이네요.

 

정말 외부적인 요인에 의해서 그런가?

 

혹 이런경우 다른쪽에서 문제가 생길까봐 걱정은 좀 되네요..

 

고도리

2013.01.25 22:08:22
*.200.239.210

음....그럼 cpu clock은 얼마로 세팅하셨나요?

부트로더는 u-boot인가요? c110용? 아니면 v210용?


MMU setup time 문제인 듯 싶습니다. 안정화 시간이 좀 필요하긴 합니다만...


혹시 v210용 gingerbread는 못 구하셨나요? 그걸 가지고 함 해보시죠....

황원일

2013.01.26 00:20:20
*.7.236.194

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(이게 맞나 모르겠음) 써야 하나요?

가격이 차이가 나서 말이죠....

고도리

2013.01.26 03:30:00
*.200.239.210

onenand로 부팅가능합니다. 다만, filesystem을 yaffs로 하지마시고, ubifs를 쓰시면 문제없습니다.

yaffs로 했을 경우 android /data 파티션이 깨지는 경우가 나와서 그렇습니다.


eMMC나 SD 부팅으로만 쓰실 것이면 아마도 O-type이 있을겁니다.

양산 물량이 어느정도 되신다면 O-type도 나쁘지 않습니다.


꽤 많은 가격이 빠질겁니다.

황원일

2013.01.29 21:42:43
*.7.236.194

감사합니다 아직 초보라 모르는것이 많아서.. 많은 가르침 부탁드립니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
5708 애플리케이션에서 GPIO 컨트롤하기 에 대해 문의드립니다. [6] 미누유희 2013-02-05 1542
5707 Exynos5250 부트로더 수정 관련 림보맨 2013-02-04 1086
5706 ARNDALE 보드에서 OpenCL 구동 가능한지요 ? [4] 오빠네미용실 2013-02-02 1433
5705 ARM NEON 관련 문의 드립니다. 죽유 2013-02-02 1411
5704 안드로이드 풀 빌드 시 구글 계정 사용할 수 있나요? [1] 코믹해커 2013-01-31 1490
5703 aesop V210 진저브레드/ICS 커널 포팅 관련하여 질문드립니다. [1] 황인용 2013-01-31 1389
5702 CPU 에서 마이컴 writing 관련 [3] 박명대 2013-01-30 1692
5701 카메라 디바이스 드라이버에 대해서 공부하고 있는데요.. [1] rubio 2013-01-30 1302
5700 엑시노스 5250 RESET 문제?? [2] 윤동열 2013-01-30 1502
5699 [이클립스]UI LCD 표시 매우 큰 글자 표시 방법 만년설화 2013-01-29 986
5698 S5PV210 WinCE6.0 Sleep/Wakeup 질문 사악깨비 2013-01-28 1014
5697 dtv 튜너 모듈이 있을까요? [3] 최승훈 2013-01-27 1791
5696 S5pv310의 GPL2(0)를 인터럽트로 사용 하려면 어떻게 해야 되지요.? [3] GloomyDay 2013-01-27 1520
5695 [Arndale Board] OTG(mini USB)연결 문제에 관해서 문의드립니다... [6] 강현성 2013-01-25 1734
5694 C110 보드 설계해보신분 답변 부탁드립니다(전압관련) [2] 화이트맨 2013-01-25 1295
5693 ubuntu update와 tool package설치 관련 [2] 바라마79 2013-01-24 1261
» kernel 문제 다시 여쭤 봅니다. [8] 황원일 2013-01-24 1404
5691 [arndale board] wiki의 오타 부분 [1] monad 2013-01-24 1188
5690 [origen4412] gps 작동 질문. [4] 루트요 2013-01-23 2313
5689 [android] power management [10] wizard14 2013-01-23 1579

사용자 로그인