부팅 - 해당되는 글 1건

이더넷에 접근하기 위해서는 뱅크3를 가지고 접근을 한다.
이더넷칩을 가지고는
18000000-20000000 주소에 있는 공간을 가지고 포팅을한다.

커널은 항상 주메모리에 탑재 되어 실행된다.
유에스비,네트웍,시리얼을 사용하여서 커널을 메모리에 올린다.

실행된 커널이미지가 올라가는 메모리의 물리적인주소
디폴트값은 0x30008000번지 엔트리 포인트

압축되어있는 리눅스 커널 엔트리 포인트는
/arch/arm/boot/compressed/head.S

압축되어있지않는 엔ㄷ느틸 포팅트는
/arch/arm/kernel/head.S

start_kernel()

bzImage
암에서는 헤드랑 압축된커널이미지로 구성된다.
head+misc piggy.o 이걸로 구성된다.

이미지 압축방식
zImage:gzip
bzImage:gzip

b?
big kernel을 의미함

bzImage가 생겨난 배경  아이비엠 피시 에이티의 메모리제약사항

삼천이백만번지에 압축된 커널이미지를 넣는다 여기에서는 위치는 크게 중요하지 않음
압축을 풀기위해서 주소를 정하기 떄문에
유부트에서 bootm 명령에의해서  압축이 해제되면서 이해할수있는 헤더를 여기에 붙여서 넘겨주고
이미지가 올라간다

제트이미지는 3200만번지로 바꺼서 바로 실행되게 설치한다.
왜냐하면 바로 실행이미지가 올라가기 때문에.

유부트는 30008000에다가 부트 이미지를 풀어서 올라간다.
mmu를 이니셜라이즈하면 메모리에
trap init단계에서 익셉션벡터랑 헨들러가 올라가고
paging init 단게에서 bootm 명령에의해서  압축이 해제되면서 이해할수있는 헤더를 여기에 붙여서 넘겨주고 이미지가 올라간다

start_kernel()부터는 실제로 커널 초기화 그전 단계는 시스템 초기화단계
커널이 시작되면 stext부터 시작이된다.
      ARM s3c2410  |  2007. 10. 8. 10:30



sokoban's Blog is powered by Daum & Tattertools