분류

2018년 3월 15일 목요일

am335x sitara sdk 사용법

am335x  하드웨어에 맞는 kernel을 넣기 위해 여러모로 알아보고 sdk를 해봤는데 3.1부터 지원을 하지만 이상하게 kernel 3.2버전만 정상 지원을 하지 않습니다. 따라서 3.2버전을 어디에서 지원을 하나 검색해보니 sitara sdk 6이라는 이제는 지원하지 않는 버전에서 설치할 수 있음을 알게 되었습니다. processor sdk linux 3.2가 kernel 3.2인줄 알았던 것이 시간을 버리게 된 이유인 것 같습니다.

장비가 오래 사용되다 보니 문서 관리에 좀 허점이 생긴 것 같습니다.

설치하기에 앞서 sitara linux sdk 6.0의 기능 중 일부는 ubuntu 10.04과 12.04버전에서만 사용할 수 있습니다. ubuntu 버전을 변경해야 할 수도 있습니다. (실제로 구동해보니 ubuntu12 에서는 아무 오류 없이 지나가지만, 14에선 오류 수정하다 날 샙니다.)

ubuntu 12.04 버전은 http://releases.ubuntu.com/12.04/ 이 링크에서 확인하실 수 있습니다. #vmware에 ubuntu 설치 (vmware-workstation 12)

필요한 프로그램 설치 

라이브러리 
$ sudo apt-get update 
$ sudo apt-get upgrade

$ sudo apt-get install xinetd tftpd nfs-kernel-server minicom build-essential libncurses5-dev uboot-mkimage autoconf automake libqt3-mt-dev openssh-server


※ ubuntu 8.0 사용 시 설치해야 하는 항목 (os를 초기화 했다면 설치하는 것도 나쁘지 않습니다. )
$ sudo apt-get install apt-src \ gawk \ gzip \ perl \ autoconf \ m4 \ automake \ libtool \ libncurses5-dev \ gettext \ gperf \ dejagnu \ expect \ tcl \ autogen \ guile-1.6 \ flex \ flip \ bison \ tofrodos \ texinfo \ g++ \ gcc-multilib \ mingw32 \ mingw32-binutils \ mingw32-runtime \ libgmp3-dev \ libmpfr-dev \ debhelper \ texlive \ texlive-extra-utils

※ 64bit user라면 추가 해야 할 라이브러리  (32bit 호환을 위한 라이브러리) 
$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386

크로스 컴파일 툴체인 
방법1.
툴체인을 확인하시고 없다면 설치해주세요 툴체인은 linaro toolchain을 권장합니다. 
$ arm-linux-gnueabihf-gcc --version 

$ sudo apt-get install gcc-4.7-arm-linux-gnueabihf 
※ 위 명령이 안 될 경우 deb파일을 추가해야 합니다. 
$ sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu dapper main restricted" 
$ sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu unstable main restricted" 


방법2.
직접 다운로드 
https://releases.linaro.org/archive/13.04/components/toolchain/binaries/
압축해제 
$ tar -xvf gcc-linaro-arm-linux-gnueabihf-<version> 
크로스컴파일 변수 등록
$ export CROSS_COMPILE=<설치 경로>/arm-linux-gnueabihf- 

sitara linux 6.0의 릴리즈 노트입니다.
http://processors.wiki.ti.com/index.php/Sitara_SDK_6.00.00_Release_Notes#Installation_and_Usage

해당 자료를 다운로드 할 수 있는 곳의 링크입니다.
http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/06_00_00_00/index_FDS.html

우선 ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin 파일을 linux에 다운로드 하고 install을 진행합니다.

$ chmod +x ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin
$ ./ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin

※ 버전에 따라서는 console 모드 install을 해야 할 수 있습니다. 
($ ./ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin --mode console)

설치 방법은 별다른 거 없이 next를 누르다가 설치 위치만 변경해주시면 가볍게 됩니다.
ubuntu 14.04 이상의 버전에서 사용할 경우 경로 명칭에서 <ti-sdk-am335x-evm-06.00.00.00> 부분을 수정하면 정상 sdk가 자신의 설치 위치를 찾지 못하는 오류가 발생합니다.

setup 스크립트 수행 : console을 통한 NFS 와 TFTP를 통한 부팅 및 디버깅 지원 도구

