-
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 /devvmware를 사용하였기 때문에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 card에 u-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