서론

아래 인용한 부분에 물리주소/가상주소 변환 공식이 나옵니다.

이 공식을 바탕으로 소설을 한 번 써 보겠습니다.


PHYS_OFFSET은 exynos5 가 사용하는 0x4000_0000 으로 정하겠습니다.


인용: Documentation/arm/Porting

Initial definitions

-------------------


The following symbol definitions rely on you knowing the translation that __virt_to_phys() does for your machine. This macro converts the passed virtual address to a physical address. Normally, it is simply:


phys = virt - PAGE_OFFSET + PHYS_OFFSET




소설1. 커널이 사용하는 물리 메모리 주소 범위


가상주소 3G (0xC000_0000) 부터 4G(0xFFFF_FFFF)까지는 커널이 사용하는 가상 메모리 영역입니다.

이 영역은 가상메모리와 물리메모리가 1:1 맵핑됩니다.

따라서 위 공식으로 주소를 변환할 수 있습니다.


물리주소의 시작:

phys = 0xC000_0000 - 0xC000_0000 (PAGE_OFFSET) + 0x4000_0000(PHYS_OFFSET) 

phys = 0x4000_0000


물리주소의 끝:

phys = 0xFFFF_FFFF - 0xC000_0000 (PAGE_OFFSET) + 0x4000_0000(PHYS_OFFSET) 

phys = 0x7FFF_FFFF





소설2. 부트로더가 zImage를 로드하는 주소

부트로더가 가상주소인 0xC000_8000에 zImage를 로드하므로 이 공식에 대입해 봅니다.


zImage가 로드되는 물리주소:

phys = 0xC000_8000 - 0xC000_0000 (PAGE_OFFSET) + 0x4000_0000(PHYS_OFFSET) 

phys = 0x4000_8000





결론

  - 커널이 사용하는 물리 메모리 영역은 0x4000_0000 부터 0x7FFF_FFFF 이다.
  - 부트로더가 zImage를 로드하는 물리 메모리 주소는 0x4000_8000이다.
  - 그러므로 arch/arm/boot/compressed/head.S는 이 영역 안에서 모든 작업을 한다.


결론을 올바르게 도출한게 맞나요? ^^





번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22244
338 rdmsr, wrmsr [2] file 송원준 2013.09.03 4367
337 ics나 jb 보고있는데요. dev/* 밑의 디바이스 노드(모듈?)들의 실제 소스코드를 어디서 찾을 수 있나요? [3] 피터 2013.08.31 4013
336 ics 를 svn에 import 한후 checkout 해서 컴파일 하니 에러가...ㅜ.ㅜ [12] 김영일 2013.08.26 6761
335 Android단말기 boot.img 생성 후 이미지 씌우기 질문입니다. [2] 권효서 2013.08.26 7625
334 Jison 으로 짠 expression parser를 Bison으로 converting하기 [1] 김광태 2013.08.17 3384
333 물리메모리 mapping 시점 관련. [2] 하이디제이 2013.08.16 5763
332 기초적인 질문 하나 드립니다 ^^ [2] 기본과정 2013.08.14 2755
331 Real-time 스케쥴링에 관해서 질문이 있습니다.(수정) [2] 커널공부중 2013.08.05 6961
330 i2c 다중 제어 관련 문제 [1] qtopia 2013.08.01 3592
329 리눅스 커널패닉 덤프를 분석하려면 필요한 선수지식 [4] 아척 2013.07.31 8426
328 혹시 page table 내용을 출력해보신 분이 계신지요? [6] 하이디제이 2013.07.31 3932
» 커널영역의 가상주소가 맵핑되는 물리주소가 어딘지 궁금합니다. [3] 리누즈박 2013.07.29 6346
326 user space에서 virtual to physical address mapping 상태를 어떻게 알수있을까요? 하이디제이 2013.07.29 4521
325 uImage 의 커널 로딩주소와 압축해제 주소의 충돌?? [2] 신C 2013.07.24 5610
324 이번 안드로이드 세미나 세션 이름 중에.. [2] 조영진 2013.07.15 2882
323 안드로이드 프레임워크쪽 Sp, Wp 질문드립니다.. 송대근 2013.07.11 4368
322 xend데몬이 기동시키는 프로세스를 gdb로 디버깅 하고 싶습니다. 이영준 2013.07.08 3575
321 arm에서 각 레지스터의 사용법이 궁금해요 [5] 유태희 2013.07.06 5166
320 커널관련 스터디에참석하고싶은데요 [1] kylekim 2013.07.05 2493
319 kernel build 문제 문의 [12] 서한배 2013.07.04 3729
XE Login