※ setup을 수행하기에 앞서 usb로 am335x를 연결한 후 전원을 눌러 부팅 후 usb otg 케이블을 통해, linux 가 설치된 pc나 vm에 연결해줘야 합니다. 

SDK 설치 폴더로 이동하여 스크립트를 수행해줍니다. 

$ ./setup.sh

※ 설치 폴더로 이동하여 setup.sh 파일을 실행합니다. ubuntu 버전이 다를 경우 아래와 같은 메시지가 나옵니다. 

오류 메시지 및 처리 법
-------------------------------------------------------------------------------- 
Verifying Linux host distribution Unsupported host machine, only Ubuntu 10.04 LTS and Ubuntu 12.04 LTS are supported Failed setup, aborting.. temi@ubuntu:~/texas-am335x/ti-sdk-am335x-evm-06.00.00.00$ ./setup.sh
-------------------------------------------------------------------------------

하위 폴더의 파일 setup-host-check.sh를 고쳐줍니다. 42줄~ 46줄까지 주석 처리 하면 됩니다. 

$ vim bin/setup-host-check.sh 


프로그램이 시작되면 필요한 패키지의 설치를 수행합니다.

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

setup package script

This script will make sure you have the proper host support packages installed

This script requires administrator priviliges (sudo access) if packages are to be installed.

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

중간에 추가 설치가 필요한 패키지가 있으면 이런 식으로 질문이 나오니 그냥 Y를 눌러주세요 

-------------------------------------------------------------------------------
System requires packages  minicom to be installed
Installation requires you to have administrator priviliges (sudo access) 
on your host. Do you have administrator privilieges?
Type 'y' to continue or 'n' to exit the installation: y

몇 차례 엔터와 y를 누르다 보면 설정이 끝납니다. (중간에 NFS와 TFTP 등 주요 경로 설정이 있는데 그냥 기본 값으로 엔터 치고 넘어갔습니다. ) 필요한 설정이 있는데 지나쳤을 경우 setup.sh를 다시 실행하면 됩니다. (예를 들자면 host ip 의 경우 랜 카드가 여러 개 있으면 잘못될 수 있습니다.) 

위 해당 설정이 완료 될 경우 USB serial을 통해 보드에 직접 접속할 수 있으며 am335x 보드에서 네트웍을 통한 부팅 

SD 카드 생성하기

프로그램이 설치된 폴더 내용 중 가장 기초적으로 사용할 수 있는 명령어 세트가 있습니다. 그중 sd카드를 만드는 부분이 개인적으로 상당히 중요한 것 같습니다. sd카드를 만드는 방법은 3가지가 있습니다. 하나는 기본 제공되는 sd카드를 만드는 것이고, 다른 하나는 개별 이미지를 생성해 sd카드에 넣는 것, 마지막은 파티션 압축 파일을 이용해 만드는 것 입니다.

프로그램 설치 하위 폴더에 bin 안에 있는 create-sdcard 파일을 실행합니다. 
※ 기본 이미지 파일은 4gb 정도의 디스크 용량이 필요합니다. (sudo 를 사용하여 실행해야 합니다. )
$ sudo bin/create-sdcard.sh 

위 파일을 실행시키면 수행할 명령을 아래와 같이 출력합니다. 

- 사용할 디스크를 선택 
############################################################
Availible Drives to write images to: 
#  major   minor    size   name 
1:   8       16    3872256 sdb
2:   8       32      72261 sdc
Enter Device Number or n to exit: 1 

- 파티션 개수 선택 
##################################################################
Select 2 partitions if only need boot and rootfs (most users)
Select 3 partitions if need SDK & CCS on SD card.  This is usually used
        by device manufacturers with access to partition tarballs.
****WARNING**** continuing will erase all data on sdb
##################################################################
파티션 생성은 2개의 일반적인 파티션 구성과 3개의 boot, sdk, ccs 영역으로 나누는 방법 중 하나를 선택해야 합니다. CCS는 Code Composer Studio 의 약자로 코드 개발 환경 유틸리티를 말합니다. (Eclipse와 비슷합니다. 생긴 것도 비슷합니다.)

필요에 따라 선택을 하면 다음은 sd카드 파티셔닝을 자동 진행합니다.

이미지 종류 선택 
이 부분에서 개별 빌드한 커널 이미지를 선택할 수 있습니다. 1번은 기본 제공되는 이미지와 sdk, 2번은 사용자 정의 부팅 정보나, rootfs 경로를 입력하여 사용할 수 있습니다.
##################################################################
Choose file path to install from 
 1 ) Install pre-built images from SDK 
 2 ) Enter in custom boot and rootfs file paths ##################################################################

