SW 개발

[Linux Kernel] 원하는 메모리 공간에서 리눅스 커널 동작시키기

. . . 2010. 8. 12. 14:01
반응형

rebis 보드에서 커널로딩, 동작메모리 수정한내역정리

이전 2.6 커널기준 이며, 최신커널에서는 해당내용들에 해당하지 않습니다.

메모리 구역수정을 위한 커널수정 (rebis 보드 기준)

  • include/asm-arm/arch-s3c2410/map.h 에서 s3c2410_cs6 를 수정한다.
    • 부팅시 boot_param 으로 사용하게 된다.
    • ram영역은 메모리 뱅크 6번에 링크되어있음.
  • include/asm-arm/arch-s3c2410/memory.h 의 PHY_OFFSET 를 수정한다. - 커널단에서 여러가지로 쓰는 매크로 (특히 메모리 주소결정시 많이쓰이더군요?)
  • arch/arm/mach-s3c2410/Makefile.boot 수정
    • 요기에있는 주소들을 모두 수정해줍니다.
    • zImage가 풀릴위치? 같은걸 정해주는것 같습니다.
    • 좀더 자세히 살펴보면 arch/arm/boot/compress/head.S 소스를 보다보면.. LC0 라는 라벨에.. 각 커널의 풀릴위치 / zImage 시작주소 등등.. 여러가지 부팅에 필요한 요소가 들어가게 되는데요..
    • arch/arm/mach-s3c2410/vmlinux.lds.S 에 LC0 에 들어갈 데이터를 정의하고있는듯.. 링커에 의해 그위치에 데이터가 들어가는 모양입니다.

위의 세군데를 수정한후 돌리면 원하는 메모리 주소에서 리눅스가 동작하게 됩니다.

반응형