1 Porting Tizen on ODROID (1/2) Compile kernel
Index 2 Hardware check Configure platform Bootloader Building a kernel Building a Tizen platform Platform image flash Platform configuration Trouble shooting
3 Hardware check
하드웨어구성 & 연결 4 SD 카드리더기 U-ART SD 카드 오드로이드 U3 USB HDMI 케이블 AC 어댑터 AC 어댑터 Odroid VU 터치연결 WiFI 모듈 or Bluetooth 모듈
하드웨어구성 & 연결 5 전원이들어오는지확인
SD 카드확인 6 SD 카드리더기를통해, SD 카드내파일확인
UART 드라이버설치 7 UART 연결을위한드라이버설치 UART 인터페이스드라이버 CP210xVCPInstaller_x64.exe
Putty 를통한 UART 연결 8 Putty SD 카드내의 putty.exe 실행 Putty 설정 장치관리자 -> 포트에서포트번호확인
동작테스트 9 1. 전원 / HDMI 분리 2. SD 카드장착 3. 전원연결후 HDMI 연결
10 파티션구성
파티션정보 11 타이젠파티션구성 Mmcblk0p1 ~ mmcblk0p7 까지 7 개파티션 일반적으로파티션정보를저장하기위해사용되는 MBR(Master Boot Record) 는 4 개의 Primary partition 만생성가능 Partition Mount Point Option Description /dev/mmcblk0p1 /csa Rw Configuration Saved Area /dev/mmcblk0p2 /boot Ro 커널이미지 /dev/mmcblk0p3 - - 예약파티션 /dev/mmcblk0p4 /mnt/csc Rw Customer Software Configuration, 기본언어, 시간정보등 /dev/mmcblk0p5 / Ro 플랫폼 /dev/mmcblk0p6 /opt Rw 데이터, 어플리케이션, 앱라이브러리등 /dev/mmcblk0p7 /opt/media rw 유저공간
Vmware 와 SD 카드리더연결 12 PC 에 SD 카드리더기연결
파티션설정 13 Gparted 등의프로그램을통해 GUI 기반파티션설정 gparted 프로그램설치 sudo apt-get install gparted 처음 0~2mb 를제외하고파티션생성 부트로더및 MBR 을위한공간
파티션설정 14 기존파티션삭제
파티션설정 15 Uboot 를위한공간확보
16 부트로더
U-boot bootloader 17 부팅과정 Rom(In SOC) -> bl1 -> bl2(->uboot.bin)
u-boot-2015.01-18.4.armv7l.rpm 추가적인바이너리다운로드 18 U-boot 파일구성 하드커널에서제공하는서명된파일 삼성에서제공하는 Tizen 용 U-boot 핵심바이너리 하드커널다운로드 https://github.com/hardkernel/u-boot/raw/odroid-v2010.12/sd_fuse/bl1.hardkernel https://github.com/hardkernel/u-boot/raw/odroid-v2010.12/sd_fuse/bl2.hardkernel https://github.com/hardkernel/u-boot/raw/odroid-v2010.12/sd_fuse/tzsw.hardkernel https://github.com/hardkernel/u-boot/raw/odroid-v2010.12/sd_fuse/sd_fusing.sh 타이젠다운로드 http://download.tizen.org/live/tizen:/common/arm-wayland/armv7l/u-boot-2015.01-18.4.armv7l.rpm
Fusing 19 SD 카드와리더기를연결후디바이스노드확인 ls /dev/sd* 일반적으로하드디스크 (/dev/sda*) 다음인 sdb 로설정됨 쉘스크립트실행권한부여 chmod +x sd_fusing.sh Fusing sudo./sd_fusing.sh /dev/sdb
Bootloader 동작확인 20 U-boot Kernel Rootfs
21 커널빌드
기본환경설정 22 커널컴파일을위한설정 필수라이브러리설치 Terminal에서다음과같은명령어입력 sudo apt-get install libncurses5-dev build-essential
커널다운로드 23 Gerrit (https://review.tizen.org/gerrit/#/) 에서 kernel 확인
커널다운로드 24 Kernel 소스코드다운로드 git clone tizen:platform/kernel/linux-3.10 Branch 설정 List 확인 git branch a -> 대상소스파일이있는디렉토리에서실행 Tizen barnch 로체크 git checkout tizen
크로스컴파일설정 25 Cross Tool Chain X86 환경에서 Arm 아키텍처컴파일가능 arm-linux-gnueabi-gcc-4.5.tar.gz 파일사용 사용자가원하는위치에압축해제 Ex) /home/ USER_NAME /tool/arm-linux-gnueabi-gcc-4.5 64bit 시스템과의호환성을위해관련라이브러리설치 Sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 zlib1g:i386
크로스컴파일설정 26 크로스컴파일설정 (2 가지방법 ) 1. 수동설정 컴파일시마다쉘에서해당값 export 수행 export ARCH=arm export CROSS_COMPILE=/ Tool chain 위치 /arm-linux-gnueabi- gcc-4.5/bin/arm-linux-gnueabi- 2. Makefile 수정 컴파일에관한각종환경설정이나빌드옵션 커널디렉토리에서 gedit Makefile 를통한설정파일수정 파일내에서 ARCH, CROSS_COMPILE 항목을아래와같이수정
설정파일적용 27 Defconfig 커널설정값이저장되어있는 config 파일./arch/arm/configs/ 에존재 일반적인 tizen 기기용설정파일은 tizen_defconfig Odroid 용 defconfig 적용 make tizen_odroid_defconfig
커널설정 28 Make menuconfig 를사용하여커널설정변경
CPU Governor 변경 29 Tizen configuration 파일에서기본 CPU governo 는 performance 로오드로이드환경에서는온도가너무높아지는문제발생 CPU Power Management -> CPU Frequency scaling -> Default CPUFreq governor 선택 Performance 에서 ondemand 로변경
WiFi 지원 30 Odroid 의 WiFi 모듈인 RTL8192 을지원하도록수정 Networking support -> Wireless 80211 protocol 지원 Device Driver -> Network device support -> Wireless LAN 무선랜드라이버설정
Bluetooth 지원 31 Bluetooth 를 uart 인터페이스로사용할수있도록설정 Networking support > Bluetooth subsystem support Bluetooth device drivers
Bluetooth 지원 2 32 Rfkill 활성화 리눅스커널의서브시스템으로컴퓨터의무선장치들에대해확인, 활성화, 비활성화할수있도록해주는인터페이스를제공 Networking support
GPU Driver 33 Tizen DDK 버전과 mali GPU driver 간의버전차이발생 현재 Tizen linux kernel 3.10 의최근 commit 에서 r4p0 버전이 default 로변경됨 하지만 Tizen 2.2 버전용 DDK(Open GL 가속 ) 는 r3p2 버전에 dependency 를가짐
Change Default GPU Driver [1/3] 34 기본 GPU 드라이버버전번경
Change Default GPU Driver [2/3] -Graphics support 35 -ARM GPU configuration -Mali-400 support
Change Default GPU Driver [3/3] -Select MALI Ver 36 1 R4P0 버전에서 R3P2 버전으로변경 2
커널빌드 37 zimage 생성 sudo make zimage j 4 -j 4 는커널빌드시사용할스레드의개수 일반적으로빌드하는컴퓨터스레드개수의 1.5 배정도로설정
디바이스트리생성 38 디바이스트리 하드웨어를서술하기위한데이터구조와언어 부팅단계에서, 플랫폼에적합한하드웨어장치들을자동적으로읽어초기화수행 각디바이스를노드형태로관리 파일구성 dtsi : 플랫폼 common 요소 dts : 특정보드 specific dtb : 바이너리파일
커널빌드 39 Device Tree 생성 make exynos4412-odroidu3.dtb 최종 ziamge 생성 cat arch/arm/boot/zimage arch/arm/boot/dts/exynos4412- odroidu3.dtb >./zimage 커널의 root 디렉토리에 zimage 생성
커널이미지적재 40 커널이미지를 SD 카드의첫번쨰파티션 (BOOT) 로복사 디렉토리를생성하고, 마운트 Mkdir boot Sudo mount /dev/sdb1./boot/ zimage 복사 Cp./zImage./boot/
동작체크 41
42 Platform Image Flash
Tizen Platform Image 43 일반적으로 3 개의파일로구성 Tizen download 사이트에서 releases 버전 download 가능 http://download.tizen.org/releases/ App 데이터저장 3 번째파티션 rootfs 2 번째파티션 User 영역 4 번째파티션
이미지플래시 44 SD 카드리더기를 vmware 와연결 dd 명령어를이용 Sdb2 가없는경우 ls /dev/sd* 명령어로확인가능 sudo dd if=./platform.img of=/dev/sdb2 bs=512k sudo dd if=./data.img of=/dev/sdb3 bs=512k sudo dd if=./ums.img of=/dev/sdb4 bs=512k
파티션리사이즈 45 Gparted 를이용한파티션복구 파티션전체이미지를플래시하였기때문에파티션크기가정상적으로나타나지않음 sudo gparted 파티션여유공간이제대로나타나지않음 해당파티션에서우측클릭후 check 항목선택후상단의 v 표클릭하여 check 실시
파티션리사이즈 46 2,3,4 번째파티션에대한 check 작업수행 파티션크기가정상적으로복구됨
동작체크 47
48 Platform 수정
Platform Mount 옵션변경 49 Tizen 의기본파티션구성과다르게 4 개의파티션만생성하였으므로, 수정필요 플랫폼파티션내부의데이터수정을위한마운트 원하는경로에 platform 디렉토리생성 mkdir platform 플랫폼파티션마운트 sudo mount /dev/sdb2./platform
Platform 작업경로 50 현재위치 향후작업위치
마운트옵션 51 Systemd 마운트파티션변경 경로 : <platform mount path>/usr/lib/systemd/system/localfs.target.wants Special 파일시스템이나일반저장장치를마운트 Edit Edit Edit 마운트서비스삭제 csa 파티션은사용하지않으므로마운트서비스삭제 Csa.mount boot 파티션은마운트할필요가없으므로서비스삭제 Boot.mount
마운트옵션 52 Systemd 마운트장치변경 마운트장치변경 Root 파티션변경 -.mount : /dev/mmcblk0p5 -> /dev/mmcblk0p2 Data 파티션변경 Opt.mount : /dev/mmcblk0p6 -> /dev/mmcblk0p3 Ums 파티션변경 Opt-usr.mount : /dev/mmcblk0p7 -> /dev/mmcblk0p4
마운트옵션 53 Fstab 수정 해당파일에기록된내용에따라마운트작업수행 경로 : /etc/fstab 마운트옵션을모두주석처리
동작체크