Yocto로 SD카드 이미지 빌드하기 

rootfs를 빌드하기 위해서는 별도로 Yocto를 사용해야 합니다. sdk에서는 기본 이미지와, 개발 도구 까지 제공하며, linux를 직접 빌드하기 위한 도구가 조금 부족한 것 인지, 학습이 필요한 것인지는 아직 모르겠습니다. (문서에 안 나와있어요)

Yocto 설치하기 

소스 파일 다운로드
우선 github.를 통해 tisdk를 다운로드 받습니다.
$ git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk

환경 설정 
※ ubuntu 12 이상 버전에서는 오류가 발생할 수 있습니다. 
다운로드 받은 폴더 내에선 사용하려는 sdk의 버전에 따라 환경 설정을 진행할 수 있는 도구가 있습니다. Yocto build에 사용할 config 설정을 진행하려면 config 명령을 통해 지원되는 환경 설정 목록을 확인하세요 .
$ cd tisdk 
$ find -name *config.txt
./configs/processor-sdk/processor-sdk-04.01.00.06-config.txt
./configs/processor-sdk/processor-sdk-02.00.02.11-config.txt
./configs/arago-dora-config.txt
./configs/arago-krogoth-config.txt
./configs/arago-rocko-config.txt
./configs/amsdk/amsdk-05.06.00.00-config.txt
./configs/amsdk/amsdk-08.00.00.00-config.txt
./configs/amsdk/amsdk-07.00.00.00-config.txt
./configs/amsdk/amsdk-05.07.00.00-config.txt
./configs/amsdk/amsdk-06.00.00.00-config.txt
./configs/amsdk/amsdk-07.01.00.00-config.txt


저는 목표 보드는 am33x 계열이고, 대상 sdk는 06.00입니다. 따라서 amsdk-06.00.00.00-config.txt 를 환경 설정 파일로 사용하겠습니다. config 폴더 내의 config.text 파일은 git의 branch 같은 거라고 생각 하시면 될 것 같습니다. (실제로 연관된 브랜치 목록을 다운로드 합니다. ) 
$ ./oe-layertool-setup.sh -f configs/amsdk/amsdk-06.00.00.00-config.txt 
$ cd build  주의
※ 이 단계에서 sdk 선택을 잘못했을 경우 소스 파일 소스 파일 다운로드부터 다시 진행해야 합니다. 그렇지 않을 경우 Yocto에서 알 수 없는 오류나 meta-layer를 찾지 못하는 오류가 발생합니다.  

지원 보드 목록 확인

대상 보드가 am335x 계열이기 때문에 am 계열의 지원 보드가 있는지 확인합니다.
조회 된 목록으로 봐서는 source/meta-ti에 지원 보드 목록이 들어있는 것 같습니다.
$ find ../sources/ -name *am*.conf 
./sources/meta-ti/conf/machine/am335x-hs-evm.conf
./sources/meta-ti/conf/machine/am57xx-hs-evm.conf
./sources/meta-ti/conf/machine/am437x-hs-evm.conf
./sources/meta-ti/conf/machine/am335x-evm.conf
./sources/meta-ti/conf/machine/am437x-evm.conf
./sources/meta-ti/conf/machine/am3517-evm.conf
./sources/meta-ti/conf/machine/am57xx-evm.conf
./sources/meta-ti/conf/machine/am37x-evm.conf
./sources/oe-core/meta-skeleton/conf/multilib-example2.conf
./sources/oe-core/meta-skeleton/conf/multilib-example.conf

이미지 파일 목록 확인

빌드 할 수 있는 이미지의 목록은 메타 디렉토리들에서 찾아볼 수 있습니다. meta 디렉토리 중 제가 사용할 부분은 meta-arago 입니다. 다른 이미지가 필요하시다면 source 폴더 하위에 meta로 시작하는 폴더를 확인해보시면 됩니다.

$ find ../sources/meta-arago/ -name *image*.bb
../sources/meta-arago/meta-arago-extras/recipes-core/matrix/matrix-gui-apps-images_2.0.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/arago-amsdk-image.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/arago-base-image.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/arago-console-image.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/arago-core-tisdk-image.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/arago-base-tisdk-image.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-rootfs-image.bb
../sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-server-rootfs-image.bb

