- OS: ubuntu-14.04.3 LTS version (ubuntu-14.04.3-desktop-i386)
- 개발환경: yocto project 사용
1.1 Ubuntu 관련설정
- Ubuntu Package 필요 설치
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat libsdl1.2-dev xterm
- 추가적으로 필요한 Package (옵션)
$ sudo apt-get install curl $ sudo sudo apt-get install tree
- 커널설정시 문제가 발생
$ make menuconfig *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again.
보통기본으로 설치되어있는데, 흐음
$ sudo apt-get install libncurses5-dev
Yocto 의 Quick Gude
만약 다른 OS라면, 아래 사이트 혹은 iMX6의 문서를 참고해서 환경설정하자
http://www.yoctoproject.org/docs/1.8/yocto-project-qs/yocto-project-qs.html
1.2 git 와 repo 설정
Yocto는 Git 과 repo 기반으로 동작하기 때문에 GIT과 Repo 기반으로 Download 및 관련설정을 해주자.
- git 설정
$ git config --global user.name "JeonghunLee" $ git config --global user.email "xxx@xxxxx" $ git config --list
- repo 설정(Git Control)
$ mkdir ~/bin $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ vi ~/.bashrc // add following setting PATH=$PATH:~/bin $ chmod a+x ~/bin/repo
2. IMX6 Yocto 개발관련 문서
아래의 사이트에서 Yocto 기반으로 BSP를 설치하는 문서가 존재하며, 각각의 BSP Porting 및 관련사항의 문서를 볼 수 있다.
Yocto의 경우 가장먼저 Chip vendor사의 Manual 부터 반드시 확인하고, 관련사항을 점검하도록하자.
- IMX6 기본문서 자료 및 BSP 자료
2. Yocto 프로젝트 설정 및 빌드 진행
현재 Freescale의 i.MX6는 Yocto 기반으로 Release Version 과 Community Version을 제공하고 있으며 관련부분을 설치하고 진행하자
두 Version의 차이는 일단 공식 Release version 과 Community Version의 차이는 공식 버전과 개발버전의 차이 인것 같다.
두 Version의 차이는 일단 공식 Release version 과 Community Version의 차이는 공식 버전과 개발버전의 차이 인것 같다.
Yocto를 Download 위치 와 setup 설정방법 차이가 존재하지만 사용방법은 거의 동일하다
각 두가지 버전을 설치진행을 해보도록하자
2.1 Yocto release version 설치
i.MX6의 Release Version으로 설치진행 및 확인
각 두가지 버전을 설치진행을 해보도록하자
2.1 Yocto release version 설치
i.MX6의 Release Version으로 설치진행 및 확인
- i.MX6 개발문서
- fsl-yocto-3.10.17_1.0.0.tar.gz
- fsl-yocto-3.14.28-1.0.0.tar.gz
상위 파일안에, Freescale_Yocto_Project_User's_Guide 문서에 사용방법이 잘 서술이 되어있으며,
아래와 같이 QT를 이용한 빌드방법도 소개하고 있으나, 현재 이방법으로 하지 않는다.
문서의 예제 5.6.2 FB image on i.MX 6Quad SABRE-AI
- Release sources download
$ mkdir fsl-release-bsp //release version 이 아님 $ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.10.53-1.1.0_ga $ repo sync
- Yocto 개발설정 (release 용)
MACHINE에 본인의 Reference Board의 를 설정하고 아래와 같이 build directory를 생성
$ MACHINE=imx6qsabreauto source fsl-setup-release.sh –b build-fb –e fb
// build-fb directory 생성되며 conf/local.conf 생성 후 자동으로 이 위치로 이동
- 본인이 원하는 배포버전으로 빌드진행
$ bitbake fsl-image-qt5 // QT5지원가능 // build 가 진행되면서 각각의 소스를 download를 하며 build를 진행 or $ bitbake core-image-base // 기존으로 QT5가 포함 빼고자 하면 fsl-image-gui로 진행 (This builds QT5 on a frame buffer backend) To build without QT5, use image recipe fsl-image-gui.
- bitbake로 빌드 후 이미지 확인 (uboot/kernel/rootfs)
2.2 Yocto community version 설치
Release Version과 거의 동일하며, 어려움이 없이 쉽게 가능하다.
- Community sources download
$ mkdir fsl-community-bsp //release version 이 아님 $ cd fsl-community-bsp $ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b master //(master can be fido or master-next for newer one) $ repo sync
- Yocto 개발설정 (community)
$ source setup-environment build //build directory 생성이 되며 기본 설정인 conf/local.conf 설정
- build/conf/local.conf 설정
$ pwd /home/jhlee/IMX6/fsl-community-bsp/build
$ vi conf/local.conf MACHINE ??= 'imx6qsabreauto' DISTRO ?= 'poky' PACKAGE_CLASSES ?= "package_rpm" #### modified ################################ EXTRA_IMAGE_FEATURES = "debug-tweaks ssh-server-openssh tools-sdk" IMAGE_INSTALL_append += " icu directfb" DISTRO_FEATURES_remove = "x11 wayland" DISTRO_FEATURES_append = " directfb" #### end of modified ########################## USER_CLASSES ?= "buildstats image-mklibs image-prelink" PATCHRESOLVE = "noop" BB_DISKMON_DIRS = "\ STOPTASKS,${TMPDIR},1G,100K \ STOPTASKS,${DL_DIR},1G,100K \ STOPTASKS,${SSTATE_DIR},1G,100K \ STOPTASKS,/tmp,100M,100K \ ABORT,${TMPDIR},100M,1K \ ABORT,${DL_DIR},100M,1K \ ABORT,${SSTATE_DIR},100M,1K \ ABORT,/tmp,10M,1K" PACKAGECONFIG_append_pn-qemu-native = " sdl" PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" ASSUME_PROVIDED += "libsdl-native" CONF_VERSION = "1" BB_NUMBER_THREADS = '4' // BITBAKE THREAD 수 PARALLEL_MAKE = '-j 4' // Make 동작시 패러럴 옵션 4x4 = 16 DL_DIR ?= "${BSPDIR}/downloads/" ACCEPT_FSL_EULA = "1" #OE_TERMINAL = "screen" // ssh창에서 menuconfig위해 추가했으나 별효과가 없음
- 본인이 원하는 배포버전으로 빌드진행
한번 확인하기가 너무 오래걸리며, 인내하고 참자.
3. bitbake 이외 명령어들 확인
yocto setup을 진행한 후 bitbake는 사용가능하며, 이외에도 아래와 같은 bitbake 관련명령어들이 존재하므로 각각 실행해보자
Freescale의 p1020rdb 예제로 참고만하자
http://forum.falinux.com/zbxe/index.php?document_srl=828316&mid=lecture_tip
$ bitbake qt4e-demo-image (or core-image-base) $ bitbake meta-toolchain-qte (for toolchain sdk)
- bitbake로 빌드 후 이미지 확인 (uboot/kernel/rootfs)
- 각 디렉토리 를 트리구조 확인하여 분석
$ tree -d -L 2 -A
yocto setup을 진행한 후 bitbake는 사용가능하며, 이외에도 아래와 같은 bitbake 관련명령어들이 존재하므로 각각 실행해보자
$ bitbake-layers show-layers // Layer 구성을 보여준다 layer path priority ========================================================================== meta /home/jhlee/IMX6/fsl-community-bsp/sources/poky/meta 5 meta-yocto /home/jhlee/IMX6/fsl-community-bsp/sources/poky/meta-yocto 5 meta-oe /home/jhlee/IMX6/fsl-community-bsp/sources/meta-openembedded/meta-oe 6 meta-multimedia /home/jhlee/IMX6/fsl-community-bsp/sources/meta-openembedded/meta-multimedia 6 meta-fsl-arm /home/jhlee/IMX6/fsl-community-bsp/sources/meta-fsl-arm 5 meta-fsl-arm-extra /home/jhlee/IMX6/fsl-community-bsp/sources/meta-fsl-arm-extra 4 meta-fsl-demos /home/jhlee/IMX6/fsl-community-bsp/sources/meta-fsl-demos 4 $ bitbake-layers show-recipes // bitbake의 recipes들을 보여준다. // release or community version으로 setup을 하면 build directory 생성과 함께 build/conf/local.conf 와 build/conf/bblayers.conf 생성됨 // 다만 release 와 comminity 가 setup하는 방법은 다름 $ vi conf/bblayers.conf // 상위의 show-layers 부분을 확인 BBLAYERS = " \ ${BSPDIR}/sources/poky/meta \ ${BSPDIR}/sources/poky/meta-yocto \ \ ${BSPDIR}/sources/meta-openembedded/meta-oe \ ${BSPDIR}/sources/meta-openembedded/meta-multimedia \ \ ${BSPDIR}/sources/meta-fsl-arm \ ${BSPDIR}/sources/meta-fsl-arm-extra \ ${BSPDIR}/sources/meta-fsl-demos \
Freescale의 p1020rdb 예제로 참고만하자
http://forum.falinux.com/zbxe/index.php?document_srl=828316&mid=lecture_tip