ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • U-boot 환경 설정 $ make odroid-xu4_defconfig
    Boot Loader 2019. 8. 23. 21:16

    1) 환경 설정

    보통 kernel이나 bootloader를 빌드하기 전에 대상 시스템을 위한 환경을 설정해야 합니다. 새로운 시스템이 아니라면 필요한 U-boot를 내려받아 쓰면 되지만 새로운 시스템을 개발할 경우에는 대상 시스템에 맞게 수정을 해야 됩니다.

     

    u-boot top 디렉터리에서 다음과 같은 명령어를 사용합니다.

     

    $ make odroid-xu4_defconfig

     

    make 프로그램은 한 줄씩 읽고 바로 실행하는 것이 아니라 파일 전체를 먼저 파악하고 해당 타깃을 실행 합니다.

     

    그럼

    해당 makefile의

    477 %config: scripts_basic outputmakefile FORCE
    478 $(Q)$(MAKE) $(build)=scripts/kconfig $@

    477라인의 %config는 패턴 비교를 위한 것으로 config로 끝나는 모든 타깃명을 나타내고있습니다. odroid-xu4_defconfig때문에 여기에 도착하게 됩니다.

    다음은 해당 타깃의 dependencies의 첫 번째 타깃인 scripts_basic으로 넘어갑니다.

     

    396 PHONY += scripts_basic
    397 scripts_basic:
    398 $(Q)$(MAKE) $(build)=scripts/basic
    399 $(Q)rm -f .tmp_quiet_recordmcount

    scripts_basic타깃의 첫번째 레시피인 398라인을 수행해야 되는데 여기서 build라는 놈이 갑자기 튀어나옵니다. 이 build라는 변수는 

    330 include scripts/Kbuild.include

    330라인에 명시되어있는 script/Kbuild.include를 확인하시면 build변수를 알수가있습니다.

     

    477라인의 outputmakefile 타깃으로 넘어간다.

    408 outputmakefile:
    409 ifneq ($(KBUILD_SRC),)
    410 $(Q)ln -fsn $(srctree) source
    411 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
    412 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
    413 endif

    그런데 KBUILD_SRC는 값이 존재하지 않으므로 outputmakefile은 수행할것이 없습니다.

     

    477라인의 dependency가 완료되면 478라인의 recipe를 수행할 수 있다.

    $@이는 타깃 이름으로 치환이 되므로 $(Q)$(MAKE) $(build)=scripts/kconfig $@를 해석하면

    make $(build)=scripts/kconfig odroid-xu4_defconfig이라고 할 수 있습니다. $(Q)는 해당 명령을 echo할지 말지하는것이고

    u-boot/scripts/kconfig/Makefile을 살펴보면 당연히 

    120 %_defconfig: $(obj)/conf
    121 $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)

    %_defconfig:라는 타깃이 있을 것이다 그럼 obj는 뭘까? 

     

    $(Q)$(MAKE) $(build)=scripts/basic

    'Boot Loader' 카테고리의 다른 글

    /common/console.c  (0) 2019.09.22
    ABI와 EABI  (0) 2019.09.20
    /arch/arm/lib/ctr0.S  (0) 2019.09.20
    U-boot  (0) 2019.09.20
    U-boot Makefile 분석  (0) 2019.08.23

    댓글

Designed by Tistory.