이미지 파일 빌드하기

이미지를 빌드하기 위해서는 우선 크로스 툴 체인이 설치 되어 있어야 합니다.  개별적으로 설치한 크로스 툴 체인에 대한 경로를 지정하시면 됩니다.
ti.com 패키지를 호스팅 하는 일반적 위치 중 하나가 해제되었다고 합니다. 이로 인해 현재 릴리즈와 과거 릴리즈에 대한 패치 실패가 발생하고 있습니다. TI 미러에서 패키지 구성을 얻기 위해 추가 절차를 수행해야 합니다. 
$ cat >> ./conf/local.conf << 'EOF'

TI_MIRROR = "http://software-dl.ti.com/processor-sdk-mirror/sources/"
MIRRORS += " \
bzr://.*/.* ${TI_MIRROR} \n \
cvs://.*/.* ${TI_MIRROR} \n \
git://.*/.* ${TI_MIRROR} \n \
gitsm://.*/.* ${TI_MIRROR} \n \
hg://.*/.* ${TI_MIRROR} \n \
osc://.*/.* ${TI_MIRROR} \n \
p4://.*/.* ${TI_MIRROR} \n \
npm://.*/.* ${TI_MIRROR} \n \
ftp://.*/.* ${TI_MIRROR} \n \
https?$://.*/.* ${TI_MIRROR} \n \
svn://.*/.* ${TI_MIRROR} \n \
"
EOF
$ . conf/setenv 
$ export PATH=$HOME/gcc/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/:$PATH 
$ MACHINE=am335x-evm bitbake arago-amsdk-image  // 이미지 빌드 시 오류 발생 5시간동안 진행만 하고 실패합니다. 
# MACHINE=am335x-evm bitbake arago-base-image
※ arago-base-image를 bitbake 할 경우 처음 build 시간은 램3gb 코어3개 사용 시 1시간 정도 입니다. 예상 용량은 약 8GB 입니다. 

빌드 결과 
build가 완료되면 <build 위치>/arago-tmp-external-linaro-toolchain/deploy/images 에서 이미지 파일을 확인할 수 있습니다.
arago-base-image-am335x-evm-20180314080248.rootfs.tar.gz
arago-base-image-am335x-evm-20180314080248.rootfs.ubi
arago-base-image-am335x-evm-20180314080248.rootfs.ubifs
arago-base-image-am335x-evm.tar.gz
arago-base-image-am335x-evm.ubi
MLO
MLO-am335x-evm

MLO-am335x-evm-2013.01.01-r6+gitr1+540aa6fbb0c9274bda598f7e8819ed28259cad6b-arago1 

modules-3.2.0-r19h+gitr1+d5720d33bc7c434f9a023dbb62c795538f976b7a-am335x-evm.tgz 
README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
u-boot-am335x-evm-2013.01.01-r6+gitr1+540aa6fbb0c9274bda598f7e8819ed28259cad6b-arago1.img
u-boot-am335x-evm.img
u-boot.img
uImage


uImage-3.2-r19h+gitr1+d5720d33bc7c434f9a023dbb62c795538f976b7a-am335x-evm-20180314080248.bin

uImage-am335x-evm.bin

배포
1) sdk스크립트 사용 
빌드 된 이미지를 배포하는 과정입니다.우선 sdk 설치 폴더에서 create_sdcard.sh 파일을 실행합니다. 파티셔닝 까지 종료 한 후 아래 화면이 나오면 2번을 눌러 이미지 경로 입력을 수행합니다.
##################################################################
Choose file path to install from

1 ) Install pre-built images from SDK
2 ) Enter in custom boot and rootfs file paths
#################################################################
- 부트 파티션 입력
MLO, u-boot, uImage 파일이 있는 곳을 입력하면 됩니다. 입력하고 나면 파일 목록을 보여주며 맞는지 확인을 입력합니다.
##################################################################
  For Boot partition
  If files are located in Tarball write complete path including the file name.
      e.x. $:  /home/user/MyCustomTars/boot.tar.gz
  If files are located in a directory write the directory path
      e.x. $: /ti-sdk/board-support/prebuilt-images/
  and the beginning of the files should be labeled with MLO, u-boot, uImage
      i.e.   test_MLO_image must be labeled as MLO_test_image
  NOTE: Not all platforms will have an MLO file and this file can
        be ignored for platforms that do not support an MLO

