ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • arndale 세팅작업
    embedded system 2015. 1. 13. 15:35

    15.01.12 - 15.01.15

    야호 커널 컴파일중 

    막간을 이용하여 삽질 정리

    환경 세팅을 위해 따라하기 사이트 : http://www.arndaleboard.org/wiki/index.php/WiKi#Installing_the_JDK


    1.설치한 dependence


    git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev

    libc6-dev

    lib32ncurses5-dev

    ia32-libs x

    x11proto-core-dev libx11-dev

    libreadline6-dev instead of lib32readline5-dev

    lib32z-dev

    libgl1-mesa-dev also libgl1-mesa-glx

    g++-multilib

    mingw32

    tofrodos

    python-markdown

    libxml2-utils

    xsltproc


    하나씩 apt-get install 로 설치해주었다. 


    2.Configuring USB Access


    /etc/udev/rules.d/51-android.rules 파일 만들어서 그대로 따라해주면 됨.



    3. cross compile 설치하기


    예전에 하던 방법으로 했음. 

    http://taghof.github.io/Navigation-for-Robots-with-WIFI-and-CV/downloads/codesetup.sh

    에서 codesetup.sh 파일 받아서 설치하면 설치 완료.


     /usr/local/bin/codesourcery-arm-2009q3.sh 

    위의 스크립트를 실행시켜면 arm compile모드로 변함. 

    exit명령어로 빠져나올 수 있음.


     높은 버전 원하면

    http://sourcery.mentor.com/public/gnu_toolchain/arm-none-eabi/

    에서 다운받으면 된다.

    arm compile시 에는 makefile

    nano .bashrc

    export PATH=$PATH:/home/hong/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_EABI/bin


    4. JDK 설치


    생각보다 애먹었던 곳.

    괜히 1.7깔았다가 1.6만되서 삭제함.

    자바 uninstall in ubuntu : http://askubuntu.com/questions/84483/how-to-completely-uninstall-java


    apt-get install openjdk-6-jdk 로 간편히 가려고 했으나 나중에 버전 안맞는다고 에러띄움. ㅠㅠ

    또 다시 java 삭제


    결국 wiki사이트에 있는대로 온순히 따라함.

    old java 6 다운받는 사이트 : http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jre-6u33-oth-JPR

    파일받고 그대로 따라하면 됨.


    5. minicom설치


    minicom설치는 당연히 할줄안다고 생각했는지 설명이 없다.

    결국 2년전 운영체제 실습ppt에서 찾아냄..

    minicom이란 텍스트 기반의 개발보드 컨트롤 프로그램으로, serial port를 통해 보드와 통신한다.


    sudo apt-get install minicom

    시리얼 포트 연결 확인 ls /dev
    vmware를 사용하였기 때문에 



    ttyUSB0이 있으면 됨.


    sudo minicom -s

     로 minicom 설정으로 들어감.




    Serial Port Setup항목에서 A를 선택하여 /dev/ttyUSB0으로 변경해줌.

    그 외의 설정까지 위의 그림과 같이 설정함.


    sudo minicom

    하면 미니컴 실행완료.




    6. repo 설치


    안드로이드는 수많은 git 프로젝트를 묶어서 하나의 프로젝트로 관리하고 있다.

    이를 위해 구글에서 python 기반의 새로운 관리 툴이 repo이다.


    repo를 통해 커널, 안드로이드 파일시스템을 설치한다.

     

    초기화 하고, 파일다운 받음.

    repo init -u git://git.insignal.co.kr/samsung/exynos/android/manifest.git b jb

    repo sync

    *JB와 JB-MR1은 완전히 틀린 버전임. 둘 중 하나만 해야한다.


    troble shooting

     repo 실행 시 에러나는 경우는 주소가 바뀌었으니 아래와 같이 변경 후 재 설치

    $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

    $ chmod a+x ~/bin/repo



    7. reop client 초기화 및 파일 다운 받기


    꼬 ㅐ삽질함

    1. 안드로이드 파일 다운받는데 시간 개오래 걸림. 

    2. 중간에 하드 디스크 용량부족문제 in ubuntu

    vmware 용량 늘렸을 경우 세팅 방법 : http://www.youtube.com/watch?v=cDgUwWkvuIY

    3. 메모리 부족 문제 in ubuntu

    vmware 메모리 2G로 늘려주고 재부팅.




    8. Download proprietary for Eyxnos5250


    insignal 사이트에 가입해서 2개의 파일 얻어와야 함.

    근데 blacklist라고 가입이 안됨.

    그래서 그냥 무시 진행했더니 kernel 빌드가 안됨 ㅠㅠ

    결국 다른분께 파일 받아서 완료.. 이거 안됨 걍 망 ㅋ


    커널 flash까지 다 하고난 뒤에 새로운 문제 발견

    android코드 jb로 받았는데, proprietary는 jb-mr1버전임.. 망ㅋ

    $rm -rf WORKING_DIRECTORY  로 33G 날리고, 새로운마음으로 다시 시작..하하 goto 7



    9. 시스템 초기화, cache

    그냥 따라해주면 됨.


    10. boot loader , kernel


    u-boot컴파일시

    /usr/local/bin/codesourcery-arm-2009q3.sh

    로 cross-compile모드 가능하도록 한다.

    혹은

    Makefile수정해도 됨.

    vi u-boot/Makefile

    export CROSS_COMPILE arm-none-eabi-

    export ARCH=arm



    kernel 컴파일시 Makefile에서 cross-compiler 경로 지정해주었음.

    vi kernel/Makefile

    CROSS_COMPILE ?= /usr/local/codesourcery/arm-2009q3/bin/arm-none-linux-gnueabi-gcc


    커널 컴파일시

    $ source ./arndale_envsetup.sh

    $ kernel_make distclean

    $ kernel_make arndale_android_defconfig

    $ kernel_make -j16


    source ./arndale_envsetup.sh 를 다시한번 입력해주어야 kernel_make 명령을 인식할 수 있다.



    11. Android building


    안드로이드 컴파일에는 시간이 어마어마하게 소요됨.

    중간중간 dependency 제대로 설치안해서 계속 다시 빌드


    안드로이드 컴파일

    $ make kernel-binaries && rm f $OUT/system.img

    $ make j4



    trouble shooting #1

    오랜시간 컴파일하다가 에러.. 재컴파일함

    $sudo apt-get install libswitch-perl


    trouble shooting #2

    [Error] /bin/bash: mkimage: command not found 


    $sudo apt-get install uboot-mkimage

    가 없다 그래서

    $sudo apt-get install u-boot-tools


    컴파일 완료하면 u-boot 폴더에 u-boot.bin, 

    kernel/arch/arm/boot 폴더에 zImage, 

    out/target/product/arndale폴더에는 system.img 와 ramdisk.img.ub

    가 각각 생성된다.


    12. fastboot, adb building


    fastboot과 adb 를 설치한다.

    이후 u-boot, kernel, android 올리는데 fastboot을 사용.




    13. SD/MMC boot

    뭐하라는 소린가 했더니

    해당 파일 위치가서 내용 수정해주면 된다.



    14. 보드 부팅


    빠른시간내에 enter를 눌러주어야 함..


    # setenv bootdelay 10

    # save

    으로 변경가능함..


    eMMC로 부팅하는게 우선적으로 생각하지만, 고장날 경우 SD/MMC로 부팅할 수 있다.



    15. fastboot


    이미지 flashing을 위해 사용한다.

    찾아보니 컴퓨터와 기기가 연결되어 있으면 , cmd로 기기에 명령을 내릴 수 있는 명령어로 보인다.

    실제 terminal 2개띄어두고, 1개의 terminal에서는 fastboot으로 보드에 명령내리고, 1개의 terminal은 minicom띄워서 fastboot 명령후, 보드상태 확인했다.


     fastboot으로 u-boot올린장면 (위)


    이후 bootloader와 그 외 bootable image(bl1, bl2, tzsw)를 올린 후,

    kernel, android를 올린다.


    16. flash the bootloader, kernel, Android



    sd cardu-boot, kernel , android올리기

    sudo fastboot flash bootloader /home/hong/WORKING_DIRECTORY2/u-boot/u-boot.bin

    sudo fastboot flash kernel /home/hong/WORKING_DIRECTORY2/kernel/arch/arm/boot/zImage

    sudo fastboot flash ramdisk /home/hong/WORKING_DIRECTORY2/out/target/product/arndale/ramdisk.img.ub

    sudo fastboot flash system /home/hong/WORKING_DIRECTORY2/out/target/product/arndale/system.img

    sudo fastboot erase userdata

    sudo fastboot erase cache

    sudo fastboot reboot




    16일 출근하니 mmc상황

    [Partition table on MoviNAND]                                                   

    ptn 0 name='fwbl1' start=0x2 len=N/A (use hard-coded info. (cmd: movi))         

    ptn 1 name='bl2' start=N/A len=N/A (use hard-coded info. (cmd: movi))           

    ptn 2 name='bootloader' start=N/A len=N/A (use hard-coded info. (cmd: movi))    

    ptn 3 name='tzsw' start=N/A len=N/A (use hard-coded info. (cmd: movi))          

    ptn 4 name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi))        

    ptn 5 name='ramdisk' start=N/A len=0x0(~27262976KB) (use hard-coded info. (cmd:)

    ptn 6 name='system' start=0x2 len=0x0(~560037888KB)                             

    ptn 7 name='userdata' start=0x2 len=0x0(~2090041344KB)                          

    ptn 8 name='cache' start=0x2 len=0x0(~590020608KB)                              

    ptn 9 name='fat' start=0x2 len=0x0(~637009920KB)


    bootloader랑 다 어디갔음 ㅅㅂ....종종이런일이 일어나나요?ㅠㅠ mmc가 언제부터 휘발성?ㅠㅠ 내가 뭐잘못했나

    'embedded system' 카테고리의 다른 글

    ADB, Fastboot  (0) 2015.01.15
    RAM, Flash memory  (0) 2015.01.15
    embedded linux Booting  (0) 2015.01.07
    임베디드 개발 환경  (0) 2015.01.07
    Raspberry Pi GIPO  (0) 2014.11.08
Designed by Tistory.