##################################################################
Enter path for Boot Partition : <build위치>/arago-tmp-external-linaro-toolchain/deploy/images$ 
- rootfs 입력
이 부분에서는 rootfs.tar.gz 파일을 이름을 포함한 경로를 입력합니다.
##################################################################
   For Rootfs partition
   If files are located in Tarball write complete path including the file name.
      e.x. $:  /home/user/MyCustomTars/rootfs.tar.gz
  If files are located in a directory write the directory path
      e.x. $: /ti-sdk/targetNFS/
##################################################################
Enter path for Rootfs Partition : <빌드위치>/arago-tmp-external-linaro-toolchain/deploy/images/arago-base-image-am335x-evm-20180314080248.rootfs.tar.gz 
※ 현재 이 부분에서는 빌드위치 중 u-boot 이미지를 제대로 인식하지 못하는 오류가 발생하여 배포 용 sdk 설치 폴더의 prebuilt-images에 복제해서 사용하고 있습니다. 차후 공부해서 업데이트 하도록 하겠습니다.

2) 수동으로 배포

boot 파티션 배포
$ sudo dd if=u-boot.img of=/dev/sdb1 bs=512 seek=2
rootfs 배포 


오류 해결  
1. 툴체인 버전이 맞지 않는 경우는 툴체인을 변경하여 해결하면 됩니다. 
ERROR: Execution of event handler 'external_linaro_toolchain_version_handler' failed Traceback (most recent call last): File "external_linaro_toolchain_version_handler(e)", line 12, in external_linaro_toolchain_version_handler(e=) File "external-linaro-toolchain-versions.inc", line 4, in elt_get_gdb_version(d=)

2. tar 1.27.1버전의 오류 package.bbclass 파일을 열어 tar에 옵션으로 사용된  -ps 를 -p로 변경하면 됩니다. (이 오류가 날 경우 그냥 ubuntu 12버전으로 가는 게 정신 건강에 이롭습니다.)
예 (https://patchwork.openembedded.org/patch/59709/)
ERROR: Function failed: sysroot_stage_all (see /home/temi/texas-am335x/tisdk/build/arago-tmp-external-linaro-toolchain/work/x86_64-linux/quilt-native-0.60-r0/temp/log.do_populate_sysroot.4739 for further information)

3. ubuntu 64bit 설치로 인한 32bit 라이브러리 사용 오류 
error while loading shared libraries: libstdc++.so.5: cannot open shared object file


32bit 라이브러리 설치로 해결 
$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386

위의 설정을 변경했는데도 불구하고 기타 오류가 꾸준히 발생한다면 ubuntu12 버전을 사용하길 권장합니다. 혹은 sdk 버전을 상위 버전으로 수행 시 괜찮아진다고 합니다.

busybox 환경 변경 (linux의 software 환경 설정과 default utility 설정)

SDK 버전에서는 busybox를 최소화 버전으로 하면서 몇 가지 실행 명령이 수행되지 않습니다. 따라서 비즈박스의 환경을 바꿀 필요가 종종 있습니다. (top 명령과 sort 명령의 옵션이 수행되지 않습니다. ) 주의할 점은 일부 환경 설정 파일은 잘못 설정 시 build에 영향을 미치게 됩니다. .conf 파일을 수시로 다른 이름으로 백업하며 차분히 build해야 합니다.
MACHINE=am335x-evm  bitbake -c menuconfig busybox 
MACHINE=am335x-evm  bitbake busybox 
MACHINE=am335x-evm  bitbake arago-base-image 

설정 파일로 직접 고치려면 

$ gedit ../sources/meta-arago/meta-arago-distro/recipes-core/busybox/busybox/defconfig 

kernel 환경 변경 (linux의 hardware 환경 설정과 driver 설정)
$ MACHINE=am335x-evm bitbake arago-base-image -c cleanall
$ MACHINE=am335x-evm bitbake -c menuconfig
$ MACHINE=am335x-evm bitbake 
arago-base-image 
※ busybox 만 단독으로 build 할 경우 busybox install을 통해 생성 된 파일 중 busybox 자체만 복제 하더라도 정상적인 사용이 가능합니다. busybox의 경우 시스템관리 기능이 상당 부분 포함되어 있어 다른 환경 설정 파일을 복제 하게 될 경우 부팅 불가 상태에 빠지게 됩니다.

댓글 없음:

댓글 쓰기